jemalloc dan kesalahan lainnya membuat redis pada centos 6.4

41

Saya sedang menyiapkan sistem 6.4 centos berdedikasi baru dengan redis. Saya telah menginstal redis berkali-kali, tetapi belum pernah mencapai masalah ini (dan belum pernah pada centos 6.4 sebelumnya).

cd redis-2.6.16
sudo make install

kesalahan:

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"

Ketika saya mencoba membangun jemalloc secara langsung (dari / src dari redis tarball), kesalahan lain termasuk:

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

Saya juga mencoba redis 2.6.7 dan memiliki masalah yang sama.

Saya telah menggali seluruh dan tidak dapat menemukan jalan ke depan.

samsmith
sumber

Jawaban:

100

Saya mengalami masalah yang sama pada centos 6.4 dan harus menjalankan perintah berikut:

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

Saya tidak yakin mengapa deps di mana tidak dibangun, saya pikir mereka di masa lalu. Namun, ini membuat saya berdiri dan berjalan dengan versi redis yang saya butuhkan.

Ray Hunter
sumber
1
Terima kasih, ini bekerja untuk saya pada contoh 6.4 centos pada EC2.
theTuxRacer
2
Update: ini bekerja: unset ARCH; make hiredis. Dari github.com/redis/hiredis-rb/issues/2
Daniel
1
Bekerja untuk saya di centos 7.
ide
1
Bekerja seperti jimat di ubuntu 16.04 EC2 misalnya
Karthikeyan
1
Masalah yang sama pada Ubuntu 18.04 dan perbaikan ini juga berhasil untuk saya
Kevin Hooke
78

Saya memiliki kesalahan yang sama setelah kegagalan pertama yang disebabkan oleh paket yang hilang (gcc).
Jadi setelah menginstal gcc, makeupaya lain memberikan kesalahan ini:

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

Kesalahan ini disebabkan oleh beberapa file yang tersisa di sini setelah kegagalan makeperintah pertama . Rupanya saya harus membersihkan file-file ini, dengan perintah:

make distclean  

Dan makelagi, dan itu berhasil.

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

Clemorphy
sumber
Ini bekerja untuk saya di Ubuntu 14.04.2 LTS. Saya memiliki skenario yang sama: berlari makesebelum menginstal build-essentialdan tcl8.5.
NathanAldenSr
tidak bekerja untuk saya
Daniel
4

Pada sistem /tmpini dipasang noexec.

Redis menjalankan sejumlah skrip shell dari /tmpsaat instalasi, jadi solusinya adalah untuk melakukan remount /tmptanpa noexecflag. Ini melakukan ini untuk sementara:

mount -o remount,exec /tmp

Saya harus menambahkan bahwa solusi ini berlaku untuk semua versi redis 2.x dan 3.x (4.x sejauh ini tidak diketahui oleh saya)

samsmith
sumber
1
Bagaimana sih ini menyelesaikan kesalahan yang Anda posting dalam pertanyaan ?!
Michael Hampton
Hei, saya tidak tahu. Tapi saya tahu bahwa teknologi yang saya kerjakan menyarankannya, dan itu berhasil menyelesaikannya. Saya telah menginstal / membangun redis beberapa kali, dan belum pernah mengenai masalah ini sebelumnya.
@MichaelHampton beberapa kesalahan adalah kesalahan "Akses ditolak" saat melakukan. Kesalahan yang diposkan adalah kesalahan pertama (saya percaya, keluaran make adalah loooong).
4
Anda harus memposting output lengkap. Pertanyaan dan jawaban ini sama sekali tidak masuk akal.
Michael Hampton
Mungkinkah sistem yang dipermasalahkan 32bit? @MichaelHampton Dalam hal ini, coba buat 32bit.
Roman M
1

Apakah Anda mencoba menginstal paket yang diminta?

yum install jemalloc-devel

Ini dapat ditemukan di repositori EPEL, yang seharusnya sudah Anda tambahkan ke sistem CentOS Anda.

Kalau dipikir-pikir itu, redisjuga dalam EPEL ...

Michael Hampton
sumber
Ya, saya sudah mencobanya .... tidak membantu .... solusi di atas.
1

Diselesaikan ini untuk Redis 3.0.2 pada RHEL-6.6 sebagai berikut:

Dari direktori instalasi Redis,

  1. Jalankan ./deps/update-jemalloc.sh 3.6.0(di mana 3.6.0 adalah versi terbaru jemalloc yang berfungsi dengan Redis 3.0.2 saat tulisan ini dibuat)

  2. Menjalankan make distclean && make

KAGasser
sumber
1

Ini terjadi karena file make kotor jadi sebelum dijalankan

$ sudo make  

jalankan ini:

$ make distclean

yakin itu akan menyelesaikan semua dependensi.

manendra
sumber
0

masalah yang sama yang saya temui ketika membuat redis-3.0.0 pada CentOS-6.6x86, coba ini untuk membuatnya.

make MALLOC=libc
gokaka
sumber
0

Saya memiliki masalah ini setelah saya membunuh bangunan setengah jalan dan mencoba membuatnya lagi. make cleantidak membantu jadi saya nuked direktori dan mulai lagi, dan itu dikompilasi dengan baik.

nullability
sumber
0

Pada awalnya, setelah mengekstraksi file dari redis.<version>.tar.gzmake gagal karena tidak ada gcc yang diinstal:

gcc: Command not found

Jadi saya menginstal gcc:

sudo yum install gcc-c++

Kemudian saya menjalankan make lagi, saya menerima:

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

Saya menghapus folder redis yang diekstraksi dan mengekstraknya kembali. redis.<version>.tar.gzKarena gcc terinstal kali ini, semuanya berjalan dengan sukses ketika saya menjalankan make. Saya berlari dari dalam direktori redis yang diekstraksi:

sudo make install
Aplikasi Kerja
sumber