Skip to content

一、内网隔离环境的安装困局 ​

在涉密内网、金融生产区或私有云等安全隔离环境中,Linux 服务器通常无法直接访问公网镜像源(如阿里云、清华源或 CentOS 官方源)。

当我们需要在离线机器上安装常用运维排障工具(如 sysstat、expect、nginx、ansible)时:

  • 单独下载一个 .rpm 安装包拷贝进去,执行 rpm -ivh 会立刻报缺少数十个前置底层依赖(如 error: Failed dependencies: libc.so.6, libtcl8.5.so...);
  • 手动人工找齐所有几十个依赖 RPM 包既繁琐且极易产生版本错配。

工程解法:在有公网访问权限的跳板机或同版本构建机上,利用工具一次性递归导出目标软件包及其整条依赖树的所有 RPM 集合,打包导入离线环境并构建本地软件源。


二、CentOS / RHEL 7 环境:yumdownloader 递归实战 ​

yumdownloader 是 yum-utils 工具套件中的利器,专门用于仅下载 RPM 包而不执行本地安装。

1. 安装工具套件(有网机器执行) ​

bash
yum install -y yum-utils

2. 递归解析并下载完整依赖树 ​

bash
# --resolve: 自动分析并同时下载所有必须的依赖包
# --destdir: 指定 RPM 包存放的目录
mkdir -p /opt/offline_packages
yumdownloader --resolve --destdir=/opt/offline_packages sysstat expect

下载完成后,进入 /opt/offline_packages 即可看到包含目标包及所有依赖的完整 RPM 列表。


三、RHEL 8 / Rocky / openEuler 环境:dnf download ​

在更新的基于 DNF(Dandified YUM)包管理器的操作系统(如 CentOS 8、Rocky 9、openEuler、统信 UOS)中,推荐直接使用系统原生的 dnf download 命令:

bash
# --resolve: 解析依赖
# --alldeps: 递归下载所有依赖包
# --destdir: 指定输出目录
sudo dnf download --resolve --alldeps --destdir=/opt/offline_packages expect

四、离线内网机器安装策略 ​

将下载的整包目录打为 tar 包(tar -zcvf offline_pkgs.tar.gz /opt/offline_packages),拷贝进入内网隔离机。

方案 A:直接批量本地安装(适合简单场景) ​

bash
# --nodeps --force 虽快但容易留下隐患,推荐使用通配符让 rpm 自行在同目录下关联依赖:
rpm -Uvh --replacepkgs /opt/offline_packages/*.rpm

方案 B:搭建内网 Local YUM 本地软件源(推荐,企业级标准) ​

如果有几十台内网机器需要复用,直接在局域网跳板机搭建基于本地目录的 YUM 源:

bash
# 1. 安装建源工具 createrepo
rpm -ivh createrepo-*.rpm

# 2. 将包含所有 RPM 的目录转换为 YUM 源数据库
createrepo /opt/offline_packages/

# 3. 编写本地源配置文件 /etc/yum.repos.d/local.repo
cat > /etc/yum.repos.d/local.repo <<EOF
[local-offline]
name=Local Offline Repository
baseurl=file:///opt/offline_packages/
enabled=1
gpgcheck=0
EOF

# 4. 清理并重建缓存
yum clean all
yum makecache

# 此时直接使用原生 yum 即可自动处理所有依赖关系顺畅安装:
yum install -y sysstat expect

通过标准化导出与本地源配置,彻底告别内网离线环境“缺包少库”的连锁依赖噩梦。

测试开发工程师 · 专注自动化与系统架构 | 邮箱: hansblog@atumsoul.win