jemalloc e outros erros fazendo redis no centos 6.4

38

Estou montando um novo e dedicado sistema centos 6.4 com redis. Eu instalei o redis muitas vezes, mas nunca acertei esse problema (e nunca estive 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 eu tento construir o jemalloc diretamente (da área / src do tarball do redis), 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 tudo e não consigo encontrar nenhum caminho adiante.

    
por samsmith 30.09.2013 / 06:25

9 respostas

4

Neste sistema /tmp foi montado noexec .

O Redis executa vários scripts de shell a partir de /tmp durante sua instalação, portanto a solução é remontar /tmp sem o noexec flag. Isso faz isso temporariamente:

mount -o remount,exec /tmp

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

    
por 30.09.2013 / 06:48
91

Eu 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

Eu não tenho certeza porque os deps não foram construídos, eu pensei que eles estavam no passado. No entanto, isso me fez funcionar com a versão de redis que eu precisava.

    
por 08.01.2014 / 03:08
68

Eu tive os mesmos erros após uma primeira falha causada por um pacote ausente (gcc).
Então, depois de instalar o gcc, outra tentativa make deu esses 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 comando make . Aparentemente eu tive que limpar esses arquivos, com o comando:

make distclean  

E, em seguida, make novamente e funcionou.

Fonte: link

    
por 24.01.2015 / 00:53
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 sobre isso, redis também está em EPEL ...

    
por 30.09.2013 / 06:46
1

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

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

  1. Execute ./deps/update-jemalloc.sh 3.6.0 (onde 3.6.0 é a versão mais recente do jemalloc que funciona com o Redis 3.0.2 no momento em que este artigo foi escrito)

  2. Executar make distclean && make

por 18.07.2015 / 06:27
1

Isso acontece devido a um arquivo de make sujo, portanto, antes de executar

$ sudo make  

execute isto:

$ make distclean

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

    
por 09.01.2018 / 10:42
0

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

make MALLOC=libc
    
por 25.04.2015 / 07:44
0

Eu tive esse problema depois que eu matei a build e tentei fazer de novo. make clean não me ajudou, então eu deletei o diretório e comecei de novo, e ele compilou bem.

    
por 08.05.2015 / 17:28
0

Primeiro, depois de extrair os arquivos do redis.<version>.tar.gz , houve falha porque não havia nenhum 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 de extração do redis e extraí-la novamente de redis.<version>.tar.gz .Desde que o gcc é instalado desta vez, tudo ocorreu com sucesso quando eu corri make . Eu corri de dentro do diretório extraído do redis:

sudo make install

Espero que ajude.

    
por 14.09.2015 / 19:32

Tags