必须用 apt-mark unhold 解锁,否则 apt upgrade 仍会跳过;取消单个包执行 sudo apt-mark unhold nginx,批量取消支持空格分隔如 sudo apt-mark unhold nginx curl wget,验证用 apt-mark showhold 确认包名已消失。

apt-mark hold 怎么取消锁定
Debian/Ubuntu 系统下,用 apt-mark hold 锁定的包,必须用 apt-mark unhold 解锁,否则 apt upgrade 仍会跳过它。
- 取消单个包:运行
sudo apt-mark unhold nginx - 批量取消:支持空格分隔多个包名,如
sudo apt-mark unhold nginx curl wget - 验证是否生效:执行
apt-mark showhold,输出里不应再出现该包名 - 注意:
unhold不会触发自动升级;要真正升级,还需手动运行sudo apt install nginx或sudo apt upgrade
dnf versionlock 怎么删除某条规则
RHEL/CentOS/Rocky 8+ 使用 dnf versionlock 锁定后,不能靠卸载插件或删配置文件来解除——必须用 versionlock delete 命令,否则规则仍生效。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 按包名删除(匹配当前所有已锁版本):
sudo dnf versionlock delete nginx - 按精确 NEVRA 删除(推荐,避免误删):
sudo dnf versionlock delete nginx-1:1.24.0-1.el9 - 按编号删除(先
dnf versionlock list查编号):sudo dnf versionlock delete 3 - 规则实际存在
/etc/dnf/plugins/versionlock.list,但直接编辑易出错,不建议
yum versionlock 清除锁定的正确方式
CentOS 7 或旧版 RHEL 使用 yum versionlock,命令语法和路径与 dnf 不同,混淆会导致删除失败。
- 删除单个包的所有锁:
sudo yum versionlock delete nginx - 清空全部锁(慎用):
sudo yum versionlock clear - 锁文件位置是
/etc/yum/pluginconf.d/versionlock.list,不是/etc/yum.conf - 执行后务必运行
yum versionlock list确认为空,再用yum update --assumeno | grep nginx验证是否不再被排除
为什么解除锁定后软件还是没升级
取消锁定只是移除“禁止升级”的标记,并不等于自动触发升级。很多人卡在这一步,以为解锁=马上更新。
-
apt-mark unhold后,需显式执行sudo apt install nginx或sudo apt upgrade才会拉新版本 -
dnf versionlock delete后,同样要运行sudo dnf upgrade nginx,否则版本不变 - 如果之前用
exclude=kernel*写死在/etc/yum.conf,versionlock delete完全无效——得同步删掉exclude行 - Ubuntu 的
unattended-upgrades可能绕过apt-mark,解锁后还得检查/etc/apt/apt.conf.d/50unattended-upgrades是否有黑名单










