jemalloc và các lỗi khác làm redis trên centos 6.4


41

Tôi đang thiết lập một hệ thống 6.4 centos mới, chuyên dụng với redis. Tôi đã cài đặt redis nhiều lần, nhưng chưa bao giờ gặp phải vấn đề này (và chưa bao giờ có trên centos 6.4 trước đây).

cd redis-2.6.16
sudo make install

lỗi:

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"

Khi tôi cố gắng xây dựng jemalloc trực tiếp (từ khu vực / src của tarball redis), các lỗi khác bao gồm:

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

Tôi cũng đã thử redis 2.6.7 và có cùng một vấn đề.

Tôi đã đào tất cả và không thể tìm thấy con đường phía trước.


Câu trả lời:


100

Tôi gặp vấn đề tương tự trên centos 6.4 và phải chạy các lệnh sau:

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

Tôi không chắc tại sao các deps không được xây dựng, tôi nghĩ rằng chúng là trong quá khứ. Tuy nhiên, điều này đã giúp tôi đứng dậy và chạy với phiên bản redis mà tôi cần.


1
Cảm ơn, điều này đã làm việc cho tôi trên một ví dụ 6.4 trên EC2.
theTuxRacer

2
Cập nhật: điều này đã làm việc : unset ARCH; make hiredis. Từ github.com/redis/hiredis-rb/issues/2
Daniel

1
Làm việc cho tôi trên centos 7.
ý tưởng

1
Cũng hoạt động như một cơ duyên trong phiên bản Ubuntu 16.04 EC2
Karthikeyan

1
Vấn đề tương tự trên Ubuntu 18.04 và cách khắc phục này cũng có hiệu quả với tôi
Kevin Hooke

78

Tôi đã có lỗi tương tự sau một lỗi đầu tiên gây ra bởi một gói bị thiếu (gcc).
Vì vậy, sau khi cài đặt gcc, một makenỗ lực khác đã đưa ra các lỗi sau:

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

Những lỗi này được gây ra bởi một số tệp còn lại ở đây sau khi thất bại của makelệnh đầu tiên . Rõ ràng tôi đã phải xóa các tập tin này, bằng lệnh:

make distclean  

Và sau đó makemột lần nữa, và nó đã làm việc.

Nguồn: https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk


Điều này làm việc cho tôi trên Ubuntu 14.04.2 LTS. Tôi đã có cùng một kịch bản: chạy maketrước khi cài đặt build-essentialtcl8.5.
NathanAldenSr

không làm việc cho tôi
Daniel

4

Trên hệ thống này /tmpđã được gắn kết noexec.

Redis chạy một số tập lệnh shell từ /tmptrong quá trình cài đặt, vì vậy giải pháp là kết nối lại /tmpmà không có noexeccờ. Điều này tạm thời làm điều này:

mount -o remount,exec /tmp

Tôi nên thêm rằng giải pháp này áp dụng cho tất cả các phiên bản redis 2.x và 3.x (4.x là một ẩn số đối với tôi)


1
Làm thế nào trong địa ngục này giải quyết lỗi bạn đăng trong câu hỏi?!
Michael Hampton

Này, tôi không biết. Nhưng tôi biết rằng một công nghệ mà tôi đang làm việc đã đề xuất nó và nó đã giải quyết được. Tôi đã cài đặt / xây dựng redis nhiều lần và chưa bao giờ gặp phải vấn đề này trước đây.

@MichaelHampton một số lỗi là lỗi "Truy cập bị từ chối" trong quá trình thực hiện. Lỗi được đăng là lỗi đầu tiên (tôi tin rằng, đầu ra tạo ra là loooong).

4
Bạn nên đăng đầu ra hoàn chỉnh. Câu hỏi và câu trả lời này hoàn toàn không có ý nghĩa với nhau.
Michael Hampton

Có thể đó là hệ thống trong câu hỏi 32 bit? @MichaelHampton Trong trường hợp đó, hãy thử kiếm 32 bit.
La Mã M

1

Bạn đã thử cài đặt gói nó yêu cầu?

yum install jemalloc-devel

Điều này có thể được tìm thấy trong kho EPEL mà bạn đã thêm vào hệ thống CentOS của mình.

Hãy nghĩ về nó, rediscũng là trong EPEL ...


Vâng, tôi đã thử điều đó .... không giúp được .... giải pháp là ở trên.

1

Đã giải quyết vấn đề này cho Redis 3.0.2 trên RHEL-6.6 như sau:

Từ thư mục cài đặt Redis,

  1. Chạy ./deps/update-jemalloc.sh 3.6.0(trong đó 3.6.0 là phiên bản mới nhất của jemalloc hoạt động với Redis 3.0.2 khi viết bài này)

  2. Chạy make distclean && make


1

Nó xảy ra do tập tin bẩn nên trước khi chạy

$ sudo make  

chạy cái này:

$ make distclean

chắc chắn nó sẽ giải quyết tất cả các phụ thuộc.


0

vấn đề tương tự mà tôi đã gặp khi thực hiện redis-3.0.0 trên CentOS-6.6x86, hãy thử điều này để thực hiện.

make MALLOC=libc

0

Tôi đã gặp vấn đề này sau khi tôi giết bản dựng một phần và cố gắng làm lại. make cleankhông giúp được nên tôi đã thu gọn thư mục và bắt đầu lại, và nó được biên dịch tốt.


0

Lúc đầu, sau khi giải nén các tệp từ redis.<version>.tar.gzthất bại vì không cài đặt gcc:

gcc: Command not found

Vì vậy, tôi đã cài đặt gcc:

sudo yum install gcc-c++

Sau đó, tôi chạy lại, tôi nhận được:

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

Tôi đã xóa thư mục redised và trích xuất lại từ redis.<version>.tar.gz.Since gcc được cài đặt lần này, mọi thứ đã thành công khi tôi chạy make. Tôi chạy từ bên trong redis trích xuất thư mục:

sudo make install
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.