首页/系统/Linux 运维命令速查/场景:锁定/降级软件包版本

场景:锁定/降级软件包版本

防止仓库更新意外升级关键组件:versionlock(RPM)与 apt-mark hold(DEB)锁定;降级需显式指定旧版本。

Linux 运维命令速查系统更新于 2026-10-13

锁定与降级是什么

关键组件不希望被日常更新带上新版本时,需要显式声明: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,否则半年后没人知道某个包为什么不升级,会成为隐性技术债。
锁定与降级都属于变更操作:动手前记录当前版本与依赖状态,做完立刻验证依赖是否仍然满足,再交付验证。锁定项要有到期复核机制,否则安全更新长期进不来;降级前确认仓库里仍保留所需版本,必要时准备自建源,避免回退无处可退。

易错点

  • 只锁单个包而它的依赖被升级时,锁定包可能因 ABI 不匹配运行失败,锁定要连带评估依赖链
  • versionlock 是插件,未安装时命令不存在,脚本里要先探测插件可用性而不是直接调用
  • apt-mark hold 只阻止升级流程自动更新,显式指定包名安装仍会提示将要变更锁定包,操作前看清提示再确认
  • 锁定同样挡住安全更新,被锁的包收不到漏洞修复,需要定期复核锁定项的必要性
  • 锁定之后无人复核:被锁的包收不到漏洞修复,一年后既要面对安全问题又要面对升级跨度,锁定项应记录原因与复核时间

数据来源与参考

  • dnf versionlock 插件文档
  • man 8 apt-mark

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌