jemalloc та інші помилки під час повторного начеплення 6.4


41

Я встановлюю нову, виділену систему centos 6.4 з redis. Я встановив redis багато разів, але ніколи не звертався до цього питання (і ніколи не був на Centos 6.4 раніше).

cd redis-2.6.16
sudo make install

помилка:

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"

Коли я намагаюся створити jemalloc безпосередньо (з області / src області redis tarball), інші помилки включають:

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

Я також спробував Redis 2.6.7 і у мене є та сама проблема.

Я копав всюди і не можу знайти шляху вперед.


Відповіді:


100

Я зіткнувся з тією ж проблемою на centos 6.4 і повинен був виконати наступні команди:

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

Я не впевнений, чому депи, де не будували, я думав, що вони були в минулому. Однак це підняло мене та працювало з версією redis, яка мені була потрібна.


1
Дякую, це працювало для мене на Centos 6,4 екземпляра на EC2.
theTuxRacer

2
Оновлення: це працювало: unset ARCH; make hiredis. З сайту github.com/redis/hiredis-rb/isissue/2
Даніель

1
Працював для мене у центрі 7.
ідея

1
Працював як принадність і в екземплярі ubuntu 16.04 EC2
Karthikeyan

1
Той самий випуск на Ubuntu 18.04, і це виправлення працювало і для мене
Кевін Гук

78

У мене були ті ж помилки після першої помилки, викликаної відсутнім пакетом (gcc).
Отже, після встановлення gcc ще одна makeспроба дала ці помилки:

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

Ці помилки були викликані деякими файлами, залишеними тут після відмови першої makeкоманди. Мабуть, мені довелося чистити ці файли командою:

make distclean  

А потім makeзнову, і це спрацювало.

Джерело: https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk


Це працювало для мене на Ubuntu 14.04.2 LTS. У мене був той самий сценарій: запускався makeперед установкою build-essentialі tcl8.5.
NathanAldenSr

не працював для мене
Даніель

4

На цю систему /tmpмонтувались noexec.

Redis запускає декілька скриптів оболонки з /tmpмоменту її встановлення, тому рішенням потрібно зробити повторне повторне використання /tmpбез noexecпрапора. Це робиться тимчасово:

mount -o remount,exec /tmp

Додам, що це рішення стосується всіх версій redis 2.x та 3.x (4.x мені далеко невідомо)


1
Як у пеклі це вирішує помилку, яку ви опублікували у питанні ?!
Майкл Хемптон

Гей, я не знаю. Але я знаю, що техніка, з якою я працюю, запропонувала це, і це вирішило. Я встановлював / будував redis кілька разів, і ніколи раніше не стикався з цим питанням.

@MichaelHampton деякі помилки - це "помилки в доступі" під час make. Повідомлення про помилку є першою помилкою (я вважаю, що зробити висновок є loooong).

4
Ви повинні були розмістити повний результат. Це запитання та відповідь взагалі абсолютно не мають сенсу.
Майкл Хемптон

Чи може бути, що система, про яку йдеться, 32-бітна? @MichaelHampton У цьому випадку спробуйте зробити 32-бітну.
Роман М

1

Ви спробували встановити пакет, який він вимагав?

yum install jemalloc-devel

Це можна знайти в сховищі EPEL, яке ви вже повинні були додати до своєї системи CentOS.

Подумайте, redisтакож в EPEL ...


Так, я намагався, що .... не допомогло .... рішення вище.

1

Це вирішено для Redis 3.0.2 на RHEL-6.6 наступним чином:

З каталогу встановлення Redis,

  1. Запустити ./deps/update-jemalloc.sh 3.6.0(де 3.6.0 - це остання версія jemalloc, яка працює з Redis 3.0.2 станом на цей текст)

  2. Біжи make distclean && make


1

Це трапляється через брудне створення файлу, перш ніж запустити

$ sudo make  

запустіть це:

$ make distclean

впевнений, що вирішить усі залежності.


0

ту ж проблему, з якою я стикався, коли робив redis-3.0.0 на CentOS-6.6x86, спробуйте це зробити.

make MALLOC=libc

0

У мене виникло це питання після того, як я вбив збірну частково і спробував зробити це знову. make cleanне допомогло, тому я занурив каталог і почав заново, і він склав чудово.


0

Спочатку після вилучення файлів з redis.<version>.tar.gzmake не вдалося, оскільки не було встановлено gcc:

gcc: Command not found

Тому я встановив gcc:

sudo yum install gcc-c++

Потім я знову запустив марку, отримав:

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

Я видалив папку, що витягнула redis, і повторно її витягнув з redis.<version>.tar.gz. Так як цього разу встановлено gcc, все вдало пройшло, коли я запускаюсь make. Я перебіг зсередини добутого каталогу, який видобувався

sudo make install
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.