直接用 apt-mark hold 即可锁定 debian/ubuntu 包版本:sudo apt-mark hold nginx php-fpm;验证需三步——apt-mark showhold 查列表、apt list --upgradable | grep 确认无输出、apt upgrade --dry-run 观察“keeping package”提示;注意不阻止手动安装指定版本,且 unattended-upgrades 可能绕过,需额外配置。

直接用 apt-mark hold 就能锁定 Debian/Ubuntu 系统中特定软件包的当前版本,使其在 apt upgrade 或 apt full-upgrade 时被跳过——这是最轻量、最可靠、运维中最常用的方式。
怎么锁定一个或多个包
执行命令即可立即生效:
- 锁定单个包:
sudo apt-mark hold nginx - 一次锁多个:
sudo apt-mark hold nginx php-fpm mysql-server - 锁定后不会影响其他包安装,比如装 certbot 仍可自动拉入它依赖的
python3-requests
如何确认是否真的锁住了
三步验证缺一不可:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 查列表:
apt-mark showhold(不需 sudo),看包名是否准确出现在输出中 - 查升级列表:
apt list --upgradable | grep nginx,应无输出 - 模拟升级:
apt upgrade --dry-run,输出中应出现类似 Keeping package 'nginx' as it is held.
常见注意事项和边界情况
这个命令很实用,但几个关键点容易踩坑:
- 它不阻止手动指定版本安装,例如
sudo apt install nginx=1.24.0-1ubuntu1仍会执行,并自动解除 hold - 对 Ubuntu 的 unattended-upgrades(自动安全更新)可能无效,某些 LTS 版本会绕过 hold;如需绝对隔离,得配合
/etc/apt/apt.conf.d/50unattended-upgrades关闭相关策略 - 不要盲目锁基础系统包(如
libc6、systemd),除非有明确兼容问题并已记录原因 - 每次大版本升级前(如 22.04 → 24.04),务必清理 hold 列表并重新评估必要性
怎么临时解锁升级
计划性升级时只需一步解除:
- 解除单个:
sudo apt-mark unhold nginx - 批量解除:
sudo apt-mark unhold $(apt-mark showhold | tr '\n' ' ')(慎用,建议先人工核对) - 解除后可立刻运行
apt install nginx或apt upgrade完成更新










