jemalloc e altri errori durante la redis su centos 6.4


42

Sto installando un nuovo sistema dedicato centos 6.4 con redis. Ho installato redis molte volte, ma non ho mai riscontrato questo problema (e non ho mai usato Centos 6.4 prima).

cd redis-2.6.16
sudo make install

errore:

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"

Quando provo a creare direttamente jemalloc (dall'area / src del tarball redis), altri errori includono:

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

Ho anche provato Redis 2.6.7 e ho lo stesso problema.

Ho scavato dappertutto e non riesco a trovare alcun percorso.


Risposte:


101

Ho riscontrato lo stesso problema su centos 6.4 e ho dovuto eseguire i seguenti comandi:

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

Non sono sicuro del perché i deps non siano stati costruiti, pensavo fossero in passato. Tuttavia, questo mi ha reso operativo con la versione di Redis di cui avevo bisogno.


1
Grazie, questo ha funzionato per me su un'istanza di centos 6.4 su EC2.
theTuxRacer,

2
Update: questo ha funzionato: unset ARCH; make hiredis. Da github.com/redis/hiredis-rb/issues/2
Daniel,

1
Ha funzionato per me su centos 7.
idea

1
Ha funzionato come un fascino anche nell'istanza di Ubuntu 16.04 EC2
Karthikeyan,

1
Lo stesso problema su Ubuntu 18.04 e questa correzione ha funzionato anche per me
Kevin Hooke,

78

Ho avuto gli stessi errori dopo un primo errore causato da un pacchetto mancante (gcc).
Quindi dopo aver installato gcc, un altro maketentativo ha dato questi errori:

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

Questi errori sono stati causati da alcuni file lasciati qui dopo l'errore del primo makecomando. Apparentemente ho dovuto pulire questi file, con il comando:

make distclean  

E poi di makenuovo, e ha funzionato.

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


Questo ha funzionato per me su Ubuntu 14.04.2 LTS. Ho avuto lo stesso scenario: eseguito makeprima dell'installazione build-essentiale tcl8.5.
NathanAldenSr

non ha funzionato per me
Daniel,

4

Su questo sistema è /tmpstato montato noexec.

Redis esegue una serie di script shell /tmpdurante l'installazione, quindi la soluzione è rimontare /tmpsenza il noexecflag. Questo fa temporaneamente:

mount -o remount,exec /tmp

Vorrei aggiungere che questa soluzione si applica a tutte le versioni di redis 2.xe 3.x (4.x è di gran lunga sconosciuto per me)


1
Come diavolo risolve l'errore che hai pubblicato nella domanda ?!
Michael Hampton,

Ehi, non lo so. Ma so che una tecnologia con cui sto lavorando lo ha suggerito e si è risolto. Ho installato / costruito redis diverse volte e non ho mai riscontrato questo problema prima.

@MichaelHampton alcuni degli errori sono errori "Accesso negato" durante make. L'errore postato è il primo errore (credo che l'output di make sia troppo lungo).

4
Dovresti aver pubblicato l'output completo. Questa domanda e risposta non hanno assolutamente senso insieme.
Michael Hampton,

Potrebbe essere che il sistema in questione sia a 32 bit? @MichaelHampton In tal caso, prova a creare 32 bit.
Roman M,

1

Hai provato a installare il pacchetto richiesto?

yum install jemalloc-devel

Questo può essere trovato nel repository EPEL, che dovresti aver già aggiunto al tuo sistema CentOS.

Vieni a pensarci, redisè anche in EPEL ...


Sì, ho provato che .... non ha aiutato .... la soluzione è sopra.

1

Risolto questo per Redis 3.0.2 su RHEL-6.6 come segue:

Dalla directory di installazione di Redis,

  1. Esegui ./deps/update-jemalloc.sh 3.6.0(dove 3.6.0 è l'ultima versione di jemalloc che funziona con Redis 3.0.2 al momento della stesura)

  2. Correre make distclean && make


1

Succede a causa del file make sporco quindi prima di eseguirlo

$ sudo make  

esegui questo:

$ make distclean

sicuramente risolverà tutte le dipendenze.


0

stesso problema che ho riscontrato quando si realizza redis-3.0.0 su CentOS-6.6x86, provare questo per farlo.

make MALLOC=libc

0

Ho avuto questo problema dopo aver ucciso la build a metà e ho provato a farlo di nuovo. make cleannon mi ha aiutato, quindi ho cancellato la directory e ricominciato da capo, e si è compilato bene.


0

Inizialmente, dopo aver estratto i file da redis.<version>.tar.gzmake non è riuscito perché non era installato gcc:

gcc: Command not found

Quindi ho installato gcc:

sudo yum install gcc-c++

Quindi ho eseguito di nuovo il make, ho ricevuto:

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

Ho rimosso la cartella estratta redis e l'ho ri-estratta da redis.<version>.tar.gz. Poiché gcc è installato questa volta, tutto è andato a buon fine quando corro make. Ho eseguito dalla directory estratta redis:

sudo make install
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.