Redis를 사용하여 새로운 전용 Centos 6.4 시스템을 설정하고 있습니다. 나는 Redis를 여러 번 설치했지만 이 문제가 발생하지 않았습니다(그리고 이전에 Centos 6.4에는 설치한 적이 없습니다).
cd redis-2.6.16
sudo make install
실수:
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"
(redis tarball의 /src 영역에서) jemalloc을 직접 빌드하려고 하면 다음과 같은 다른 오류가 발생합니다.
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
나는 또한 redis 2.6.7을 시험해 보았고 같은 문제를 겪었습니다.
모든 것을 살펴봤지만 앞으로 나아갈 길을 찾을 수 없습니다.
답변1
Centos 6.4에서도 동일한 문제가 발생하여 다음 명령을 실행해야 했습니다.
cd deps
make hiredis jemalloc linenoise lua geohash-int
cd ..
make install
왜 이런 부서들이 생기지 않았는지 모르겠고, 옛말인 줄 알았습니다. 그러나 이로 인해 필요한 Redis 버전을 사용할 수 있게 되었습니다.
답변2
누락된 패키지(gcc)로 인해 첫 번째 실패 후에 동일한 오류가 발생했습니다.
따라서 gcc를 설치한 후 또 다른 make
시도에서 다음 오류가 발생했습니다.
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
이러한 오류는 첫 번째 명령이 실패한 후 남겨진 일부 파일로 인해 발생합니다 make
. 분명히 다음을 사용하여 이러한 파일을 정리해야 합니다.
make distclean
그런 다음 make
다시 작동했습니다.
원천:https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk
답변3
이 시스템에 /tmp
설치되었습니다 noexec
.
/tmp
Redis는 설치 중에 많은 셸 스크립트를 실행하므로 해결 방법은 /tmp
이 플래그를 사용 noexec
하지 않고 다시 마운트 하는 것입니다. 지금은 다음을 수행하십시오.
mount -o remount,exec /tmp
이 솔루션은 모든 redis 2.x 및 3.x 버전에서 작동한다는 점을 덧붙여야 합니다(4.x는 제가 알지 못합니다).
답변4
이 문제는 RHEL-6.6의 Redis 3.0.2에서 다음과 같이 해결되었습니다.
Redis 설치 디렉터리에서
실행
./deps/update-jemalloc.sh 3.6.0
(여기서 3.6.0은 이 글을 쓰는 시점에서 Redis 3.0.2에서 작동하는 jemalloc의 최신 버전입니다)달리기
make distclean && make