ubuntuserver24.04版本:redis编译安装时出现工具、依赖库问题解决方法
问题点: 安装redis时,解压redis-4.0.1.tar.gz后,使用make&&make install命令安装出现报错:
ubuntu:/usr/local/deploy/redis-4.0.1$ sudo make&&make install
cd src && make all
make[1]: Entering directory '/usr/local/deploy/redis-4.0.1/src'CC Makefile.dep
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: Entering directory '/usr/local/deploy/redis-4.0.1/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS= -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: Entering directory '/usr/local/deploy/redis-4.0.1/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory '/usr/local/deploy/redis-4.0.1/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[3]: gcc: No such file or directory
make[3]: *** [Makefile:156: net.o] Error 127
make[3]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps/hiredis'
make[2]: *** [Makefile:46: hiredis] Error 2
make[2]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps'
make[1]: [Makefile:180: persist-settings] Error 2 (ignored)CC adlist.o
/bin/sh: 1: cc: not found
make[1]: *** [Makefile:228: adlist.o] Error 127
make[1]: Leaving directory '/usr/local/deploy/redis-4.0.1/src'
make: *** [Makefile:6: all] Error 2
ubuntu:/usr/local/deploy/redis-4.0.1$
根据提供的错误日志,编译失败的主要原因是系统中缺少必要的编译工具和依赖库。以下是解决步骤:
1. 安装编译工具链
错误信息显示gcc: No such file or directory
和cc: not found
,说明缺少C编译器。执行以下命令安装基础编译工具:
sudo apt update
sudo apt install build-essential
2. 安装Redis依赖库
Redis需要依赖jemalloc、hiredis等库,安装相关依赖:
sudo apt install libjemalloc-dev tcl
3. 清理并重试编译
进入Redis源码目录,清理之前的编译文件后重新编译:
cd /usr/local/deploy/redis-4.0.1
sudo make distclean # 彻底清理之前的编译文件
sudo make # 重新编译
4. 处理jemalloc问题
如果仍出现jemalloc相关错误(如fatal error: jemalloc/jemalloc.h: No such file or directory
),强制使用libc分配器:
sudo make MALLOC=libc
5. 安装Redis
编译成功后执行安装:
sudo make install
常见问题补充
- 若缺少其他依赖:根据编译过程中的错误提示安装对应包(如
sudo apt install libssl-dev
)。 - 权限问题:确保
/usr/local/bin
有写入权限(sudo make install
已使用sudo)。 - 较旧系统兼容性:Ubuntu 18.04+通常无此问题,如系统版本过低可升级或下载更新的Redis版本。
验证安装
redis-server --version
# 应输出:Redis server v=4.0.1 ...
注意:Redis 4.0.1是较旧版本(2017年发布),建议使用更新的稳定版(如7.2.x)以获得更好的安全性和功能支持。