redis有Linux版本和windowns版本,其中windowns版本的故事大家可以自行百度,下载安装也简单,不在此赘述。本篇文章主要记录我在Linux上安装redis踩过的一些坑,做个笔记。
直接去redis官网下载 redis中文官方网站,我下载的是redis-5.0.5,以下都是以此版本做演示。
安装步骤是:解压–>编译–>安装,中间可能由于linux版本原因出现一些问题,会在后面将问题和解决方法详细列出。
##解压到当前目录下的redis-5.0.5文件夹
tar xzf redis-5.0.5.tar.gz redis-5.0.5
##解压后进入redis中的src目录
cd redis-5.0.5/src
##编译
make
##测试
make test
##安装,如果已经是root账户,可以不加sudo
sudo make install
##安装完成后启动redis,以下命令是以默认配置启动
redis-server
如果出现下图所示,则说明安装成功,我截的图不是第一次启动redis的截图,可能有些不同,多了读取持久化文件等日志,不过有最后一行“ready to accept connections”则说明启动成功了。
在执行apt-get update && sudo apt-get upgrade
或执行sudo apt-get install/update/或其他命令时,由于各种说不清的原因有时会出现如下提示:
无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
这是可能之前执行apt-get出错了,没有正常关闭,被占用了,通过以下方法解决:
##查找apt进程
ps -ef | grep apt
##执行kill命令关闭进程
sudo kill -9 1360 1375
由于ubuntu系统有很多软件不会自带,需要使用者自己安装,所以坑比较多,下面就将我在安装redis中遇到的坑都记录下来。
在编译make过程中可能会出现“Command ‘gcc’ not found”的错误,这是因为系统没有安装gcc或者版本过低,通过以下方式进行处理。
##先后执行下面命令
apt-get update
apt-get install gcc
安装完成后回到redis的src目录下,再次执行make命令。
在安装gcc后,再次执行make命令还是报错,显示jemalloc/jemalloc.h:没有该文件或目录,具体如下:
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[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-5.0.5/src'
make: *** [all] Error 2
解决方法:
## 指定分配器
make MALLOC=libc
说关于分配器allocator,如果有MALLOC这个环境变量,会有用这个环境变量的去建立Redis。而且libc并不是默认的分配器,默认的是jemalloc, 因为 jemalloc 被证明比libc有更少的 fragmentation problems 。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
在执行测试命令make test过程中,遇到“You need tcl 8.5 or newer in order to run the Redis test”的问题
make[1]: 进入目录“/usr/local/redis/src”
You need tcl 8.5 or newer in order to run the Redis test
Makefile:225: recipe for target 'test' failed
make[1]: *** [test] Error 1
make[1]: 离开目录“/usr/local/redis/src”
Makefile:6: recipe for target 'test' failed
make: *** [test] Error 2
原因是当前系统的tcl版本太低了,需要升级,解决步骤如下:
## 下载tcl安装包
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
## 解压,需要注意,一定要加-C参数,否则有问题
sudo tar xzvf tcl8.6.1-src.tar.gz -C /home/jimmy/Downloads
## 解压完成后,tcl8.6.1文件夹就是tcl解压后的文件
## 依次执行以下命令即可
cd tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
注意:解压tcl安装包一定要加 -C [绝对路径]参数
该问题和在Ubuntu18.04一样,在执行测试命令make test过程中报错,
[jimmy@localhost src]$ make test
CC Makefile.dep
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] 错误 1
解决方法和上面一样,不再赘述。
.text
安装完tcl之后再次执行make test又报错了,真是坑不少呀,报错显示:
/usr/bin/ld: libsdk.a(Imagexxx.cpp.o): unrecognized relocation (0x2a) in section .text
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
这是因为ld版本过低导致,需要升级,解决方法如下:
## 查看ld版本
ld --version
##显示如下:
GNU ld version 2.25.1-22.base.el7
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
## 安装高版本,如果提示权限不够,命令最前面加sudo
yum install binutils-2.27
## 添加到系统路径
export PATH="/usr/lib/binutils-2.27/bin:$PATH"
安装过程中真是踩坑不少,折腾了很久,为了以后方便,写篇笔记吧。