在Linux中锁定软件包可防止更新,Debian/Ubuntu用apt-mark hold,CentOS/RHEL/Fedora用dnf versionlock add,SUSE/openSUSE用zypper addlock,锁定后需验证更新行为确保生效。
在 Linux 系统中,有时需要锁定某个软件包,防止它在系统更新时被自动升级或降级,比如为了保持系统兼容性或避免引入不稳定的版本。不同发行版使用不同的包管理器,锁定方法也不同。以下是几种主流发行版中锁定软件包的方法。
Debian/Ubuntu 系统(APT 包管理器)
Debian 和 Ubuntu 使用 APT,可以通过 apt-mark hold 命令锁定软件包。
操作步骤:
- 锁定软件包(阻止更新):
sudo apt-mark hold 软件包名 - 查看已被锁定的软件包:
apt-mark showhold - 解除锁定:
sudo apt-mark unhold 软件包名
例如,锁定 nginx:
sudo apt-mark hold nginx
之后执行 apt upgrade 时,nginx 将不会被更新。
CentOS/RHEL/Fedora 系统(YUM/DNF 包管理器)
在基于 RPM 的系统中,可以通过启用 versionlock 插件来锁定软件包版本。
操作步骤:
- 安装 versionlock 插件(以 DNF 为例):
sudo dnf install dnf-plugin-versionlock - 锁定某个软件包:
sudo dnf versionlock 软件包名 - 查看已锁定的软件包:
sudo dnf versionlock list - 删除某个锁定:
sudo dnf versionlock delete 软件包名或编号 - 清除所有锁定:
sudo dnf versionlock clear
例如,锁定 httpd 的当前版本:
sudo dnf versionlock add httpd
SUSE/openSUSE(zypper 包管理器)
在 SUSE 系统中,使用 zypper 的 addlock 功能。
操作命令:
- 锁定软件包:
sudo zypper addlock 软件包名 - 查看所有锁定:
zypper locks - 解除锁定:
sudo zypper removelock 软件包名
例如,锁定内核包:
sudo zypper addlock kernel-default
锁定软件包是维护系统稳定的有效手段,尤其是在生产环境中。选择合适的方法取决于你使用的 Linux 发行版和包管理器。操作完成后,建议验证更新过程是否确实跳过了被锁定的包,避免误操作。基本上就这些,不复杂但容易忽略细节。
linux centos nginx ubuntu dnf 有锁 nginx delete default linux ubuntu centos debian