获取完整 RPM 包(含所有依赖):离线环境必备方案

240 阅读3分钟

红帽系系统获取完整 RPM 包(含所有依赖):离线环境必备方案

红帽系系统(RHEL、CentOS、Rocky Linux 等)离线部署时,最核心的痛点是获取完整 RPM 包及所有依赖—— 常规命令常出现依赖缺失、包不完整问题,导致离线安装失败。本文直接给出终极解决方案,用一条 dnf 命令搞定所有依赖,确保获取的 RPM 包绝对全面,满足离线服务器的部署需求。

一、前提:联网服务器安装 dnf 及扩展插件

若联网服务器未预装 dnf,需先通过 yum 安装(红帽系默认自带 yum),同时安装 dnf 扩展插件以支持下载功能:

yum install dnf -y && yum install dnf-plugins-core -y

这条命令会自动安装 dnf 工具和必需的扩展组件,为后续完整下载 RPM 包打好基础。


二、核心命令:一键获取完整 RPM 包 + 所有依赖

这是解决 “依赖不全” 的关键命令,直接下载目标包及所有关联依赖(含弱依赖) ,确保离线环境安装无缺失:

dnf download --downloaddir=./ --resolve --alldeps --setopt=install_weak_deps=True 目标包名1 目标包名2 ...

# 如果报错,那么只遍历x86架构的包
dnf download --downloaddir=./ --resolve --alldeps --setopt=install_weak_deps=True --arch=x86_64 vim wget

命令参数解析(直击要害)

  • --downloaddir=./:指定下载目录为当前目录(可改为绝对路径,如/root/rpm-packages)。
  • --resolve:自动解析并下载所有依赖包。
  • --alldeps:强制下载全部依赖,不遗漏任何关联包。
  • --setopt=install_weak_deps=True:同时下载弱依赖包(常规命令默认不下载,离线环境易因此报错)。

示例(下载 vim 和 wget 完整包)

dnf download --downloaddir=./ --resolve --alldeps --setopt=install_weak_deps=True vim wget

# 如果报错,那么只遍历x86架构的包
dnf download --downloaddir=./ --resolve --alldeps --setopt=install_weak_deps=True --arch=x86_64 vim wget

执行后,当前目录会生成 vim、wget 的主包,以及它们依赖的所有 RPM 文件(包括系统基础依赖、库文件等),实现 “一次下载,全部齐全”。


三、使用场景与操作步骤(离线部署流程)

  1. 准备一台能联网的红帽系服务器(与离线服务器系统版本一致,避免依赖不兼容)。
  1. 按步骤安装 dnf 及扩展插件(无 dnf 时执行前提命令)。
  1. 运行核心下载命令,指定目标包名(可同时下载多个,用空格分隔)。
  1. 将下载目录下的所有 RPM 文件复制到离线服务器。
  1. 离线服务器执行安装命令:rpm -ivh *.rpm --nodeps --force(批量安装所有包,忽略依赖顺序)。

四、关键优势:解决常规命令的核心缺陷

常规yumdownloader或dnf download不带全参数时,会出现两种问题:要么漏装强依赖,要么不下载弱依赖,导致离线安装时提示 “缺少 xxx 包”。

本文核心命令通过--alldeps+--setopt=install_weak_deps=True组合,强制抓取所有强依赖 + 弱依赖,再配合--resolve自动解析关联关系,从根源上解决 “包不完整” 的问题,是红帽系离线部署的最优方案。