首先我们知道Redis是一个开源的使用ANSI
C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
重点是他是C编写的,所以我们需要安装C的编译器。
下载安装
官网下载redis源码
选择稳定版本下载就行,我们以5.0.6为例
下载解压
tar -zxvf redis-5.0.6.tar.gz
cd redis-5.0.6
centos7
centos上安装基本上没出过什么幺蛾子
yum install gcc-c++ #安装C编译器
make #编译 时间很长,耐心等待
make PREFIX=/usr/local/redis install #选择目录安装
cp redis.conf /usr/local/redis/ #拷贝配置文件
cd /usr/local/redis
./bin/redis-server ./redis.conf # 需要守护线程的话 配置daemonize yes,不然就加&后台启动
其他基础的东西就不说了,接下来我们看要把人整疯的ubuntu
ubuntu18.04
最开始遇到问题是用的公司的ucloud
没有安装C编译器的时候,大概是这样的错误
CC adlist.o
/bin/sh: 1: cc: not found
这个时候我们康康gcc的版本
gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
没有的话,接下来,我们来安装编译器,如果安装成功了,可以直接去redis的目录下
make distclean # 清除编译内容重新编译
make
那么,如果安装编译器还报错怎么办
apt install gcc
#报错的图我给搞没了 大概就是如下
Depends: libc6-dev but it is not going to be installed or libc-dev
网上找了一堆方案,什么安装apptitude,最后把自己apt搞没了的比比皆是,小白不建议你去这么整,除非你知道重新去下载apt的依赖,dpkg安装,否则别轻易尝试,因为这个不是绝对能解决问题的。
还有的就是叫你装别的依赖,太难了~没一个能解决我的问题
最后找到许多文章大概是说apt源是分下载稳定版本和不稳定的版本的,因为也看到报错信息实际上的依赖的版本问题,所以问题直指版本和镜像源,我这里用的是ucloud,然后自己去手动更换国外的镜像源,也换了网易,中科大之类的,没有解决,心态都快崩了。最后跑到自己的阿里云服务器上弄了个一毛一样的tar包去编译和安装gcc,特么的一把过,索性把阿里云的镜像源给拖过来了,这下就是真的解决了~
cd /etc/apt/ #进入apt镜像源的配置目录
sudo cp sources.list sources.list.bak #做个备份
echo '' > sources.list
# 然后把下面的镜像源贴进去
# 阿里云镜像源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
#保存好之后 就是见证奇迹的时刻了
apt update # 时间很长
apt upgrade # 时间也很长
apt install gcc # 世界真是美好
安装成功之后就可以make编译了,突然感觉世界真是美好,具体的原因应该还是和系统的依赖包有关系,阿里云的服务器是真的可以,还能帮你解决问题,哈哈哈
还有小伙伴make的时候还会有下面这样的错误
cd src && make all
make[1]: Entering directory '/home/ubuntu/redis-4.0.11/src'
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
#include <jemalloc/jemalloc.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:228: recipe for target 'adlist.o' failed
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory '/home/ubuntu/redis-4.0.11/src'
尝试一下下面的命令,参考了这篇博客
make MALLOC=libc
如果还没解决的话,留下来大家一起讨论下