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.


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.


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


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)


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


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


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.


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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.