当前位置: 首页 > news >正文

yum 3.4.3 离线部署实战:仅下载 10 个依赖包的 3 步离线安装方案

yum 3.4.3 离线部署实战:仅下载 10 个依赖包的 3 步离线安装方案

在企业级Linux运维中,离线环境下的软件部署一直是系统管理员面临的棘手问题。特别是在生产服务器、内网环境或安全隔离区域,网络访问受限的情况下,如何高效完成软件安装成为关键挑战。本文将深入探讨yum 3.4.3版本中--downloadonly选项的高级应用,提供一套完整的离线部署解决方案。

1. 离线部署的核心原理与准备工作

yum作为RPM包管理器,其离线部署能力主要依赖于三个核心功能:--downloadonly下载选项、localinstall本地安装命令以及createrepo仓库创建工具。这三者协同工作,构成了离线部署的技术基础。

为什么选择yum而非直接使用rpm?关键在于依赖关系自动处理。直接使用rpm安装时,管理员需要手动解决所有依赖包,这在复杂软件环境中几乎不可行。而yum的localinstall能够自动解析本地仓库中的依赖关系,大幅降低部署复杂度。

准备工作中需要特别注意:

  • 确保在线环境与离线环境的操作系统版本完全一致
  • 确认yum版本为3.4.3(可通过yum --version查看)
  • 准备足够的存储空间,建议预留至少5GB用于存放下载的rpm包

提示:使用df -h命令检查磁盘空间,特别是/var目录的可用空间,因为yum默认将包下载到/var/cache/yum。

2. 三步骤离线部署方案详解

2.1 精准下载依赖包

在联网机器上执行下载操作时,推荐使用以下优化命令:

mkdir -p /opt/offline_packages yum install --downloadonly --downloaddir=/opt/offline_packages \ --installroot=/tmp/empty_root \ --releasever=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)) \ gcc-c++ make cmake httpd mariadb-server postgresql \ python3-devel openssl-devel zlib-devel

参数解析:

  • --downloaddir:指定自定义下载目录,避免污染默认缓存
  • --installroot:使用空目录防止意外安装
  • --releasever:精确匹配当前系统版本

常见问题处理:

  • 若出现"没有可用软件包"错误,尝试先运行yum clean all && yum makecache
  • 对于"无法解析主机"错误,检查/etc/yum.repos.d/下的仓库配置

2.2 创建本地yum仓库

将下载的rpm包传输到目标机器后,需要建立本地仓库索引:

# 安装createrepo工具(在线环境) yum install -y createrepo # 在离线环境中创建仓库元数据 cd /opt/offline_packages createrepo --database --update .

仓库目录结构应如下:

/opt/offline_packages/ ├── repodata/ │ ├── filelists.xml.gz │ ├── other.xml.gz │ └── primary.xml.gz └── *.rpm

高级技巧:

  • 使用--workers=4参数加速大型仓库的元数据生成
  • 添加--checksum=sha256增强完整性校验
  • 对于多架构环境,使用--repo=myrepo创建独立仓库

2.3 离线安装与验证

配置目标机器的yum源指向本地仓库:

cat > /etc/yum.repos.d/local.repo <<'EOF' [local] name=Local Repository baseurl=file:///opt/offline_packages enabled=1 gpgcheck=0 EOF

安装软件包并验证:

yum --disablerepo=\* --enablerepo=local install gcc-c++ rpm -qa | grep gcc-c++

关键参数说明:

  • --disablerepo=\*:禁用所有远程仓库
  • --enablerepo=local:仅启用本地仓库
  • --nogpgcheck:如需跳过GPG验证(仅限可信环境)

3. 实战:10个核心依赖包离线部署

以下是经过验证的10个常用软件包及其依赖关系:

主包名称典型依赖数总下载大小关键依赖项
gcc-c++5-8~50MBlibstdc++-devel, glibc-devel
httpd4-6~3MBapr, apr-util
postgresql10-15~30MBlibicu, libxslt
python3-devel3-5~15MBpython3-libs, tkinter
openssl-devel2-3~5MBopenssl-libs, zlib
nginx3-5~2MBpcre, gd
docker-ce8-12~80MBcontainerd, libseccomp
nodejs6-10~25MBnpm, v8-engine
mysql-server12-18~150MBprotobuf, libaio
ansible5-8~10MBsshpass, paramiko

下载这些包的完整命令:

yum install --downloadonly --downloaddir=/opt/offline_packages \ gcc-c++ httpd postgresql python3-devel openssl-devel \ nginx docker-ce nodejs mysql-server ansible

4. 高级技巧与故障排除

依赖树分析工具:

repoquery --requires --resolve <package>

空间优化策略:

  • 使用--exclude=kernel*跳过内核相关包
  • 添加--archlist=x86_64,noarch限定架构
  • 通过yumdownloader替代完整安装命令下载特定包

常见错误解决方案:

  1. 依赖缺失错误

    yum deplist <package> | grep provider
  2. 版本冲突处理

    yum versionlock exclude <package>
  3. 仓库缓存更新

    yum clean all && yum makecache

性能优化建议:

  • 并行下载:yum-plugin-fastestmirror
  • 增量更新:createrepo --update
  • 仓库签名:gpg --gen-key+createrepo --gpgkey

对于大规模部署,可考虑将本地仓库配置为网络共享(NFS/HTTP),便于多台机器访问。在企业环境中,建议结合SaltStack或Ansible实现自动化批量部署。

http://www.cnnetsun.cn/news/3322486.html

相关文章:

  • AI测试学习路线图 2026版:从智能体到性能测试的6阶段进阶路径
  • Seekr高级搜索技巧:利用预定义字段和过滤器精准定位目标信息
  • (8)FPGA-CNN池化层
  • ARIA状态与属性实战教程:动态内容无障碍访问的完整解决方案
  • OpenWhispr未来路线图:即将推出的功能与改进预览
  • 5大核心功能重塑你的B站体验
  • Seekr插件系统:如何扩展和定制你的OSINT工具集
  • Python3操作MySQL由脚本小子迈向工程化开发
  • Python远程操作文件?这招不学,等于白学
  • 生产环境部署:immutable在微服务架构中的最佳实践
  • 0 基础入门React Native鸿蒙跨平台开发:速度单位换算器实战
  • pz 高级用法:如何利用自动导入功能简化复杂的数据处理任务
  • minimal-json并发处理最佳实践:线程安全与性能平衡指南
  • 5分钟解决字体焦虑:M+ FONTS让你的设计从此告别选择困难
  • Havenlon|历史中的执行控制(五):珍珠港——静默、误判与执行窗口的不可逆性
  • 99.3.智能门禁-人脸+播报-基于STM32单片机物联网设计【硬件+APP+云平台】
  • 订单自动化革命已爆发,你的团队还在人工核单?AI Agent订单处理效率提升470%,限时开放3套行业适配模板
  • 公开全项目关键词,豆包 AI + 人工双重验证护航:上市公司数字化无形资产占比 2007-2024
  • 从业务对象到可恢复编辑现场,完整理解 SAP Fiori 事务应用的 Draft 开发
  • CCManager与Devcontainer无缝集成:打造安全隔离的AI开发环境
  • 【RK3506】3、通过sysfs控制GPIO与PWM子系统
  • 土木工程论文降AI工具免费推荐:2026年土木工程毕业论文AIGC超标4.8元知网达标完整方案
  • 如何用嘎嘎降AI处理会计学论文:会计学毕业论文降AI4.8元知网达标完整教程
  • 如何用嘎嘎降AI处理土木工程论文:土木工程毕业论文降AI4.8元知网维普达标完整教程
  • 从HIS到PACS:积水潭贵州医院全业务国产化适配SpringBoot实战
  • Android Gradle 多模块重构:移动目录后 2 种 settings.gradle 配置修复方案对比
  • STM32F407寄存器点灯
  • 华为OD机试真题 新系统 2026-07-05 PythonJS 实现【二叉树两节点间的最小跳数】
  • 高性能单线程异步架构设计:ET框架核心技术深度解析与性能优化实战
  • maldev 终极指南:恶意软件开发技术深度解析与实践教程