在无网络Linux服务器上安装RPM包,须先在同版本联网机用dnf download或yum downloadonly下载主包及全部依赖至本地目录,再拷贝到离线机执行dnf install .rpm或yum localinstall .rpm完成安装。

在没有网络连接的Linux服务器上安装RPM包,关键不是单纯用rpm -ivh硬装,而是提前把软件包及其所有依赖一并打包带过去。直接复制单个RPM往往失败,因为缺少依赖库或工具链;而yum-plugin-downloadonly插件能帮你精准拉取完整依赖树,离线环境也能顺利安装。
确认系统是否已启用BaseOS/AppStream仓库(RHEL/CentOS 8+ 或 Rocky/AlmaLinux)
离线下载依赖的前提是本地YUM/DNF源配置正确、可用。若系统未联网,需先在另一台同版本、同架构的联网机器上操作:
- 运行
dnf repolist或yum repolist查看是否列出baseos和appstream(或base、updates等)仓库 - 若仓库被禁用,编辑
/etc/yum.repos.d/*.repo文件,将对应仓库的enabled=0改为enabled=1 - 执行
dnf makecache更新元数据缓存(此步需联网,仅在有网机器上做)
使用dnf/yum downloadonly插件批量下载RPM及依赖
该插件不安装软件,只下载RPM文件到指定目录,适合离线场景:
- RHEL 8+/CentOS 8+ / Rocky/AlmaLinux 推荐用 DNF:
dnf install yum-plugin-downloadonly(如未预装)dnf download --downloadonly --downloaddir=/tmp/myrpm nginx - CentOS 7/RHEL 7 使用 YUM:
yum install yum-plugin-downloadonlyyum install yum-plugin-downloadonly(确保插件已装)yum downloadonly --downloaddir=/tmp/myrpm nginx - 若提示“no plugin match”,说明插件名可能为
downloadonly(CentOS 7)或已集成进DNF(RHEL 8+无需额外安装) - 下载目录
/tmp/myrpm中会包含主包(如nginx-1.20.1-10.el8.x86_64.rpm)及其全部依赖RPM(如openssl-libs、systemd-libs等)
离线服务器上安装:优先用dnf/yum localinstall而非rpm -ivh
直接rpm安装易报错“Failed dependencies”。应让包管理器自动解析本地RPM间的依赖关系:
- 将下载好的整个目录(如
/tmp/myrpm/)拷贝到目标离线机(U盘、内网SCP等) - 进入该目录,执行:
dnf install *.rpm(DNF自动处理依赖顺序)
或yum localinstall *.rpm(YUM方式,兼容性更好) - 若提示缺失GPG密钥,可临时跳过验证(不推荐生产环境):
dnf install --nogpgcheck *.rpm - 安装完成后,用
dnf list installed | grep nginx确认是否成功
补充技巧:生成依赖列表或递归下载指定包组
当不确定要装什么、或需批量部署多个服务时:
- 查依赖但不下载:
dnf repoquery --requires --resolve nginx - 下载整个包组(如开发工具集):
dnf groupdownload "Development Tools"(需DNF 4.7+) - 导出已安装包列表供复现:
dnf list installed > pkg-list.txt,在另一台机上用dnf download $(cat pkg-list.txt | awk '{print $1}') --downloaddir=.批量获取(注意过滤@开头的源标识行)


















