离线环境怎么装包
内网机器常常不能直接访问软件源,标准做法是「在联网机上取包、拷进内网再装」:联网机用下载插件把目标包及它依赖的所有 rpm 一并拉到本地目录,打包拷进内网后再用包管理器从本地文件安装。这样做的好处是依赖在同一批文件里一次解决,不会出现装到一半提示缺依赖的尴尬。做法本身不复杂,成败的关键在于两端基线一致,以及依赖是否拉全。
基本信息
| 下载工具 | 包管理器提供的下载子命令,由插件包提供 |
|---|---|
| 依赖处理 | 按依赖关系递归下载,可含全部可选依赖 |
| 本地安装 | 指向本地 rpm 文件安装,仍可解析依赖 |
| 抽查手段 | 对单个 rpm 文件查询其声明的依赖 |
| 前提条件 | 联网机与离线机发行版及补丁级别一致 |
| 进阶做法 | 批量同步整个仓库到内网,自建内网源 |
典型使用场景
- 内网服务器补装组件:把包与依赖一起带进去一次性装好
- 版本锁定交付:按适配清单下载指定版本,避免现场取到新版本
- 应急修复:故障机上缺某个工具时快速取包
- 批量部署:把整套依赖打包做成标准离线包分发给多台机器
- 自建内网源:把仓库整体同步到内网,长期解决取包问题
- 基线核对:下载前确认两端版本与架构一致
离线包准备(联网机)
离线包准备(联网机)
dnf install -y 'dnf-command(download)' # 安装下载插件
mkdir -p /tmp/offline && cd /tmp/offline # 准备存放目录
dnf download --resolve --alldeps nginx # 下载包及其全部依赖
ls *.rpm | wc -l # 核对文件数量
tar czf nginx-offline.tgz *.rpm # 打包便于拷贝
rpm -qpR nginx-*.rpm | head # 抽查依赖是否已在清单中内网安装
内网安装
tar xzf nginx-offline.tgz && cd /tmp/offline # 解包
ls *.rpm | wc -l # 与联网机数量核对
dnf install -y ./*.rpm # 一次性安装全部文件
dnf list installed | grep nginx # 核对安装结果
rpm -qa | grep -c nginx # 二次核对做法对照
| 做法 | 适用场景 | 注意点 |
|---|---|---|
| 按包下载依赖 | 少量包、单次交付 | 依赖必须拉全,两端基线一致 |
| 整体仓库同步 | 长期内网环境 | 需要额外的存储与同步周期 |
| 本地文件安装 | 目标机无外网 | 文件顺序不影响解析 |
| 依赖抽查 | 交付前自检 | 对单个文件查询声明的依赖 |
| 哈希校验 | 安全交付 | 确认文件未在传输中损坏 |
下载时依赖关系是按联网机的环境解析的:如果联网机与离线机的发行版版本或补丁级别不同,解析出的依赖组合未必适用于离线机,安装时仍可能缺依赖。所以下载前应确认两端基线一致,最稳妥的做法是在与目标机相同版本的机器上准备离线包。
靠一次下载解决长期问题的场景,可以同步整个仓库到内网并自建软件源,让内网机器像正常环境一样取包与更新。这种方式前期投入更大,但省去了每次交付都手工准备依赖的重复劳动。