centos 6.4에서 redis를 만드는 jemalloc 및 기타 오류


41

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을 시도했지만 같은 문제가 있습니다.

나는 온통 파고 앞으로 경로를 찾을 수 없습니다.


답변:


100

centos 6.4에서 동일한 문제가 발생하여 다음 명령을 실행해야했습니다.

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

나는 왜 뎁이 건설되지 않은지, 확실하지 않다고 생각했습니다. 그러나 이것은 내가 필요한 redis 버전으로 시작되었습니다.


1
고마워, 이것은 EC2의 centos 6.4 인스턴스에서 나를 위해 일했습니다.
theTuxRacer

2
업데이트 : 이것은 효과가 있습니다 : unset ARCH; make hiredis. 에서 github.com/redis/hiredis-rb/issues/2
다니엘

1
centos 7에서 나를 위해 일했습니다.
idea

1
우분투 16.04 EC2 인스턴스에서도 매력처럼 작동
Karthikeyan

1
같은 우분투 18.04에 문제와이 수정도 나를 위해 일한
케빈 후크

78

누락 된 패키지 (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


이것은 Ubuntu 14.04.2 LTS에서 나를 위해 일했습니다. 나는 같은 시나리오를 가지고 : RAN을 make설치하기 전에 build-essential하고 tcl8.5.
NathanAldenSr

나를 위해 작동하지 않았다
Daniel

4

이 시스템 /tmp에는 탑재되었습니다 noexec.

Redis는 /tmp설치하는 동안 여러 셸 스크립트를 실행 하므로 플래그 /tmp없이 솔루션을 다시 마운트해야 합니다 noexec. 이것은 이것을 일시적으로 수행합니다.

mount -o remount,exec /tmp

이 솔루션은 모든 redis 2.x 및 3.x 버전에 적용됩니다 (4.x는 나에게 알려지지 않았습니다).


1
질문에 게시 한 오류를 어떻게 해결합니까?!
Michael Hampton

나도 몰라 그러나 나는 함께 일하는 기술이 그것을 제안하고 해결했다고 알고 있습니다. Redis를 여러 번 설치 / 빌드했으며 이전에는이 ​​문제를 겪지 않았습니다.

@MichaelHampton 일부 오류는 확인하는 동안 "액세스 거부"오류입니다. 게시 된 오류는 첫 번째 오류입니다 (제조 결과는 loooong입니다).

4
전체 출력을 게시해야합니다. 이 질문과 답변은 전혀 이해가되지 않습니다.
Michael Hampton

문제의 시스템이 32 비트 일 수 있습니까? @MichaelHampton이 경우 32 비트를 만들어보십시오.
로마 M

1

요청한 패키지를 설치하려고 했습니까?

yum install jemalloc-devel

이것은 EPEL 리포지토리에서 찾을 수 있으며 CentOS 시스템에 이미 추가되어 있어야합니다.

그것을 생각 redis하러 와서 EPEL에도 있습니다 ...


그렇습니다, 나는 그것을 시도했다. .. 도움이되지 않았다.…

1

RHEL-6.6의 Redis 3.0.2에서 다음과 같이 해결되었습니다.

Redis 설치 디렉토리에서

  1. Run ./deps/update-jemalloc.sh 3.6.0(여기서 3.6.0은이 글을 쓰는 시점에서 Redis 3.0.2에서 작동하는 최신 버전의 jemalloc입니다)

  2. 운영 make distclean && make


1

실행하기 전에 더러운 make 파일로 인해 발생합니다.

$ sudo make  

이것을 실행하십시오 :

$ make distclean

모든 의존성을 해결할 것입니다.


0

CentOS-6.6x86에서 redis-3.0.0을 만들 때 만났던 것과 같은 문제가 발생했습니다.

make MALLOC=libc

0

빌드를 도중에 종료하고 다시 만들려고 시도한 후에이 문제가 발생했습니다. make clean도움이되지 않아서 디렉토리를 nuk하고 다시 시작하여 정상적으로 컴파일되었습니다.


0

처음 redis.<version>.tar.gz에는 gcc가 설치되어 있지 않기 때문에 make 에서 파일을 추출 하지 못한 후 :

gcc: Command not found

그래서 gcc를 설치했습니다 :

sudo yum install gcc-c++

그런 다음 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"

redis extraced 폴더를 제거하고 폴더에서 다시 추출했습니다 redis.<version>.tar.gz. 이번에는 gcc가 설치 되었으므로 모든 것이 성공적으로 실행되었습니다 make. redis 추출 디렉토리 내부에서 실행했습니다.

sudo make install
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.