jemalloc ve centos'ta redis yapan diğer hatalar 6.4


41

Redis ile yeni, özel, centos 6.4 sistemi kuruyorum. Redis'i birçok kez kurdum, ancak bu konuya hiç değildim (ve daha önce hiç 6.en centosunda bulunmadım).

cd redis-2.6.16
sudo make install

hata:

MAKE jemalloc
cd jemalloc && ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS=""
/bin/sh: ./configure: Permission denied
make[2]: *** [jemalloc] Error 126
make[2]: Leaving directory `/tmp/redis32/redis-3.2.6/deps'
make[1]: [persist-settings] Error 2 (ignored)


    sh: ./mkreleasehdr.sh: Permission denied
and later:
    zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
    zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

Doğrudan jemalloc oluşturmaya çalıştığımda (redis tarball'ın / src alanından), diğer hatalar:

cd src && make jemalloc
sh: ./mkreleasehdr.sh: Permission denied
make[1]: Entering directory `/tmp/rediswork/redis-2.6.16/src'
make[1]: *** No rule to make target `jemalloc'.  Stop.
make[1]: Leaving directory `/tmp/rediswork/redis-2.6.16/src'
make: *** [jemalloc] Error 2

Ben de redis 2.6.7 denedim ve aynı sorunu var.

Her yeri kazdım ve ileriye doğru hiçbir yol bulamadım.


Yanıtlar:


100

Aynı sayı 6.entos 6.4'te de bulundu ve aşağıdaki komutları çalıştırmak zorunda kaldım:

cd deps
make hiredis jemalloc linenoise lua geohash-int
cd ..
make install

Deplerin neden inşa edilmediğini bilmiyorum, geçmişte olduklarını sanıyordum. Ancak, bu beni gerekli ve gerekli redis sürümü ile çalışan.


1
Teşekkürler, bu benim için EC2'deki 6.4 centos centosunda çalıştı.
--TuxRacer

2
Güncelleme: Bu çalıştı: unset ARCH; make hiredis. Gönderen github.com/redis/hiredis-rb/issues/2
Daniel

1
Benim için 7'de çalıştı. 7.
fikir,

1
Ubuntu 16.04 EC2 örneğindeki bir cazibe gibi çalıştı
Karthikeyan

1
Ubuntu 18.04'te de aynı konu ve bu düzeltme benim için de işe yaradı
Kevin Hooke

78

Eksik bir paketin (gcc) neden olduğu ilk hatadan sonra da aynı hataları yaşadım.
Böylece, gcc yüklendikten sonra başka bir makegirişimde bu hatalar oldu:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

Bu hatalara, ilk makekomutun başarısız olmasından sonra burada bırakılan bazı dosyalar neden oldu . Görünüşe göre bu dosyaları komutla temizlemek zorunda kaldım:

make distclean  

Ve sonra maketekrar ve işe yaradı.

Kaynak: https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk


Bu benim için Ubuntu 14.04.2 LTS'de çalıştı. Aynı senaryo vardı: ve makeyüklemeden önce koştu . build-essentialtcl8.5
NathanAldenSr,

benim için işe yaramadı
Daniel

4

Bu sistem /tmpüzerine monte edildi noexec.

Redis /tmp, kurulum sırasında bir dizi kabuk komut dosyası çalıştırır , bu nedenle çözüm bayraksız yeniden /tmpyerleştirilir noexec. Bu geçici olarak yapar:

mount -o remount,exec /tmp

Bu çözümün tüm redis 2.x ve 3.x sürümleri için geçerli olduğunu eklemeliyim (4.x bana çok fazla bilinmiyor)


1
Bu nasıl cehennemde soruyu gönderdiğiniz hatayı çözer ?!
Michael Hampton,

Hey, bilmiyorum. Ama birlikte çalıştığım bir teknolojinin bunu önerdiğini ve çözdüğünü biliyorum. Redis'i birkaç kez kurdum / inşa ettim ve bu konuyu daha önce hiç bulamadım.

@MichaelHampton bazı hatalar "Erişim engellendi" hataları sırasında yapılır. Gönderilen hata ilk hatadır (inanıyorum ki çıkış çıktısı loooong).

4
Çıktının tamamını göndermeliydin. Bu soru ve cevap, birlikte kesinlikle bir anlam ifade etmiyor.
Michael Hampton,

Söz konusu sistem 32bit olabilir mi? @ MichaelHampton Bu durumda, 32 bit yapmayı deneyin.
Roman M,

1

İstediği paketi kurmayı denedin mi?

yum install jemalloc-devel

Bu, CentOS sisteminize daha önce eklemiş olmanız gereken EPEL deposunda bulunabilir.

Bir düşünün, redisEPEL'de de var ...


Evet, denedim ... yardım etmedi .... çözüm yukarıda.

1

Bunu RHEL-6.6'daki Redis 3.0.2 için şu şekilde çözüldü:

Redis kurulum dizininden

  1. Run ./deps/update-jemalloc.sh 3.6.0(3.6.0, bu yazımdan itibaren Redis 3.0.2 ile çalışan jemalloc'un en son versiyonudur).

  2. Çalıştırmak make distclean && make


1

Kirli dosya yapmasından dolayı bu yüzden çalıştırmadan önce

$ sudo make  

Bunu çalıştır:

$ make distclean

tüm bağımlılıkları çözeceğinden eminim.


0

CentOS-6.6x86'da redis-3.0.0 yaparken karşılaştığım aynı sorunu bunu yapmak için deneyin.

make MALLOC=libc

0

Yapıyı yarı yolda öldürüp tekrar yapmaya çalıştıktan sonra bu sorunu yaşadım. make cleanyardım etmedi bu yüzden dizini kopyaladım ve yeniden başladım ve para cezası derlendi.


0

Başlangıçta, dosyaları redis.<version>.tar.gzhiçbir dosyadan çıkarttıktan sonra başarısız oldu çünkü gcc kurulu değil:

gcc: Command not found

Bu yüzden gcc'yi kurdum:

sudo yum install gcc-c++

Sonra yine markayı koştum, aldım:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

Redis çıkarılan klasörü çıkardım ve yeniden çıkarttım .Since redis.<version>.tar.gzgcc bu sefer yüklü, çalıştırdığımda her şey başarılı oldu make. Redis içinden çıkarılan dizinin içinden koştum:

sudo make install
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.