锁定与降级是什么
关键组件不希望被日常更新带上新版本时,需要显式声明:RPM 系用 versionlock 插件锁定包,DEB 系用 apt-mark hold。锁定只阻止自动升级,降级则必须给出确切的版本号字符串,两者都要在仓库里确实存在对应版本才成立。
基本信息
| 适用平台 | RPM 系(dnf / yum)与 DEB 系(apt)写法不同 |
|---|---|
| 锁定工具 | dnf versionlock(插件)/ apt-mark hold |
| 降级方式 | dnf downgrade 包-版本 / apt-get install 包=版本 |
| 查看状态 | dnf versionlock list / apt-mark showhold / apt-cache policy 看候选版本 |
典型使用场景
- 关键组件冻结版本:数据库、运行时等待业务验证通过再放开,避免自动更新引入行为变化
- 依赖冲突临时缓解:某包新版本与现有组件不兼容时先锁在可用版本
- 故障回退:升级后出现异常,用 downgrade 或指定版本装回上一个已知可用版本
- 交付一致性:交付给客户的系统按锁定清单固定,保证与测试环境一致
- 内核配套:内核与外部模块版本必须匹配时锁住内核,避免升级后模块加载失败
RPM 系锁定与降级
RPM 系锁定与降级
dnf install -y python3-dnf-plugin-versionlock # 插件需先安装
dnf versionlock add nginx # 锁定到当前版本
dnf versionlock list # 查看锁定清单
dnf versionlock delete nginx # 解除锁定
dnf list --showduplicates nginx # 列出仓库中全部可用版本
dnf downgrade nginx-1.24.0-1.el9 # 降级到指定版本DEB 系锁定与降级
DEB 系锁定与降级
apt-mark hold nginx # 锁定,禁止自动升级
apt-mark showhold # 查看锁定清单
apt-mark unhold nginx # 解除锁定
apt-cache policy nginx # 先确认可降级的版本号
apt-get install nginx=1.24.0-1ubuntu1 # 降级到指定版本锁定记录的是包名与版本,仓库后续更新该包时仍保持锁定版本,直到显式删除锁定项。
降级到仓库中不存在的版本会直接失败(APT 报 Version not found,dnf 报无可用包),先列可用版本再执行。
锁定清单必须纳入配置管理或 CMDB,否则半年后没人知道某个包为什么不升级,会成为隐性技术债。
锁定与降级都属于变更操作:动手前记录当前版本与依赖状态,做完立刻验证依赖是否仍然满足,再交付验证。锁定项要有到期复核机制,否则安全更新长期进不来;降级前确认仓库里仍保留所需版本,必要时准备自建源,避免回退无处可退。