web-dev-qa-db-fra.com

jemalloc et autres erreurs faisant redis sur centos 6.4

Je mets en place un nouveau système centos 6.4 dédié avec redis. J'ai installé redis plusieurs fois, mais je n'ai jamais rencontré ce problème (et je n'ai jamais été sur centos 6.4 auparavant).

cd redis-2.6.16
Sudo make install

erreur:

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"

Lorsque j'essaie de construire jemalloc directement (à partir de la zone/src de l'archive tar redis), d'autres erreurs incluent:

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

J'ai également essayé redis 2.6.7 et j'ai le même problème.

J'ai creusé partout et je ne trouve aucune voie à suivre.

45

Sur ce système /tmp a été monté noexec.

Redis exécute un certain nombre de scripts Shell à partir de /tmp lors de son installation, la solution est donc de remonter /tmp sans l'indicateur noexec. Cela le fait temporairement:

mount -o remount,exec /tmp

Je dois ajouter que cette solution s'applique à toutes les versions redis 2.x et 3.x (4.x m'est inconnu)

J'ai rencontré le même problème sur centos 6.4 et j'ai dû exécuter les commandes suivantes:

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

Je ne sais pas pourquoi les dépôts n'étaient pas construits, je pensais qu'ils l'étaient dans le passé. Cependant, cela m'a permis de démarrer avec la version de redis dont j'avais besoin.

105
Ray Hunter

J'ai eu les mêmes erreurs après un premier échec causé par un paquet manquant (gcc).
Donc, après l'installation de gcc, une autre tentative de make a donné ces erreurs:

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

Ces erreurs ont été causées par certains fichiers laissés ici après l'échec de la première commande make. Apparemment, j'ai dû nettoyer ces fichiers, avec la commande:

make distclean  

Et puis make à nouveau, et cela a fonctionné.

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

81
Clemorphy

Avez-vous essayé d'installer le package demandé?

yum install jemalloc-devel

Cela peut être trouvé dans le référentiel EPEL, que vous devriez déjà avoir ajouté à votre système CentOS.

À bien y penser, redis est aussi dans EPEL ...

1
Michael Hampton

Cela se produit en raison d'un fichier de création sale avant l'exécution

$ Sudo make  

lance ça:

$ make distclean

bien sûr, cela résoudra toutes les dépendances.

1
manendra

Résolution de ce problème pour Redis 3.0.2 sur RHEL-6.6 comme suit:

Depuis le répertoire d'installation de Redis,

  1. Courir ./deps/update-jemalloc.sh 3.6.0 (où 3.6.0 est la dernière version de jemalloc qui fonctionne avec Redis 3.0.2 à ce jour)

  2. Courir make distclean && make

1
KAGasser

J'ai eu ce problème après avoir tué le build à mi-chemin et essayé de le refaire. make clean n'a pas aidé alors j'ai supprimé le répertoire et recommencé, et il s'est bien compilé.

0
nullability

même problème que j'ai rencontré lors de la création de redis-3.0.0 sur CentOS-6.6x86, essayez ceci pour le faire.

make MALLOC=libc
0
gokaka

Au début, après avoir extrait des fichiers de redis.<version>.tar.gz make a échoué car aucun gcc n'était installé:

gcc: Command not found

J'ai donc installé gcc:

Sudo yum install gcc-c++

Puis j'ai relancé la marque, j'ai reçu:

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

J'ai supprimé le dossier redis extrait et l'ai ré-extrait de redis.<version>.tar.gz .Comme gcc est installé cette fois, tout s'est bien passé lorsque j'ai exécuté make. J'ai couru depuis le répertoire extrait de redis:

Sudo make install
0
App Work