jemalloc und andere fehler machen redis auf centos 6.4


41

Ich richte ein neues, dediziertes Centos 6.4-System mit Redis ein. Ich habe redis viele Male installiert, habe dieses Problem jedoch noch nie behoben (und war noch nie bei Centos 6.4).

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"

Wenn ich versuche, jemalloc direkt zu erstellen (aus dem / src-Bereich des redis-Tarballs), sind andere Fehler:

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

Ich habe auch versucht, Redis 2.6.7 und haben das gleiche Problem.

Ich habe überall gegraben und kann keinen Weg vorwärts finden.


Antworten:


100

Auf Centos 6.4 stieß ich auf dasselbe Problem und musste die folgenden Befehle ausführen:

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

Ich bin mir nicht sicher, warum die Deps nicht gebaut wurden. Ich dachte, sie wären in der Vergangenheit. Dies brachte mich jedoch zum Laufen mit der Version von Redis, die ich brauchte.


1
Danke, das hat bei mir auf einer Centos 6.4-Instanz auf EC2 funktioniert.
theTuxRacer

2
Update: dies funktioniert: unset ARCH; make hiredis. Von github.com/redis/hiredis-rb/issues/2
Daniel

1
Arbeitete für mich auf Centos 7.
Idee

1
Arbeitete wie ein Zauber in Ubuntu 16.04 EC2 Instanz als auch
Karthikeyan

1
Dasselbe Problem unter Ubuntu 18.04 und dieses Update funktionierte auch für mich
Kevin Hooke,

78

Ich hatte die gleichen Fehler nach einem ersten Fehler, der durch ein fehlendes Paket (gcc) verursacht wurde.
Nach der Installation von gcc makeergab ein weiterer Versuch die folgenden Fehler:

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

Diese Fehler wurden durch einige Dateien verursacht, die nach dem Fehlschlagen des ersten makeBefehls hier zurückgelassen wurden. Anscheinend musste ich diese Dateien mit dem folgenden Befehl bereinigen:

make distclean  

Und dann makewieder, und es hat funktioniert.

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


Dies funktionierte für mich auf Ubuntu 14.04.2 LTS. Ich hatte das gleiche Szenario: lief makevor der Installation build-essentialund tcl8.5.
NathanAldenSr

hat bei mir nicht funktioniert
Daniel

4

Auf diesem System /tmpwurde montiert noexec.

Redis führt /tmpwährend der Installation eine Reihe von Shell-Skripten aus , sodass die Lösung darin besteht, die Bereitstellung /tmpohne das noexecFlag fortzusetzen . Dies macht dies vorübergehend:

mount -o remount,exec /tmp

Ich sollte hinzufügen, dass diese Lösung für alle Redis 2.x- und 3.x-Versionen gilt (4.x ist mir bisher unbekannt).


1
Wie zum Teufel behebt das den Fehler, den Sie in der Frage gepostet haben ?!
Michael Hampton

Hey, ich weiß es nicht. Aber ich weiß, dass eine Technologie, mit der ich arbeite, es vorgeschlagen hat und es hat sich gelöst. Ich habe redis mehrmals installiert / gebaut und bin noch nie auf dieses Problem gestoßen.

@MichaelHampton Einige der Fehler sind "Zugriff verweigert" -Fehler während make. Fehler gebucht ist der erste Fehler (ich glaube, die Ausgabe machen ist loooong).

4
Sie sollten die vollständige Ausgabe gebucht haben. Diese Frage und Antwort ergeben zusammen absolut keinen Sinn.
Michael Hampton

Könnte es sein, dass das betreffende System 32bit ist? @MichaelHampton In diesem Fall versuchen Sie, 32-Bit zu machen.
Roman M

1

Haben Sie versucht, das gewünschte Paket zu installieren?

yum install jemalloc-devel

Diese finden Sie im EPEL-Repository, das Sie Ihrem CentOS-System bereits hinzugefügt haben sollten.

Kommen Sie zu denken, redisist auch in EPEL ...


Ja, ich habe versucht, dass ... hat nicht geholfen ... Lösung ist oben.

1

Dies wurde für Redis 3.0.2 unter RHEL-6.6 wie folgt behoben:

Aus dem Redis-Installationsverzeichnis

  1. Ausführen ./deps/update-jemalloc.sh 3.6.0(wobei 3.6.0 die neueste Version von jemalloc ist, die mit Redis 3.0.2 zum Zeitpunkt des Schreibens funktioniert)

  2. Lauf make distclean && make


1

Es kommt vor, dass die make-Datei verschmutzt ist, bevor sie ausgeführt wird

$ sudo make  

führe dies aus:

$ make distclean

Sicher, es wird alle Abhängigkeiten lösen.


0

Das gleiche Problem, das ich beim Erstellen von Redis-3.0.0 unter CentOS-6.6x86 hatte, versuchen Sie dies, um es zu erstellen.

make MALLOC=libc

0

Ich hatte dieses Problem, nachdem ich den Build auf halbem Weg beendet und versucht hatte, es erneut zu erstellen. make cleanhat nicht geholfen, also habe ich das Verzeichnis ausgebessert und von vorne angefangen, und es hat sich gut kompiliert.


0

Zunächst schlug das Extrahieren von Dateien aus redis.<version>.tar.gzmake fehl, da kein gcc installiert war:

gcc: Command not found

Also habe ich gcc installiert:

sudo yum install gcc-c++

Dann ließ ich das make nochmal laufen, ich erhielt:

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

Ich habe den Ordner "redis extraced" entfernt und aus " redis.<version>.tar.gz.Since" erneut extrahiert. Da diesmal "gcc" installiert ist, lief beim Ausführen alles erfolgreich make. Ich lief von innen redis extrahiertes Verzeichnis:

sudo make install
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.