Linux 离线安装软件包下载手册(yum / dnf / apt)
适用场景:内网或离线服务器无法直接联网安装软件时,先在联网机器上用包管理器把软件包及其依赖下载到指定目录,再拷贝到目标机离线安装。
1. 适用前提
下载机(有网)与目标机(离线)需同一发行版、同一大版本、同一 CPU 架构,否则依赖对不上。
# 确认下载机与目标机架构一致(x86_64 / aarch64)
uname -m
# 查看系统发行版版本
cat /etc/os-release
2. CentOS 7 下载(yum)
CentOS 7 的 yum 不自带 downloadonly 功能,需先安装插件(每台机器只需一次)。
# 1. 安装 downloadonly 插件
sudo yum install -y yum-plugin-downloadonly
# 2. 下载软件包及全部依赖到指定目录(目录不存在会自动创建吗?不会,先建好)
sudo mkdir -p /指定/下载/目录
sudo yum install --downloadonly --downloaddir=/指定/下载/目录 <软件包名>
3. CentOS 8 / 9、RHEL 8+ 下载(dnf)
dnf 自带 downloadonly 功能,无需额外插件。
sudo dnf install --downloadonly --downloaddir=/指定/下载/目录 <软件包名>
4. Debian / Ubuntu 下载(apt)
apt 使用 --download-only 参数,默认下载到 /var/cache/apt/archives/,可用 -o 参数指定目录。
# 1. 默认缓存目录下载(后续到 /var/cache/apt/archives/ 取包)
sudo apt-get install --download-only <软件包名>
# 2. 指定下载目录(目录必须提前创建,否则报错)
sudo mkdir -p /指定/下载/目录
sudo apt-get install --download-only -o Dir::Cache::archives="/指定/下载/目录" <软件包名>
5. 包已安装时下载不到(重点坑)
坑:软件包在当前机器已安装时,yum/apt 会提示"已安装/已是最新"而跳过下载,下载目录为空。 解决办法是强制重下或用专用工具:
# yum 系:改用 yumdownloader(--resolve 连同依赖一起下载)
sudo yum install -y yum-utils
sudo yumdownloader --resolve --destdir=/指定/下载/目录 <软件包名>
# dnf 系等价命令
sudo dnf download <软件包名> --resolve --destdir=/指定/下载/目录
# apt 系:加 --reinstall 强制重新下载
sudo apt-get install --reinstall --download-only -o Dir::Cache::archives="/指定/下载/目录" <软件包名>
6. 拷贝到目标机
把下载目录打包传输(scp / U盘均可),目标机解压后即可离线安装。
# 下载机打包
tar czf pkgs.tar.gz /指定/下载/目录
# 传输(示例 scp)
scp pkgs.tar.gz user@目标机IP:/tmp/
# 目标机解压
tar xzf /tmp/pkgs.tar.gz
7. 目标机离线安装
# CentOS 7:localinstall 自动处理目录内依赖
sudo yum localinstall /下载目录/*.rpm
# CentOS 8 / 9
sudo dnf install /下载目录/*.rpm
# Debian / Ubuntu:apt 安装本地 deb 会自动解析目录内依赖
cd /下载目录 && sudo apt install ./*.deb
# 兜底方案(不解析依赖,缺依赖会直接报错,需自行保证包齐全)
sudo rpm -Uvh /下载目录/*.rpm
sudo dpkg -i /下载目录/*.deb
8. 常见问题排查
- yum 报
unknown option --downloadonly→ CentOS 7 未装插件,先执行yum install -y yum-plugin-downloadonly - apt 提示"已是最新版本 / Nothing to download" → 本机已装同版本,见第 5 节加
--reinstall - yum 提示"包已安装"、目录里没有 rpm → 改用
yumdownloader --resolve(见第 5 节) - 离线机安装报缺依赖 → 依赖没下全。最稳做法:在全新系统或干净容器里重新执行下载,能拉全全部依赖
- 架构不一致导致装不上 →
uname -m确认下载机与目标机同为 x86_64(或同为 aarch64)
总结:核心就两条命令——yum 系用
--downloadonly --downloaddir=,apt 系用--download-only;下载机与目标机同系统同架构;包已装过时换yumdownloader --resolve或加--reinstall强制重下。记好这三条即可顺畅完成离线软件包准备。
浙公网安备 33010602011771号