jemalloc和其他错误使redos在centos 6.4上


41

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

当我尝试直接(从redis tarball的/ src区域)构建jemalloc时,其他错误包括:

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并有同样的问题。

我到处都挖了,找不到前进的路。


Answers:


100

我在centos 6.4上遇到了相同的问题,不得不运行以下命令:

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

我不确定为什么没有建立部门,我以为他们过去了。但是,这使我开始使用所需的redis版本运行。


1
谢谢,这对我在EC2上的centos 6.4实例上很有效。
theTuxRacer 2014年

2
更新:可行:unset ARCH; make hiredis。从github.com/redis/hiredis-rb/issues/2
丹尼尔(Daniel)

1
在centos 7上为我工作。–
想法

1
在Ubuntu 16.04 EC2实例中也像魅力一样工作
Karthikeyan

1
Ubuntu 18.04上的同一问题,此修复程序也对我有用
Kevin Hooke

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 2015年

不适用于我
Daniel

4

在此系统上/tmp已安装noexec

Redis /tmp在安装过程中会运行许多Shell脚本,因此解决方案是在/tmp不带noexec标志的情况下重新安装。这是暂时的:

mount -o remount,exec /tmp

我应该补充一点,该解决方案适用于所有Redis 2.x和3.x版本(我对4.x尚不了解)


1
这将如何解决您在问题中发布的错误?!
迈克尔·汉普顿

嘿,我不知道。但是我知道与我合作的一项技术已经提出了建议,并且确实可以解决。我已经安装/构建了Redis几次,并且从未遇到过此问题。

@MichaelHampton的某些错误是在制作期间出现“访问被拒绝”错误。发布的错误是第一个错误(我相信,make输出是很糟糕的)。

4
您应该已经发布了完整的输出。这个问题和答案在一起毫无意义。
迈克尔·汉普顿

可能是该系统的32位系统吗?@MichaelHampton在这种情况下,请尝试使32bit。
罗曼M

1

您是否尝试安装它要求的软件包?

yum install jemalloc-devel

可以在EPEL存储库中找到,您应该已经将其添加到CentOS系统中。

想到它,redis在EPEL中也...


是的,我确实尝试过。...没有帮助。...解决方案在上面。

1

在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


1

它的发生是由于make文件变脏,所以在运行之前

$ sudo make  

运行这个:

$ make distclean

确保它将解决所有依赖性。


0

我在CentOS-6.6x86上制作redis-3.0.0时遇到的相同问题,请尝试这样做。

make MALLOC=libc

0

在中途终止构建并尝试重新构建之后,我遇到了这个问题。make clean并没有帮助,所以我删除了目录并重新开始,它编译正常。


0

首先,redis.<version>.tar.gz由于未安装gcc而从make中提取文件失败:

gcc: Command not found

所以我安装了gcc:

sudo yum install gcc-c++

然后我再次运行该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"

我删除了redis extraced文件夹并从中重新提取它redis.<version>.tar.gz。由于这次安装了gcc,所以运行时一切都成功进行了make。我从redis提取的目录中运行:

sudo make install
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.