openEuler 22.03 LTS SP3内网离线升级包制作与实操指南

发布时间:2026/10/22 23:56:15

openEuler 22.03 LTS SP3内网离线升级包制作与实操指南 简介面向 openEuler 22.03 LTS 系列运维与升级场景这份离线升级包专注于解决从 SP1 升级到 SP3 时依赖项难以收集的痛点。包内依赖已预先处理完毕并在全新安装的 openEuler-22.03-LTS-SP1 系统上完成验证适合内网隔离、无法访问外部仓库的服务器环境。压缩包总计 508 个文件大小约 389MB其中包含 501 个 rpm 软件包以及 sqlite 元数据库、xml 元数据等仓库索引文件可配合 dnf/yum 直接搭建本地离线源。配套升级步骤说明与仓库结构相结合使管理员能按批次完成内核、固件及基础组件的更新。目前已有 906 人学习下载前可参考社区验证情况。整个包覆盖 kernel、linux-firmware、libicu、桌面图标主题等关键组件升级后可获得 SP3 版本的内核与系统库支持显著降低逐一下载依赖的运维成本。 前一阵有个客户找到我机房里有几台运行openEuler 22.03 LTS SP2的服务器需要升级到SP3版本但整个内网完全隔离不能访问外网镜像源。这种离线环境下的系统升级听起来不算难但真做起来坑不少。最核心的问题就是在没有外网的情况下怎么把几十个依赖包安全、完整地装上去。这篇文章就围绕openEuler-22.03-LTS-SP3离线升级包这件事把从环境检查、仓库配置到执行升级、排错收尾的完整流程捋一遍希望对同样在做内网运维的朋友有帮助。1. 项目背景为什么一定要做离线升级包1.1 离线场景的典型画像需要用到离线升级包的环境一般有三个典型特征网络隔离严格服务器所在网段不能访问公网甚至连内网软件源都没有建立生产环境默认断外网。安全合规要求高银行、政务、电力这些行业对变更操作有严格审批流程系统补丁必须走离线导入流程。版本迭代有硬性要求openEuler 22.03 LTS是长期支持版本SP3这个服务增强版包含安全补丁、bug修复和部分新硬件支持。从SP2升到SP3并不是简单的小版本交替它涉及内核、glibc、systemd等底层组件的整体更新在线下用dnf一条命令就能搞定的事离线环境就必须把整条依赖链都考虑清楚。1.2 离线升级包到底解决什么问题离线升级包本质上是把在线仓库“搬”到内网。具体来说你要先在一个能联网的机器或者直接从官方镜像站下载好SP3对应的全部rpm包和仓库元数据然后刻盘或者拷贝到内网服务器上再通过本地仓库方式让dnf完成升级。这样做的好处有三个不依赖外网一次性把升级所需的rpm包全部准备好。可审计每个包都是手工下载并校验过的满足变更审批要求。可重复同一套离线包可以在多台同架构服务器上复现升级过程不用每台都单独处理网络问题。但它的麻烦也很明显依赖关系完全靠人工整理漏一个包就会导致升级失败。所以后面要讲的目录组织和仓库配置步骤才是整个离线升级的核心。2. 动手前的环境盘点与准备工作先说一句在真正执行升级前信息收集越充分后期踩的坑越少。我见过太多人拿到升级包就往上冲结果升到一半发现架构不对、磁盘空间不够甚至系统直接起不来。2.1 确认当前系统版本与架构执行升级前先确认目标机器的现状# 查看当前系统版本 cat /etc/openEuler-release # 查看内核版本 uname -r # 查看系统架构 uname -m确认输出结果是openEuler 22.03 LTS SP2、架构是x86_64还是aarch64。这一步非常关键升级包的rpm包是按架构区分的x86_64的包不能装在aarch64机器上下载时一定要选对架构。2.2 升级前必须做的检查清单离线升级比在线升级危险因为一旦依赖断掉系统可能停留在中间状态。我建议按照这个清单逐项检查检查项操作命令说明当前版本cat /etc/openEuler-release确认基线是SP2架构uname -mx86_64 / aarch64磁盘空间df -h / /boot /var/boot至少预留200MB/var预留5GB以上内存free -h建议不低于2GBdnf事务需要内存SELinux状态getenforce记录当前状态升级后可能变化是否已配置其他源ls /etc/yum.repos.d/防止多个源冲突特别强调两个点/boot空间。内核升级会在/boot写入vmlinuz和initramfs文件SP3升级后一般会装新内核旧内核保留。如果/boot分区只有一两百兆很容易写满导致grub生成失败。建议提前用du -sh /boot看下紧张就先清掉旧的kernel。dnf历史记录。升级前执行dnf history list看一下有没有之前的手动装包记录这些包如果没有在官方仓库里升级时可能触发依赖冲突。2.3 工具准备离线升级包的制作和使用过程主要依赖两类工具工具用途在哪执行dnf执行升级事务、做依赖检查目标服务器createrepo_c生成本地仓库元数据离线包制作机wget / curl下载rpm包有外网的机器rsync / scp拷贝离线包到内网传输通道rpm -ivh极特殊情况下手动装包目标服务器如果离线包里已经带了repodata目录那目标服务器上就不需要createrepo直接配repo文件就能用。如果包是自己用rpm -qa拉出来的没有repodata那就得在目标机上装createrepo并重新生成仓库元数据。3. 离线升级包的目录结构与仓库配置3.1 包内到底有什么一份标准的openEuler 22.03 LTS SP3离线升级包通常包含如下目录结构openEuler-22.03-LTS-SP3-x86_64-offline/ ├── BaseOS/ │ ├── Packages/ │ │ ├── kernel-5.10.0-...rpm │ │ ├── glibc-2.34-...rpm │ │ └── ... │ └── repodata/ │ ├── repomd.xml │ ├── filelists.xml.gz │ └── primary.xml.gz ├── EPOL/ │ ├── Packages/ │ └── repodata/ ├── update/ │ ├── Packages/ │ └── repodata/ └── README.md这里最核心的是repodata目录。dnf解析仓库时会先读repomd.xml获取元数据文件列表再解析primary.xml.gz获取每个包的名字、版本、依赖关系。可以说repodata就是仓库的“索引”没它dnf根本不认这个目录。如果你下载的是官方everything ISO里面已经带了完整的BaseOS和EPOL仓库如果是自己拼的离线包就需要用createrepo生成repodata# 在离线包根目录执行 createrepo_c --workers 4 --outputdir ./BaseOS/repodata ./BaseOS/Packages createrepo_c --workers 4 --outputdir ./update/repodata ./update/Packages在执行createrepo之前要注意Packages目录下只放官方rpm包不能用rpmbuild打出来的私有包混进去否则依赖解析会出问题。3.2 配置本地repo源离线包拷贝到内网机器后我们用一个统一目录放它比如/opt/openeuler-offline。然后在/etc/yum.repos.d/下新建独立的repo文件避免跟系统自带的源混在一起vim /etc/yum.repos.d/openEuler-offline.repo内容如下[offline-BaseOS] nameopenEuler 22.03 SP3 BaseOS Offline baseurlfile:///opt/openeuler-offline/BaseOS enabled1 gpgcheck0 [offline-update] nameopenEuler 22.03 SP3 Update Offline baseurlfile:///opt/openeuler-offline/update enabled1 gpgcheck0这里有个细节gpgcheck0在离线内网环境是常用的做法因为rpm包的GPG公钥不一定提前导入。如果你们安全基线要求必须校验签名那可以先把openEuler公钥导入到RPM数据库rpm --import /opt/openeuler-offline/RPM-GPG-KEY-openEuler然后把repo配置改成gpgcheck1。源配好后执行dnf clean all dnf makecache验证仓库可用性。如果执行完能看到仓库元数据缓存成功说明离线包结构没问题。3.3 升级前依赖预检我强烈建议正式升级前先做一次模拟升级。dnf提供了--downloadonly和--assumeno两个特别好用的参数# 模拟升级只做测试不实际安装 dnf check-update --disablerepo* --enablerepooffline-* # 执行升级但自动回答否只看事务 dnf update --disablerepo* --enablerepooffline-* --assumeno--assumeno会完整解析依赖列出要安装、要升级的所有包但不会真的执行。如果这一关报依赖错误千万不要往下走先解决依赖问题。常见的依赖错误就两类一是离线包里的包版本不全二是系统里有第三方源装过的包版本比仓库里的更高。第一类问题要回到制作机上补包第二类问题可以考虑调整升级策略比如--setoptoffline-BaseOS.excludexxx排除冲突包但这属于应急手段不建议常规使用。4. 核心升级实操从repo配置到系统重启4.1 执行离线升级命令预检通过后正式执行升级dnf update --disablerepo* --enablerepooffline-* -y--disablerepo*先禁用所有仓库再单独启用离线仓库确保dnf只从离线包取包。如果你机器上保留了在线源配置这一步能防止dnf偷偷去外网抓依赖。整个升级过程可能持续十几分钟到半小时取决于机器性能和需要更新的包数量。执行期间不建议中断实在要停就按CtrlC但dnf事务是原子性的中断后重新执行一般能恢复不放心就查一下dnf history list。升级完成后建议再执行一次dnf update --disablerepo* --enablerepooffline-* -y确认输出“No packages to update”才算真正升完。4.2 内核与引导重启前必须检查的事情SP2升SP3最大的变化就是内核版本更新。升级过程中如果提示kernel包被更新那么重启前有几个点必须检查grub默认启动项。查看/boot/grub2/grubenv里的saved_entry确保指向新内核。可以执行grub2-editenv list查看grub2-editenv list # 输出类似 saved_entryopenEuler (5.10.0-xxx) 22.03 LTS SP3默认内核版本。用grubby --default-kernel查看手动改默认内核用grubby --set-default/boot/vmlinuz-5.10.0-xxx。initramfs是否生成。正常情况下安装kernel包时mkinitrd会自动跑但如果/boot空间不足或脚本出错可能没有生成initramfs。检查一下/boot/下是否有对应新内核的initramfs文件没有就手动执行dracut -f /boot/initramfs-$(uname -r).img $(uname -r)检查完毕再重启服务器。如果用的VMware虚拟机重启前建议先做一次快照物理机则确认BMC/IPMI可用方便出问题时远程介入。4.3 升级后的验证与收尾重启完成后第一件事就是验证版本cat /etc/openEuler-release # 应输出 openEuler 22.03 (LTS-SP3) uname -r # 内核版本应与升级包内kernel版本一致然后检查几个关键服务状态systemctl status sshd network NetworkManager网络服务在升级后偶尔会出问题因为net-tools或NetworkManager的版本变化可能导致配置兼容性问题。确认网络正常后再检查核心库和工具链ldd --version | head -1 # glibc版本应与SP3一致 dnf repolist # 确认离线源状态正常最后是收尾工作清理旧内核可选但建议。用package-cleanup --oldkernels --count2如果没有这个命令就dnf remove指定旧内核包保留两个最近的内核用于回滚。确认升级包可以卸载离线升级后所有rpm包都进了系统rpm数据库离线包目录本身不影响运行可以留着做备用源也可以删掉腾空间。写变更记录记下升级时间、升级前版本、升级后版本、更新的内核包号、是否有异常。5. 常见问题与排错思路5.1 升级中途依赖冲突这是离线升级碰到的最高频问题。典型表现是Error: package kernel-5.10.0-xxx requires xxx, but none of the providers can be installed这个报错说明离线包里缺包或者包版本不对。处理方式# 查看具体冲突 dnf update --disablerepo* --enablerepooffline-* --assumeno 21 | grep -A 5 Error # 如果是缺包单独下载补齐 # 然后把新rpm包拷入Packages目录 cp kernel-extra.rpm /opt/openeuler-offline/update/Packages/ cd /opt/openeuler-offline/update createrepo_c --update .createrepo_c --update可以增量更新元数据不用重新扫全部包速度会快很多。5.2 /boot空间不足前面提过一次这里细说。报错一般是installing package kernel-xxx needs 110MB on the /boot filesystem处理办法# 查看/boot下所有文件 ls -lh /boot/ # 删除旧内核和旧initramfs rm -f /boot/vmlinuz-5.10.0-旧版本 rm -f /boot/initramfs-5.10.0-旧版本.img rm -f /boot/System.map-5.10.0-旧版本 rm -f /boot/config-5.10.0-旧版本删完再执行dnf update。如果/boot是独立分区且很小建议后续做LVM扩容否则每次内核升级都提心吊胆。5.3 升级后网络异常SP2升SP3后网络服务异常大多跟NetworkManager或ifcfg文件有关。原因通常是NetworkManager版本更新后配置文件格式或默认行为变了。排查思路# 看网络服务状态 systemctl status NetworkManager journalctl -u NetworkManager -n 50如果是NetworkManager起不来可以临时用systemd-networkd或直接手动配置IP顶一下。对于纯静态IP场景我的经验是升级前先把/etc/sysconfig/network-scripts/ifcfg-*备份一份出了问题能立刻对照。5.4 问题速查表现象可能原因排查命令解决办法dnf不识别离线源repodata缺失ls /opt/openeuler-offline/BaseOS/repodata执行createrepo_c生成依赖冲突包版本不完整dnf update --assumeno补包后createrepo_c --update/boot写满旧内核残留df -h /boot清理旧内核文件升级后网络不通NetworkManager配置变化systemctl status NetworkManager恢复配置备份或手动配IP重启后内核未变grub默认项未更新grubby --default-kernelgrubby --set-default设置新内核升级中断网络或人为中断dnf history list重新执行dnf updatednf会接续事务6. 离线升级包的延伸玩法6.1 一台离线源供全网使用手工把离线包拷贝到每台机器效率太低。实际的离线环境我更推荐这样操作找一台内网服务器把离线包放到/var/www/html/openeuler-offline或用Nginx共享然后其他机器配repo时用baseurlhttp://内网IP/openeuler-offline/BaseOS。这样整个内网的机器都能同时用来升级而且后续打补丁只需更新这一台源服务器。6.2 顺带解决软件离线安装离线源还可以当本地软件仓库用。比如内网机器要装Docker、Miniconda、vsftpd这类常见软件如果离线包里没有这些包可以在一台有外网的机器上用dnf download把包拉下来再补充到离线源的Packages目录并更新repodata。这样整个内网就都能dnf install了不用一台台传rpm包。6.3 新机器离线装系统如果你手里还有openEuler 22.03 LTS SP3的everything ISO那配合离线包就更顺手。用VMware新建虚拟机或物理服务器安装时直接挂载ISO完成基础系统安装装完再用离线源执行dnf update补齐补丁。整个流程不需要外网适合批量部署同版本系统的场景。写在最后做离线升级这件事最耗费精力的不是升级动作本身而是提前想清楚整个依赖链和回滚方案。我的习惯是拿到任何离线升级包先在测试环境完整走一遍流程记录每个阶段的输出和耗时然后再去生产环境执行。这也是为什么我整理的这套步骤看起来偏保守——因为生产环境里稳定永远比速度重要。最后再分享一个小建议离线升级包一旦制作完毕建议在源服务器上用md5sum生成一份校验清单拷贝到内网后先校验一次再使用防止传输过程中文件损坏。这个习惯帮我避免过好几次“拷贝损坏导致升级失败”的低级事故。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/10/21 5:16:49

基于FastAPI+Vue3+微信小程序的全栈图书馆管理系统实战

如果你正在寻找一个完整的、可运行的Python毕业设计项目,或者想学习如何用现代技术栈(FastAPI Vue3)构建一个前后端分离的微信小程序应用,那么这篇文章就是为你准备的。很多同学在做毕业设计或学习全栈开发时,常常面临…

2026/10/21 19:57:43

影刀RPA网页自动化实战:从元素定位到流程编排的完整指南

你好,我是专注于RPA与自动化技术分享的博主。在日常工作中,无论是数据采集、系统录入还是日常办公,网页操作自动化都是最高频的应用场景之一。很多刚接触影刀RPA的朋友,在尝试自动化网页时,常常会遇到元素定位不准、页…

2026/10/22 15:53:34

GD32 USB鼠标例程深度解析:从HID协议到枚举调试实战

简介:面向 GD32 微控制器开发者的 USB 触控鼠标完整例程包,基于 USB OTG 控制器和电容式触摸传感器实现鼠标模拟,涵盖 USB 协议配置、枚举、端点管理、触控坐标读取与鼠标事件上报等关键环节,适合嵌入式入门及有一定基础的开发者参…

2026/10/23 14:01:38

多星发射技术:商业航天的成本革命与核心突破

1. 多星发射技术的战略价值当一枚火箭同时将数十颗卫星送入预定轨道时,这不仅仅是简单的数量叠加。现代航天领域最显著的技术跃迁之一,就是多星发射能力从国家战略层面向商业市场的延伸。传统单星发射模式下,每千克载荷的运输成本高达数万美元…

2026/10/23 14:01:38

2026年期货量化工具评测与选型指南

1. 期货量化工具评测背景与价值2026年的期货市场已经进入算法交易占比超过80%的时代,量化工具的选择直接决定了交易团队的竞争力。这次评测我们耗时6个月,对市面主流的27款量化平台进行了从回测精度到实盘稳定性的全流程检验。有个有趣的发现&#xff1a…

2026/10/23 14:01:38

JSP+Servlet学生信息管理系统:手写MVC、跑通排错与二次开发

简介:面向Java Web初学者与课程设计需求者的简单学生信息管理系统源码包,围绕学生自助注册、教师集中管理学生信息这一典型场景展开,可用于课程设计参考、Servlet入门练习与小型信息管理原型搭建。压缩包共2个文件,以zip源码包和h…

2026/10/23 14:01:37

ASPDF COM组件在Classic ASP中生成PDF的实战指南

简介:ASPDF 是一款专为 Classic ASP 开发者打造的开源 PDF 生成工具,将 PHP 领域广受认可的 FPDF 库核心功能完整移植至 VBScript/JScript 环境,解决了传统 ASP 项目在 IIS 平台上缺乏原生 PDF 生成功能的长期痛点。适用于维护老旧企业系统、…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑