在使用 Linux 系统时,你是否曾经因为一次系统更新而意外升级了某个关键软件,导致服务中断或配置失效?为了避免这类问题,Linux 提供了“软件包锁定”功能。本文将手把手教你如何在主流发行版中锁定软件包,确保它们不会被自动或手动升级。无论你是刚接触 Linux 的小白,还是有一定经验的用户,都能轻松掌握这些实用技巧。
什么是软件包锁定?
软件包锁定(Package Locking)是指通过特定命令将某个已安装的软件包“冻结”在当前版本,使其在执行系统更新(如 apt upgrade、yum update 或 dnf upgrade)时不会被升级。这对于依赖特定版本的生产环境尤其重要。
Debian/Ubuntu 系统:使用 apt-mark hold
如果你使用的是基于 Debian 的系统(如 Ubuntu、Linux Mint),可以使用 apt-mark 命令来锁定软件包。
锁定单个软件包
sudo apt-mark hold nginx 执行后,系统会提示:nginx set on hold.,表示 nginx 已被成功锁定。
查看已锁定的软件包
apt-mark showhold 取消锁定
sudo apt-mark unhold nginx 这个方法简单高效,是管理 Linux软件包锁定 的首选方式之一。
CentOS/RHEL/Fedora 系统:使用 yum 或 dnf 插件
对于 Red Hat 系列系统,方法略有不同,取决于你使用的是 yum 还是 dnf。
在 CentOS 7 / RHEL 7 中使用 yum versionlock
首先确保安装了 yum-plugin-versionlock 插件:
sudo yum install yum-plugin-versionlock 然后锁定软件包(例如 httpd):
sudo yum versionlock httpd 查看已锁定的包:
sudo yum versionlock list 删除锁定:
sudo yum versionlock delete httpd 这就是 yum versionlock 的基本用法。
在 Fedora / CentOS 8+ / RHEL 8+ 中使用 dnf lock
新版本系统使用 dnf 作为包管理器,并内置了锁定功能:
sudo dnf install dnf-plugins-core 锁定软件包:
sudo dnf versionlock add nginx 查看锁定列表:
sudo dnf versionlock list 清除所有锁定:
sudo dnf versionlock clear 这种机制也被称为 dnf lock,适用于现代 Red Hat 系生态。
为什么需要软件包锁定?
- 避免因自动更新导致兼容性问题
- 保持生产环境中关键服务的稳定性
- 测试新版本前临时冻结旧版本
- 符合某些安全合规要求(固定版本审计)
小贴士与注意事项
- 锁定软件包后,系统更新仍会继续,只是被锁定的包不会变动。
- 定期检查锁定列表,避免长期忽略安全更新。
- 在脚本或自动化部署中谨慎使用锁定,以免造成依赖冲突。
- 不同发行版的命令不通用,请根据你的系统选择正确方法。
总结
通过本文,你已经学会了在主流 Linux 发行版中实现 Linux软件包锁定 的方法。无论是使用 apt-mark hold、yum versionlock 还是 dnf lock,都能有效防止关键软件被意外升级。掌握这些技能,将大大提升你在运维和开发中的系统稳定性控制能力。
记住:稳定压倒一切,但也要适时评估是否解除锁定以获取安全补丁。

