apt-mark hold可锁定软件包防止自动更新,如sudo apt-mark hold nginx可阻止nginx升级,apt-mark showhold查看已锁定包,sudo apt-mark unhold恢复更新,适用于需版本稳定的关键服务,但需注意安全补丁和依赖问题。

在Linux系统中,特别是基于Debian或Ubuntu的发行版,自动更新可能会在你不希望的时候更改系统软件包,导致服务中断或配置被覆盖。使用
apt-mark hold命令可以有效阻止特定软件包的自动更新,同时不影响系统的其他更新操作。
什么是 apt-mark hold
apt-mark hold是APT包管理器提供的一个功能,用于“锁定”某个软件包,使其在执行
apt upgrade或系统自动更新时不会被升级。这个操作不会卸载或移除软件包,只是阻止其版本变动。
当你对某个关键服务(如MySQL、Nginx、Docker等)的版本有严格要求时,这个功能非常实用。
如何使用 apt-mark hold 锁定软件包
假设你想阻止
nginx自动更新,可以执行以下命令: sudo apt-mark hold nginx
执行后会看到输出:
nginx set on hold.这意味着
nginx现在已被锁定,即使有新版本也不会被升级。
你可以一次锁定多个包:
sudo apt-mark hold nginx mysql-server docker-ce查看已被锁定的软件包
要查看当前系统中所有被hold的软件包,运行:
apt-mark showhold该命令会列出所有被锁定的包名。
取消锁定(恢复更新)
当你希望重新允许某个软件包更新时,使用
unhold命令: sudo apt-mark unhold nginx
输出会显示:
Cancelled hold on nginx.此后,
nginx将重新纳入正常更新流程。
注意事项与使用建议
使用
apt-mark hold时需注意以下几点:
- 该命令只影响
apt upgrade
类操作,不影响dist-upgrade
或手动使用apt install
强制安装新版本。 - 锁定包后,系统不会提示有可用更新,容易忽略安全补丁,建议定期检查并评估是否需要解锁更新。
- 某些依赖关系复杂的包被锁定后,可能导致其他包无法升级或安装失败,需谨慎操作。
- 建议在生产环境中对核心服务使用此功能,并记录锁定原因。
基本上就这些。apt-mark hold 是一个简单但非常有效的控制更新方式,适合需要版本稳定性的场景。合理使用,能避免很多意外升级带来的问题。










