麒麟(Kylin)操作系统补丁下载、打包与升级工具集。
| 脚本 | 用途 |
|---|---|
downloadKylinPatch.sh |
下载系统更新包并打包成 KylinUpgrade*.tar.gz |
getLocalRepo.sh |
从安装源下载所有包,去重后生成 YUM 本地仓库 |
upgradKylin.sh |
用 KylinUpgrade*.tar.gz 升级系统 |
downloadPatchByDate.sh |
按日期筛选并补充下载源站上的 RPM |
mergeAndUpgrade.sh |
把补充下载的 RPM 合并进旧工作目录并重新升级 |
# 1. 下载补丁并打包(root)
sudo ./downloadKylinPatch.sh
# 产物: /opt/KylinUpgrade<arch>-<version>-<date>.tar.gz
# /opt/KylinUpgrade<arch>-<version>-<date>.tar.gz.md5
# /opt/KylinUpgrade<arch>-<version>-<date>.tar.gz.info
# 2. 在目标机器上升级(root)
sudo ./upgradKylin.sh KylinUpgrade<arch>-<version>-<date>.tar.gz# 1. 补充下载某日期之后的所有 rpm
sudo ./downloadPatchByDate.sh \
https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/updates/x86_64/Packages/ \
20260801 \
/opt/Kylinpatch/supplement
# 2. 合并到上次升级保留的工作目录,再升级
sudo ./mergeAndUpgrade.sh --packages-dir /opt/Kylinpatch/supplementsudo ./mergeAndUpgrade.shsudo ./mergeAndUpgrade.sh \
--packages-dir /opt/Kylinpatch/supplement \
--from-targz /opt/KylinUpgradeX86-2303-260907.tar.gz下载系统可用的所有更新 RPM,打包成 tar.gz。
- 自动从
/etc/.kyinfo提取架构、版本号,生成文件名 - 通过
yum upgrade --downloadonly下载到/opt/Kylinpatch/packages/ - 下载完整性校验:
- 预演模式
--assumeno解析预期包数量与下载大小 - 实际下载完成后再做对比,包数或大小不符时立即报错退出
yum返回非 0(如Curl error 28超时导致部分包失败)时直接中断,不再打包残缺包
- 预演模式
- 网络容错:调整
timeout=300 retries=10 minrate=100减小超时误判 - 输出文件:
KylinUpgrade<arch>-<version>-<date>.tar.gz补丁包KylinUpgrade<arch>-<version>-<date>.tar.gz.md5MD5 校验文件KylinUpgrade<arch>-<version>-<date>.tar.gz.info系统信息与事务摘要
从 YUM 源站按日期筛选并下载 RPM。
./downloadPatchByDate.sh <源URL> <起始日期(yyyymmdd)> [输出目录]- 抓取源站目录索引,解析
DD-Mon-YYYY HH:MM时间戳 - 仅下载
日期 >= 起始日期的 RPM(包含起始日) curl --retry 3 --retry-delay 5 --retry-all-errors,对网络抖动友好- 原样使用索引里的
href(含%2B等编码),无需手工转义 - 在输出目录生成
download_manifest_<起始日期>.txt清单 - 下载失败数 > 0 时 exit 1
把补充下载的 RPM 合并进工作目录并升级。
sudo ./mergeAndUpgrade.sh [选项]
选项:
--packages-dir <目录> 把该目录下的 *.rpm 合并进 /opt/Kylinpatch/packages
--from-targz <tar.gz> 工作目录不存在时从 tar.gz 解压
--keep-workdir 0|1 升级后是否保留工作目录 (默认 1 保留)
-y, --yes 跳过最终确认
-h, --help 查看帮助- 默认复用
/opt/Kylinpatch(上次升级保留的目录) - 用
cp -n合并 RPM(同名跳过,不覆盖) - 自动
createrepo重建repodata/ - 检查 RPM 架构兼容性,与
upgradKylin.sh一致 - 备份原 yum 源到
/etc/yum.repos.d/backup_<时间戳>/ - 写
/etc/yum.repos.d/local.repo指file:///opt/Kylinpatch - 执行
yum -y update,完成后询问是否重启
完整升级流程(包含 MD5 校验、解压、createrepo、yum update)。详见脚本内注释。
从源站下载所有 RPM 并生成 YUM 本地仓库(按包名去重保留最新版)。适合离线场景。
Kylinpatch/
├── downloadKylinPatch.sh # 主下载打包脚本
├── downloadPatchByDate.sh # 按日期补充下载
├── mergeAndUpgrade.sh # 合并并升级
├── upgradKylin.sh # 升级
├── getLocalRepo.sh # 全量下载并生成 repo
└── README.md
升级运行时产物(默认在 /opt/ 下):
/opt/
├── Kylinpatch/ # 工作目录(可保留用于下次增量升级)
│ ├── packages/ # 所有 RPM
│ └── repodata/ # createrepo 元数据
└── KylinUpgrade<arch>-<version>-<date>.tar.gz # 打包产物
Q:网络不稳导致部分包下载失败,现在怎么办?
A:downloadKylinPatch.sh 现在会在失败时直接退出并报错,不会再生成残缺补丁包。重新运行脚本即可,已下载的包会从 yum 缓存读取。
Q:上次升级后能不能直接再补一些包升级?
A:可以。保留 /opt/Kylinpatch 目录,然后用 downloadPatchByDate.sh 补充下载,最后跑 mergeAndUpgrade.sh --packages-dir <补充包目录>。
Q:升级失败了怎么回滚 yum 源?
A:合并升级备份在 /etc/yum.repos.d/backup_<时间戳>/,恢复命令:
sudo mv /etc/yum.repos.d/backup_<时间戳>/*.repo /etc/yum.repos.d/Q:能不能在不同架构间复用?
A:不能。mergeAndUpgrade.sh 会校验 RPM 架构与 /etc/.kyinfo 中声明的架构是否匹配。