jemalloc y otros errores que hacen redis en centos 6.4

42

Estoy configurando un nuevo sistema dedicado centos 6.4 con redis. He instalado redis muchas veces, pero nunca he tenido este problema (y nunca he estado en centos 6.4 antes).

cd redis-2.6.16
sudo make install

error:

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"

Cuando intento construir jemalloc directamente (desde el área / src del redis tarball), otros errores incluyen:

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

También probé redis 2.6.7 y tengo el mismo problema.

He cavado por todas partes y no puedo encontrar el camino a seguir.

Sam Smith
fuente

Respuestas:

101

Me encontré con el mismo problema en centos 6.4 y tuve que ejecutar los siguientes comandos:

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

No estoy seguro de por qué los departamentos no se construyeron, pensé que estaban en el pasado. Sin embargo, esto me puso en funcionamiento con la versión de redis que necesitaba.

Ray Hunter
fuente
1
Gracias, esto funcionó para mí en una instancia de centos 6.4 en EC2.
theTuxRacer
2
Actualización: esto funcionó: unset ARCH; make hiredis. De github.com/redis/hiredis-rb/issues/2
Daniel
1
Trabajó para mí en centos 7.
idea
1
También funcionó de maravilla en la instancia de ubuntu 16.04 EC2
Karthikeyan
1
Mismo problema en Ubuntu 18.04 y esta solución también funcionó para mí
Kevin Hooke,
78

Tuve los mismos errores después de una primera falla causada por un paquete faltante (gcc).
Entonces, después de instalar gcc, otro makeintento dio estos errores:

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

Estos errores fueron causados ​​por algunos archivos que quedan aquí después de la falla del primer makecomando. Aparentemente tuve que limpiar estos archivos, con el comando:

make distclean  

Y luego makeotra vez, y funcionó.

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

Clemorphy
fuente
Esto funcionó para mí en Ubuntu 14.04.2 LTS. Tuve el mismo escenario: corrí makeantes de instalar build-essentialy tcl8.5.
NathanAldenSr
no funcionó para mí
Daniel
4

En este sistema /tmpfue montado noexec.

Redis ejecuta una serie de scripts de shell /tmpdurante su instalación, por lo que la solución es volver a montar /tmpsin la noexecbandera. Esto hace esto temporalmente:

mount -o remount,exec /tmp

Debo agregar que esta solución se aplica a todas las versiones de redis 2.xy 3.x (4.x es muy desconocido para mí)

Sam Smith
fuente
1
¿Cómo diablos resuelve esto el error que publicaste en la pregunta?
Michael Hampton
Oye, no lo se. Pero sé que una tecnología con la que estoy trabajando lo sugirió, y lo resolvió. He instalado / construido redis varias veces, y nunca he tenido este problema antes.
@MichaelHampton algunos de los errores son errores de "Acceso denegado" durante la creación. El error publicado es el primer error (creo que la salida de make es muy larga).
44
Deberías haber publicado el resultado completo. Esta pregunta y respuesta no tienen absolutamente ningún sentido juntas.
Michael Hampton
¿Podría ser que el sistema en cuestión sea de 32 bits? @MichaelHampton En ese caso, intente hacer 32 bits.
Roman M
1

¿Intentó instalar el paquete que solicitó?

yum install jemalloc-devel

Esto se puede encontrar en el repositorio EPEL, que ya debería haber agregado a su sistema CentOS.

Ahora que lo pienso, redistambién está en EPEL ...

Michael Hampton
fuente
Sí, lo intenté ... no ayudó ... la solución está arriba.
1

Resolvió esto para Redis 3.0.2 en RHEL-6.6 de la siguiente manera:

Desde el directorio de instalación de Redis,

  1. Ejecutar ./deps/update-jemalloc.sh 3.6.0(donde 3.6.0 es la última versión de jemalloc que funciona con Redis 3.0.2 a partir de este escrito)

  2. correr make distclean && make

KAGasser
fuente
1

Sucede debido a un archivo de creación sucio, así que antes de ejecutar

$ sudo make  

ejecuta esto:

$ make distclean

Seguro que resolverá todas las dependencias.

manendra
fuente
0

mismo problema que encontré cuando hice redis-3.0.0 en CentOS-6.6x86, intente esto para hacerlo.

make MALLOC=libc
gokaka
fuente
0

Tuve este problema después de que eliminé la compilación a mitad de camino e intenté hacerlo nuevamente. make cleanno ayudó, así que destruí el directorio y comencé de nuevo, y se compiló bien.

nulabilidad
fuente
0

Al principio, después de extraer archivos de redis.<version>.tar.gzmake falló porque no había instalado gcc:

gcc: Command not found

Entonces instalé gcc:

sudo yum install gcc-c++

Luego corrí el make nuevamente, recibí:

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

Eliminé la carpeta extraída de redis y la volví a extraer de. redis.<version>.tar.gzDado que gcc está instalado esta vez, todo salió con éxito cuando ejecuté make. Corrí desde dentro del directorio extraído de redis:

sudo make install
App Work
fuente