jemalloc и другие ошибки, делающие redis на centos 6.4


42

Я устанавливаю новую специализированную систему 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), другие ошибки включают в себя:

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 и имею ту же проблему.

Я выкопал все и не могу найти пути вперед.


Ответы:


101

Я столкнулся с той же проблемой на 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/issues/2
Даниэль

1
Работал для меня на centos 7.
идея

1
Работал как прелесть в экземпляре ubuntu 16.04 EC2
Картикеян

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. Отправленная ошибка - первая ошибка (я полагаю, что вывод make является долгим).

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

Это происходит из-за грязного файла make перед запуском

$ 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 Extraced и повторно извлек ее из redis.<version>.tar.gz. Так как gcc установлен на этот раз, все прошло успешно, когда я запустился make. Я побежал изнутри Redis извлеченный каталог:

sudo make install
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.