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.


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.


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


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í)


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 ...


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


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.


0

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

make MALLOC=libc

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.