Linux离线安装软件的核心是在有网机器上一次性下载目标软件及其完整依赖树,再传输至无网机器安装;关键在于环境匹配(系统版本、CPU架构)和依赖完整性,而非仅拷贝单个包。

Linux 离线安装软件,核心是“在有网机器上把目标软件及其所有依赖一次性下载全,再拷到无网机器上装”。关键不在于单个包,而在于完整依赖树。不同包管理器操作逻辑不同,但思路一致:查依赖 → 下载包(含依赖)→ 传输 → 安装。
CentOS/RHEL(yum/dnf 系):用 yumdownloader 或 --downloadonly
推荐优先使用 yumdownloader --resolve,它能自动递归解析并下载全部依赖:
- 先装工具:
yum install -y yum-utils - 建目录并下载(例如装 Docker 编译依赖):
mkdir docker-deps && cd docker-deps && yumdownloader --resolve docker-ce docker-ce-cli containerd.io - 或用原生命令(适合已知包名且系统较老):
yum install --downloadonly --downloaddir=./docker-deps docker-ce - 离线机上安装:
rpm -Uvh *.rpm(基础方式),更稳妥用:yum localinstall *.rpm -y(yum 自动处理依赖顺序)
Ubuntu/Debian(apt 系):用 apt download + apt-rdepends
apt-get download 只下本体,必须配合依赖分析工具才能拿全:
- 安装辅助工具:
sudo apt install apt-rdepends - 生成完整依赖列表并下载:
apt-rdepends build-essential | grep "^[a-zA-Z]" | xargs apt-get download - 或分步更可控:
apt-get install --print-uris --yes build-essential | grep "^'" | cut -d"'" -f2 > urls.txt && wget -i urls.txt - 离线机上安装:
sudo dpkg -i *.deb;若报依赖错误,再补运行:sudo apt-get install -f(需提前把所有 deb 放同目录)
通用注意事项:版本、架构、顺序不能错
离线安装失败,90% 出在环境不匹配:
- 系统版本必须一致:CentOS 7 的 rpm 不能装在 CentOS 8 上;Ubuntu 22.04 的 deb 不兼容 20.04
-
CPU 架构必须匹配:x86_64 包不能用于 aarch64 机器,下载前用
uname -m确认 -
安装顺序有影响:rpm/dpkg 不自动排序,建议用
yum localinstall或apt-get install ./xxx.deb替代裸调 rpm/dpkg,让包管理器接管依赖解析 - 下载后建议打包压缩:
tar -cf deps.tar.gz *.rpm,避免传输遗漏单个文件
其他场景补充:Python / Docker / 源码类
不是所有软件都走系统包管理器:
-
Python 项目:联网机执行
pip freeze > req.txt && pip download -d ./pypi -r req.txt;离线机用pip install --no-index --find-links ./pypi -r req.txt - Docker CE:官网提供 .tgz 静态二进制包,解压即用,无需依赖;但 systemd 服务文件和用户组需手动配置
-
源码编译类(如 nginx):不推荐离线编译,除非万不得已;若必须做,先用
yum deplist nginx查清所有 build 依赖(如 pcre-devel、openssl-devel),按前述方法离线装好开发库再传源码


















