- 获取redis二进制文件
redis下载地址
[root@localhost ~]# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
解压压缩包,并编译
[root@localhost ~]# tar -zxvf redis-6.0.8.tar.gz
[root@localhost ~]# cd redis-6.0.8
[root@localhost ~]# make
若编译出现异常
MAKE hiredis
cd hiredis && make static
make[3]: 进入目录“/home/app/redis-6.0.8/deps/hiredis”
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c
make[3]: cc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: 离开目录“/home/app/redis-6.0.8/deps/hiredis”
make[2]: *** [hiredis] 错误 2
make[2]: 离开目录“/home/app/redis-6.0.8/deps”
make[1]: [persist-settings] 错误 2 (忽略)
CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/home/app/redis-6.0.8/src”
make: *** [all] 错误 2
提示cc:未找到命令,原因是虚拟机系统中缺少gcc,安装一下gcc即可解决问题
[root@localhost ~]# yum -y install gcc automake autoconf libtool make
重新执行make,再次报错
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/home/app/redis-6.0.8/src”
make: *** [all] 错误 2
分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:
[root@localhost ~]# make MALLOC=libc
然后安装依然出错,好吧,原来redis6.0必须用gcc9.0以上版本
# 查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5
gcc -v
# 升级到gcc 9.3及以上,如下:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
# 需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
# 如果要长期使用gcc 9.3的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
此处注意一定要重启xshell才能生效,否则你用make test测试一下还是报错,把我是坑惨了
再次执行命令
[root@localhost ~]# make MALLOC=libc
还是报错 Executing test client: couldn't execute "src/redis-benchmark": no such file or directory. 真的疯了
继续解决,执行命令 make distclean
[root@localhost ~]# make distclean
[root@localhost ~]# make MALLOC=libc
到此为止终于安装成功了