jemalloc i inne błędy powodujące redis na centos 6.4


41

Przygotowuję nowy, dedykowany system centos 6.4 z redis. Zainstalowałem redis wiele razy, ale nigdy nie natknąłem się na ten problem (i nigdy wcześniej nie byłem na centos 6.4).

cd redis-2.6.16
sudo make install

błąd:

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"

Kiedy próbuję zbudować jemalloc bezpośrednio (z obszaru / src tarballa redis), inne błędy obejmują:

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

Próbowałem także redis 2.6.7 i mam ten sam problem.

Kopałem wszystko i nie mogę znaleźć drogi do przodu.


Odpowiedzi:


100

Zetknąłem się z tym samym problemem na centos 6.4 i musiałem uruchomić następujące polecenia:

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

Nie jestem pewien, dlaczego deps nie zostały zbudowane, myślałem, że były w przeszłości. Jednak to mnie uruchomiło z wersją redis, której potrzebowałem.


1
Dzięki, działało to dla mnie na instancji centos 6.4 na EC2.
theTuxRacer

2
Aktualizacja: to działało: unset ARCH; make hiredis. From github.com/redis/hiredis-rb/issues/2
Daniel

1
Pracowałem dla mnie nad centos 7.
pomysł

1
Działa jak urok w instancji Ubuntu 16.04 EC2
Karthikeyan

1
Ten sam problem na Ubuntu 18.04 i ta poprawka również działała dla mnie
Kevin Hooke

78

Miałem te same błędy po pierwszej awarii spowodowanej brakującym pakietem (gcc).
Po zainstalowaniu gcc kolejna makepróba dała te błędy:

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

Błędy te zostały spowodowane przez niektóre pliki pozostawione tutaj po niepowodzeniu pierwszego makepolecenia. Najwyraźniej musiałem wyczyścić te pliki za pomocą polecenia:

make distclean  

A potem makeznowu i zadziałało.

Źródło: https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk


To działało dla mnie na Ubuntu 14.04.2 LTS. Miałem ten sam scenariusz: działałem makeprzed instalacją build-essentiali tcl8.5.
NathanAldenSr

nie działało dla mnie
Daniel

4

Na tym systemie /tmpzostał zamontowany noexec.

Redis uruchamia wiele skryptów powłoki /tmppodczas instalacji, więc rozwiązaniem jest ponowne podłączenie /tmpbez noexecflagi. Robi to tymczasowo:

mount -o remount,exec /tmp

Powinienem dodać, że to rozwiązanie dotyczy wszystkich wersji Redis 2.xi 3.x (4.x jest mi nieznana)


1
Jak do diabła to rozwiązuje błąd, który opublikowałeś w pytaniu ?!
Michael Hampton

Hej, nie wiem. Ale wiem, że technologia, nad którą pracuję, zasugerowała to i rozwiązała. Zainstalowałem / zbudowałem Redis kilka razy i nigdy wcześniej nie napotkałem tego problemu.

@MichaelHampton niektóre z błędów to błędy „Odmowa dostępu” podczas make. Błąd wysłany to pierwszy błąd (uważam, że wyjście make jest długie).

4
Powinieneś był opublikować pełny wynik. To pytanie i odpowiedź nie mają absolutnie żadnego sensu razem.
Michael Hampton

Czy to możliwe, że dany system ma 32 bity? @MichaelHampton W takim przypadku spróbuj dokonać wersji 32-bitowej.
Roman M

1

Czy próbowałeś zainstalować pakiet, o który prosił?

yum install jemalloc-devel

Można to znaleźć w repozytorium EPEL, które powinieneś już dodać do swojego systemu CentOS.

Pomyśl o tym, redisjest również w EPEL ...


Tak, próbowałem ... nie pomogło .... rozwiązanie jest powyżej.

1

Rozwiązano to dla Redis 3.0.2 na RHEL-6.6 w następujący sposób:

Z katalogu instalacyjnego Redis

  1. Uruchom ./deps/update-jemalloc.sh 3.6.0(gdzie 3.6.0 to najnowsza wersja jemalloc, która współpracuje z Redis 3.0.2 od tego momentu)

  2. Biegać make distclean && make


1

Dzieje się tak z powodu brudnego tworzenia pliku, więc przed uruchomieniem

$ sudo make  

uruchomić to:

$ make distclean

na pewno rozwiąże wszystkie zależności.


0

ten sam problem, który napotkałem podczas tworzenia redis-3.0.0 na CentOS-6.6x86, spróbuj to zrobić.

make MALLOC=libc

0

Miałem ten problem po tym, jak zabiłem kompilację w połowie i próbowałem ją powtórzyć. make cleannie pomogło, więc nukowałem katalog i zacząłem od nowa, a wszystko dobrze się skompilowało.


0

Początkowo po wyodrębnieniu plików z redis.<version>.tar.gzmake nie powiodło się, ponieważ nie zainstalowano gcc:

gcc: Command not found

Więc zainstalowałem gcc:

sudo yum install gcc-c++

Potem ponownie uruchomiłem markę, otrzymałem:

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

Usunąłem folder redis i ponownie rozpakowałem go. redis.<version>.tar.gzPonieważ gcc jest zainstalowany tym razem, wszystko poszło pomyślnie po uruchomieniu make. Uruchomiłem z wyodrębnionego katalogu redis:

sudo make install
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.