apt-mark hold 是 apt 提供的一个功能,用于阻止特定软件包自动更新;使用方式为 sudo apt-mark hold 包名,如 sudo apt-mark hold nginx;确认锁定可通过 apt-mark showhold 或 apt policy 包名查看;解除锁定使用 sudo apt-mark unhold 包名;注意事项包括:hold 仅影响 apt 操作、可能引发依赖冲突、不宜长期滥用、需定期检查锁定列表。

在 Linux 系统中,尤其是基于 Debian 或 Ubuntu 的系统,使用 apt 包管理器时,经常会遇到某些软件包因为系统更新而被自动升级。这种行为有时会带来兼容性问题或者破坏当前的配置。如果你希望阻止某个特定软件包自动更新,可以使用
apt-mark hold命令来锁定它。

什么是 apt-mark hold?
apt-mark hold是 APT 提供的一个功能,用于将指定的软件包“冻结”在一个特定版本,防止其被自动或手动更新。这个方法简单直接,适合临时或长期锁定关键软件包。

使用方式:
sudo apt-mark hold 包名
例如,如果你不想让
nginx自动更新:

sudo apt-mark hold nginx
执行后,
nginx就不会再随着
apt upgrade被升级了。
如何确认软件包是否已被锁定?
你可以通过以下命令查看哪些软件包已经被标记为 hold:
apt-mark showhold
如果看到你刚刚设置的包名出现在输出中,说明已经成功锁定。
此外,也可以用下面的方式单独检查某个包的状态:
apt policy 包名
比如:
apt policy nginx
在输出中,如果有类似
Installed: x.x.x和
Candidate: x.x.x,并且提示处于
Hold状态,说明该包不会被更新。
解除锁定的方法
当你不再需要阻止更新时,可以用
unhold命令解除锁定:
sudo apt-mark unhold 包名
例如:
sudo apt-mark unhold nginx
注意:如果输入了一个未被锁定的包名,系统会提示
Package 'xxx' was not held.
注意事项和常见问题
-
Hold 只影响 APT 操作:也就是说,如果你手动下载
.deb
文件安装,或者使用其他包管理工具(如 dpkg),这个限制不会生效。 - 升级策略冲突时可能会出错:有些依赖关系强的包如果被锁定,可能会影响其他包的更新,出现错误提示。
- 不要滥用 hold:长期锁定多个关键系统组件可能导致系统不稳定或安全漏洞积累。
- 定期检查 hold 列表:避免忘记曾经锁定了什么,造成后续维护困难。
基本上就这些。操作不复杂但容易忽略细节,特别是在生产环境中,记得记录你锁定的包以及原因。










