我正在使用 redis 设置一个新的专用 centos 6.4 系统。我已经安装了很多次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(从 redis tarball 的 /src 区域)时,其他错误包括:
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,也有同样的问题。
我已经翻遍了一切,却找不到前进的道路。
答案1
我在 centos 6.4 上遇到了同样的问题,必须运行以下命令:
cd deps
make hiredis jemalloc linenoise lua geohash-int
cd ..
make install
我不知道为什么这些部门没有建立,我以为它们是过去的。然而,这让我启动并运行了我需要的 redis 版本。
答案2
由于缺少软件包(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
答案3
在这个系统上/tmp
安装了noexec
。
/tmp
Redis 在安装过程中会运行许多 shell 脚本,因此解决方案是/tmp
在不使用该noexec
标志的情况下重新挂载。暂时这样做:
mount -o remount,exec /tmp
我应该补充一点,这个解决方案适用于所有 redis 2.x 和 3.x 版本(4.x 对我来说是未知的)
答案4
针对 RHEL-6.6 上的 Redis 3.0.2 解决了此问题,如下所示:
从 Redis 安装目录中,
运行
./deps/update-jemalloc.sh 3.6.0
(其中 3.6.0 是截至撰写本文时可与 Redis 3.0.2 配合使用的 jemalloc 的最新版本)跑步
make distclean && make