Skip to content

Debian 离线编译安装 Redis

此文档适用于联网主机和离线主机为同一操作系统架构和版本的情况。

一、离线环境准备(联网主机操作)

下载 Redis 源码包

下载地址:https://download.redis.io/releases/

shell
# 如:下载 redis-8.2.1.tar.gz 到 /opt/redis 目录
curl -# -o /opt/redis/redis-8.2.1.tar.gz --create-dirs https://download.redis.io/releases/redis-8.2.1.tar.gz

# 或
wget -P /opt/redis https://download.redis.io/releases/redis-8.2.1.tar.gz

下载编译依赖包

获取编译所需的所有 .deb 依赖包:

shell
# 依赖目录 
mkdir -p /opt/redis/deps && cd /opt/redis/deps

# 开放目录权限(解决 _apt 用户无法访问错误)
chmod -R 777 /opt/redis

获取基本的编译环境,在线环境下通常只需安装 build-essential 元数据包,它会自动 Pull in gcc, make, libc6-dev 等核心工具。

shell
# 下载基本的编译环境(gcc make libc6-dev 等)以及 pkg-config tcl 软件包及其所有依赖:
apt download $(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances \
--no-pre-depends build-essential pkg-config tcl | grep "^\w")

命令解析:

递归地获取所有必需的依赖包(不包括推荐的、建议的、冲突的、中断的、替换的、增强的或预依赖的包):

  • apt-cache depends: 查询指定软件包(build-essential pkg-config tcl)的依赖关系。
  • 使用 --recurse 递归获取所有依赖,并通过一系列 --no-* 选项过滤掉非必须的依赖关系,确保只下载最核心的依赖包。
  • grep "^\w": 提取出以字母数字开头的行(即包名)。
  • apt download: 下载所有筛选出的包到当前目录。

打包传输

/opt/redis 目录压缩:

bash
cd /opt

# 打包 redis 目录(包含 redis/ 目录)
tar -czvf redis_offline.tar.gz redis/

然后复制到离线机器。

二、离线安装步骤(目标主机操作)

安装编译依赖

bash
cd /home

# 解压到指定目录(-C 命令指定的目录要通过 mkdir -p 先创建出来)
tar -xvf redis_offline.tar.gz -C /opt

cd /opt/redis/deps

# 安装 gcc make libc6-dev pkg-config tcl 软件包及其所有依赖
dpkg -i *.deb

处理可能的依赖问题

dpkg 不会自动处理所有的依赖关系。

虽然你已经下载了绝大多数必需的包,但在复杂的依赖情况下,按字母顺序安装可能会遇到问题。如果 dpkg -i *.deb 命令报告依赖关系问题,可以尝试以下方法:

使用 apt 来修复依赖并安装本地包(注意:这需要 apt 能识别本地文件,离线环境下可能仍需手动处理):

shell
apt -f install

# 或者(-f 为 --fix-broken 的简写)
apt --fix-broken install

这条命令会尝试修复损坏的依赖关系。

如果所有必需的包都已在本地的 /opt/redis/deps/ 目录中,apt 可能会从该目录(如果它在 /var/cache/apt/archives/ 中则会自动识别)中获取所需的包。更可靠的方法是配置本地源。

编译安装 Redis

后续安装过程参考文档:CentOS 离线编译安装 Redis 中,【安装 Redis】 章节。