升级前评估
check-update 是变更窗口前的体检命令:它只会告知有哪些包可以升级,不会动系统。配合 updateinfo 能看出哪些更新带安全公告、对应哪些编号,从而决定是全量升级、只装安全更新,还是把内核等基础组件排除在本次窗口之外。把这些信息先收集齐再动手,是让升级可控的关键一步。
基本信息
| 用途 | 列出可升级的包、查看安全公告、按范围执行升级 |
|---|---|
| 语法 | dnf check-update;dnf updateinfo list|info;dnf upgrade [--security|--exclude=...] |
| 适用平台 | RHEL 8 及以上、CentOS Stream、Fedora、Rocky、Alma;CentOS 7 用 yum 同名子命令 |
| 安全性 | check-update 与 updateinfo 都是只读操作,可以放心在生产执行 |
典型使用场景
- 变更窗口准备:提前评估本次可升级范围,识别是否需要停机
- 安全整改:按公告编号筛选安全更新,优先补齐高危漏洞
- 受控升级:只升级指定组件,避免基础库连带变更
- 升级后核对:确认关键包版本已更新,并判断是否需要重启服务或重启系统
- 回滚预案:升级前记录当前版本,必要时用版本锁定或快照回退
升级前的只读评估
升级前的只读评估
dnf check-update # 列出可升级的包
dnf updateinfo list security # 只列安全相关更新
dnf updateinfo info RHSA-2026:0007 # 查看某条公告涉及哪些包
dnf repoquery --upgrades | head # 以更规整的格式列出可升级包
rpm -q --changelog openssl | head -n 20 # 看已装包的更新记录按范围执行与升级后核对
按范围执行与升级后核对
dnf upgrade --security -y # 只装安全更新(版本支持时)
dnf upgrade nginx -y # 只升指定包
dnf upgrade --exclude='kernel*' -y # 本次不动内核
needs-restarting -r # 判断是否需要重启系统(dnf-utils 提供)
systemctl list-units --state=failed --no-pager # 升级后看有没有服务起不来子命令与方法对照
| 命令 | 作用 | 注意 |
|---|---|---|
| dnf check-update | 列出可升级包 | 只读,退出码 100 表示有更新可用 |
| dnf updateinfo list security | 列安全更新 | 依赖仓库提供公告元数据 |
| dnf upgrade --security | 只装安全更新 | 不同大版本支持情况不同,先确认 |
| dnf upgrade --exclude= | 升级时排除包 | 适合把内核等组件留到下个窗口 |
| dnf distro-sync | 把包对齐到仓库当前版本 | 可能降级或替换包,风险较高,谨慎使用 |
内核升级不会自动切换:新内核要重启后才生效,回退时在启动菜单里选择旧内核即可。因此内核升级通常单独安排窗口,并预留重启与验证时间。
云镜像常自带自动更新任务,可能与你的手工升级撞车,表现为拿不到包管理锁。动手前先确认有没有相关定时器在跑,避免两边同时改系统。