jemalloc et autres erreurs faisant redis sur centos 6.4

42

Je suis en train de mettre en place un nouveau système dédié, centos 6.4 avec Redis. J'ai installé redis plusieurs fois, mais je n'ai jamais rencontré ce problème (et je n'avais 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 compiler jemalloc directement (à partir de la zone / src de l'archive redis), les autres erreurs sont les suivantes:

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 aussi essayé Redis 2.6.7 et le même problème.

J'ai creusé partout et je ne peux trouver aucun chemin à suivre.

Sam Smith
la source

Réponses:

101

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 étaient dans le passé. Cependant, cela m'a permis de me familiariser avec la version de Redis dont j'avais besoin.

Ray Hunter
la source
1
Merci, cela a fonctionné pour moi sur une instance de centos 6.4 sur EC2.
theTuxRacer
2
Mise à jour: cela a fonctionné: unset ARCH; make hiredis. De github.com/redis/hiredis-rb/issues/2
Daniel
1
Travaillé pour moi sur centos 7.
idée
1
A fonctionné comme un charme dans ubuntu 16.04 instance EC2 ainsi
Karthikeyan
1
Même problème sur Ubuntu 18.04 et ce correctif a fonctionné pour moi aussi
Kevin Hooke
78

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 maketentative 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 makecommande. Apparemment, j'ai dû nettoyer ces fichiers avec la commande:

make distclean  

Et puis makeencore et ça a fonctionné.

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

Clémorphie
la source
Cela a fonctionné pour moi sur Ubuntu 14.04.2 LTS. J'ai eu le même scénario: couru makeavant d'installer build-essentialet tcl8.5.
NathanAldenSr
n'a pas fonctionné pour moi
Daniel
4

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

Redis exécute un certain nombre de scripts de shell /tmplors de son installation. La solution consiste donc à remonter /tmpsans l' noexecindicateur. Ceci fait ceci temporairement:

mount -o remount,exec /tmp

Je devrais ajouter que cette solution s’applique à toutes les versions 2.x et 3.x de Redis (la version 4.x m'est inconnue)

Sam Smith
la source
1
Comment diable cela résout-il l'erreur que vous avez postée dans la question?!
Michael Hampton
Hey, je ne sais pas. Mais je sais qu'une technologie avec laquelle je travaille l'a suggéré, et cela a résolu. J'ai installé / construit redis plusieurs fois et je n'ai jamais touché ce problème auparavant.
@ MichaelHampton Certaines des erreurs sont des erreurs "Accès refusé" lors de la création. Erreur affichée est la première erreur (je crois, la sortie est loooong).
4
Vous devriez avoir posté la sortie complète. Cette question et cette réponse n'ont absolument aucun sens ensemble.
Michael Hampton
Se pourrait-il que le système en question soit 32 bits? @ MichaelHampton Dans ce cas, essayez de faire 32 bits.
Roman M
1

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

yum install jemalloc-devel

Vous pouvez le trouver dans le référentiel EPEL, que vous devriez déjà avoir ajouté à votre système CentOS.

A bien y penser, redisc'est aussi dans EPEL ...

Michael Hampton
la source
Oui, j'ai essayé cela .... n'a pas aidé ... la solution est ci-dessus.
1

Résolu ceci pour Redis 3.0.2 sur RHEL-6.6 comme suit:

À partir du répertoire d'installation de Redis,

  1. Exécuter ./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

KAGasser
la source
1

C'est arrivé à cause d'un fichier make sale, donc avant l'exécution

$ sudo make  

lance ça:

$ make distclean

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

Manendra
la source
0

Même problème que j'ai rencontré lorsque je fais redis-3.0.0 sur CentOS-6.6x86, essayez ceci pour le résoudre.

make MALLOC=libc
gokaka
la source
0

J'ai eu ce problème après avoir tué la construction en cours de route et essayé de la réparer à nouveau. make cleann'a pas aidé alors j'ai nuancé le répertoire et recommencé, et il compilé bien.

nullabilité
la source
0

Au début, après avoir extrait les fichiers de redis.<version>.tar.gzmake, échouait 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 extraced et l'ai extrait de nouveau redis.<version>.tar.gz. Depuis que gcc est installé cette fois, tout s'est déroulé correctement make. J'ai couru depuis le répertoire extrait de redis:

sudo make install
App Work
la source