centos 6.4 上的 jemalloc 和其他错误

centos 6.4 上的 jemalloc 和其他错误

我正在使用 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

/tmpRedis 在安装过程中会运行许多 shell 脚本,因此解决方案是/tmp在不使用该noexec标志的情况下重新挂载。暂时这样做:

mount -o remount,exec /tmp

我应该补充一点,这个解决方案适用于所有 redis 2.x 和 3.x 版本(4.x 对我来说是未知的)

答案4

针对 RHEL-6.6 上的 Redis 3.0.2 解决了此问题,如下所示:

从 Redis 安装目录中,

  1. 运行./deps/update-jemalloc.sh 3.6.0(其中 3.6.0 是截至撰写本文时可与 Redis 3.0.2 配合使用的 jemalloc 的最新版本)

  2. 跑步make distclean && make

相关内容