jemalloc e outros erros cometendo redis no centos 6.4


41

Estou configurando um novo sistema dedicado, centos 6.4 com redis. Instalei o redis várias vezes, mas nunca encontrei esse problema (e nunca havia estado no centos 6.4 antes).

cd redis-2.6.16
sudo make install

erro:

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"

Quando tento criar jemalloc diretamente (da área / src do redis tarball), outros erros incluem:

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

Eu também tentei o redis 2.6.7 e tenho o mesmo problema.

Eu cavei por toda parte e não consigo encontrar nenhum caminho a seguir.


Respostas:


100

Corri para o mesmo problema no centos 6.4 e tive que executar os seguintes comandos:

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

Não sei por que os deps não foram construídos, pensei que estavam no passado. No entanto, isso me colocou em funcionamento com a versão do redis que eu precisava.


11
Obrigado, isso funcionou para mim em uma instância do centos 6.4 no EC2.
theTuxRacer

2
Update: isso funcionou: unset ARCH; make hiredis. De github.com/redis/hiredis-rb/issues/2
Daniel

11
Trabalhou para mim no centos 7.
idea

11
Trabalhou como um encanto no Ubuntu 16.04 EC2 instância bem
Karthikeyan

11
Mesmo problema no Ubuntu 18.04 e essa correção trabalhou para mim também
Kevin Hooke

78

Eu tive os mesmos erros após uma primeira falha causada por um pacote ausente (gcc).
Então, depois de instalar o gcc, outra maketentativa deu os seguintes erros:

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

Esses erros foram causados ​​por alguns arquivos deixados aqui após a falha do primeiro makecomando. Aparentemente, eu tive que limpar esses arquivos, com o comando:

make distclean  

E então makenovamente, e funcionou.

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


Isso funcionou para mim no Ubuntu 14.04.2 LTS. Eu tive o mesmo cenário: corri makeantes da instalação build-essentiale tcl8.5.
precisa saber é o seguinte

não funcionou para mim #
217 Daniel Daniel

4

Neste sistema /tmpfoi montado noexec.

O Redis executa vários scripts de shell /tmpdurante a instalação, portanto a solução é remontar /tmpsem o noexecsinalizador. Isso faz isso temporariamente:

mount -o remount,exec /tmp

Devo acrescentar que esta solução se aplica a todas as versões redis 2.xe 3.x (4.x é muito desconhecido para mim)


11
Como diabos isso resolve o erro que você postou na pergunta ?!
Michael Hampton

Ei, eu não sei. Mas sei que uma tecnologia com a qual estou trabalhando sugeriu e resolveu. Instalei / construí o redis várias vezes e nunca encontrei esse problema antes.

@MichaelHampton alguns dos erros são "Acesso negado" durante o make. O erro postado é o primeiro erro (acredito, a saída make é muito longa).

4
Você deveria ter postado a saída completa. Esta pergunta e resposta não fazem absolutamente nenhum sentido juntos.
Michael Hampton

Será que o sistema em questão tem 32 bits? @ MichaelHampton Nesse caso, tente fazer 32 bits.
Roman M

1

Você tentou instalar o pacote solicitado?

yum install jemalloc-devel

Isso pode ser encontrado no repositório EPEL, que você já deve ter adicionado ao seu sistema CentOS.

Venha para pensar, redistambém está no EPEL ...


Sim, eu tentei isso .... não ajudou .... a solução está acima.

1

Resolvido isso para o Redis 3.0.2 no RHEL-6.6, da seguinte maneira:

No diretório de instalação do Redis,

  1. Executar ./deps/update-jemalloc.sh 3.6.0(em que 3.6.0 é a versão mais recente do jemalloc que funciona com o Redis 3.0.2 até o momento da redação deste documento)

  2. Corre make distclean && make


1

Isso acontece devido ao arquivo make sujo, antes de executar

$ sudo make  

Rode isto:

$ make distclean

Certifique-se de que resolverá todas as dependências.


0

mesmo problema que encontrei ao fazer o redis-3.0.0 no CentOS-6.6x86, tente fazer isso.

make MALLOC=libc

0

Eu tive esse problema depois que matei o build no meio do caminho e tentei fazê-lo novamente. make cleannão ajudou, então eu coloquei o diretório e reiniciei o diretório, e ele compilou bem.


0

Inicialmente, após a extração dos arquivos do redis.<version>.tar.gzmake falhou porque não havia o gcc instalado:

gcc: Command not found

Então eu instalei o gcc:

sudo yum install gcc-c++

Então eu corri o make novamente, recebi:

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

Eu removi a pasta redis extraída e a extraí novamente do redis.<version>.tar.gzarquivo .Desde que o gcc esteja instalado desta vez, tudo correu com êxito ao executar make. Corri de dentro do diretório extraído do redis:

sudo make install
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.