00 在 CentOS 7 上安装 Redis

CentOS 7 安装 Redis 5 碰壁记录:从 yum 源配置到软件安装的踩坑之旅

1. 前言

我尝试在 CentOS 7 服务器上尝试安装 Redis 5,原本以为是个简单的 yum install redis 就能搞定的事情,结果却遇到了一系列问题。原本用下面的步骤就能完成,但是很不巧,这个迭代和维护等种种原因很不巧的出现在一起……所以这下面的 6 条命令仅适合有缘人。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 先把原有的 repo 文件备份,避免冲突或损坏
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 2. 使用阿里云的 CentOS7 源替换官方源
# - 这里直接下载阿里云维护的 CentOS-7.repo 文件到 /etc/yum.repos.d/ 目录
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 3. 清理旧的 yum 缓存
sudo yum clean all

# 4. 重新生成 yum 缓存,确保源可以正常使用
sudo yum makecache

# 5. 安装 gcc
# - 如果系统已经有 gcc,则会提示已安装并是最新版本
sudo yum install -y gcc

# 6. 安装常用开发工具(可选,推荐一次性安装好)
# - 包括 gcc-c++(C++编译器)、make(编译工具)、wget(下载工具)、epel-release(扩展源)
sudo yum install -y gcc gcc-c++ make wget epel-release

从最初的 yum 源无法解析,到更换阿里云源,再到 Redis 版本不符预期,整个过程真是惹人心烦。本文将详细记录我的操作过程、遇到的问题,最终我还是没能成功安装,但是可以安装 Redis 7.2.5 这个版本,希望能为遇到类似问题的朋友提供参考。

2. 问题起源:yum 源无法解析

1. 初始尝试

我首先尝试安装基础的开发工具:

1
sudo yum install -y gcc gcc-c++ make wget epel-release

结果立即遇到了问题:

1
2
3
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86\_64\&release=7\&repo=sclo-rh error was

14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

这个错误很明显是由于无法解析官方的 mirrorlist.centos.org 域名导致的。这可能是由于网络问题,或者是 CentOS 7 官方源在国内访问不稳定造成的。

3. 解决方案一:更换阿里云 yum 源

既然官方源有问题,我决定更换为国内的阿里云源。

1. 备份原有源配置

1
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

2. 下载阿里云源配置

我首先尝试从 vault.centos.org 下载:

1
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://vault.centos.org/7.9.2009/os/x86\_64/CentOS-Base.repo

但下载下来的文件似乎有问题,执行 yum clean all 时出现:

1
2
3
4
5
File contains no section headers.

file: file:///etc/yum.repos.d/CentOS-Base.repo, line: 1

'\<html>\r\n'

看来直接从 vault 下载的文件不是正确的 repo 配置文件。

3. 正确的阿里云源配置

我重新尝试直接从阿里云下载 repo 文件:

1
2
3
sudo rm -f /etc/yum.repos.d/CentOS-Base.repo

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

这次下载成功了。接下来清理缓存并重新生成:

1
2
sudo yum clean all
sudo yum makecache

yum makecache 过程中,虽然出现了一些连接超时的警告:

1
2
3
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86\_64/repodata/6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88bad5ef-primary.sqlite.bz2: \[Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"

Trying other mirror.

但最终还是成功生成了缓存:

1
Metadata Cache Created

4. 验证基础工具安装

更换源后,我再次检查基础开发工具是否已安装:

1
2
3
4
5
gcc -v

sudo yum install -y gcc-c++

sudo yum install -y make wget epel-release

结果显示这些工具都已经安装并且是最新版本:

1
2
3
4
5
6
7
8
9
Package gcc-4.8.5-44.el7.x86\_64 already installed and latest version

Package gcc-c++-4.8.5-44.el7.x86\_64 already installed and latest version

Package 1:make-3.82-24.el7.x86\_64 already installed and latest version

Package wget-1.14-18.el7\_6.1.x86\_64 already installed and latest version

Package epel-release-7-14.noarch already installed and latest version

看来基础环境已经准备好了。

5. 安装 Redis 的尝试

1. 安装 yum-utils

为了更好地管理 yum 源,我先安装了 yum-utils:

1
sudo yum install -y yum-utils

这个安装过程很顺利,成功安装了 yum-utils 及其依赖包。

2. 尝试通过 remi 源安装 Redis

我知道 remi 源提供了较新版本的 Redis,所以尝试使用 remi 源:

1
yum --enablerepo=remi list redis

显示可以安装 Redis 7.2.5:

1
2
3
Available Packages

redis.x86\_64 7.2.5-1.el7.remi remi

我启用了 remi 源并安装 Redis:

1
2
3
sudo yum-config-manager --enable remi

sudo yum install -y redis

安装成功后,验证版本:

1
2
3
redis-server -v

Redis server v=7.2.5 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=2dd7a20ee3c6d015

虽然安装成功了,但这是 Redis 7.2.5,而不是我需要的 Redis 5。

3. 尝试安装 Redis 5

我卸载了 Redis 7.2.5,并尝试安装 Redis 5:

1
2
3
sudo yum remove -y redis

sudo yum-config-manager --disable remi

我听说 remi 源有专门的 redis50 仓库,所以尝试启用它:

1
sudo yum-config-manager --enable remi-redis50

但这个命令执行后没有任何输出,可能 remi-redis50 源在我的系统中不存在。然后我尝试直接安装 Redis:

1
sudo yum install -y redis

这次安装的是来自 epel 源的 Redis 3.2.12:

1
Package redis.x86\_64 0:3.2.12-2.el7 will be installed

验证版本:

1
2
3
redis-server -v

Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=7897e7d0e13773f

这仍然不是我需要的 Redis 5。

6. 问题总结与分析

1. 成功的操作

  1. 更换阿里云 yum 源:成功解决了官方源无法解析的问题

  2. 安装基础开发工具:确认 gcc、gcc-c++、make、wget 等工具已正确安装

  3. 安装 yum-utils:成功安装了 yum 源管理工具

  4. 通过 remi 源安装 Redis 7:成功安装了 Redis 7.2.5

2. 未解决的问题

  1. 无法通过 yum 源安装 Redis 5:虽然尝试了多种方法,但最终只能安装到 Redis 3.2.12 或 Redis 7.2.5

  2. remi-redis50 源配置问题:可能需要手动配置 remi-redis50 源才能安装 Redis 5

7. 参考资料

  1. CentOS 官方文档。

  2. 阿里云开源镜像站文档。

  3. Redis 官方安装指南。

  4. 各大技术社区的相关讨论和解决方案。