如何在 Debian 中锁定软件包版本

Debian 或基于 Debian/Ubuntu 的 Linux 发行版系统中,有多种方法可以将软件包锁定在一个特定的版本。也就是说,可以将某个软件固定维护在指定版本,不让其随系统更新而更新。

为什么要锁定软件包,防止软件包更新呢?

通常是用户对某个软件版本有特定的需求,或更新期间、更新后可能会导致问题,所以需要维持特定的版本不进行升级。在常见的数据类服务中,这样的需求很有代表性,比如缓存Redis、数据队列RabbitMQ等。还有部分服务依赖于系统中特定的软件,比如指定的 Linux 内核版本,这时就需要锁定内核版本防止因内核升级导致服务异常。

我们这里介绍两种方式,防止软件包被更新。需要注意的是,如果软件包被其他软件所依赖,阻止其更新,可能会导致关联问题。建议将尽量少的的软件包锁定不更新,尤其是系统中的共享库文件。

方法一: 使用 apt-mark 锁定应用程序

使用 apt-mark 命令可以阻止命令(比如 apt upgrade 或 apt-get upgrade)对锁定的应用程序进行升级。你可以使用以下命令,管理锁定的软件:

sudo apt-mark hold PACKAGE_NAME  #锁定软件版本。可以一次指定多个包
sudo apt-mark showhold #显示系统中被标记为锁定的软件包
sudo apt-mark unhold PACKAGE_NAME #解除对软件包的锁定。可以一次指定多个包。
如何在 Debian 中锁定软件包版本

方法二:使用 dpkg 防止软件包更新

有一些不遵守规则的图形包管理器,会忽略 apt-mark 锁定的软件,为了保险起见,我们还可以使用 dpkg 防止软件包更新。使用样例如下:

echo "PACKAGE hold" | sudo dpkg --set-selections  ##锁定软件包
dpkg --get-selections | grep hold ##显示锁定的软件包列表
echo "PACKAGE install" | sudo dpkg --set-selections ##解除对软件包的锁定

与 apt-mark 不同的是,此方法一直只能指定一个软件包。

文章末尾固定信息

继续阅读
 
joseph
  • 本文由 joseph 发表于 2019年1月9日
  • 除非特殊声明,本站文章许可协议为"署名-非商用-相同方式共享 4.0",转载请保留原链、作者等信息。
广告也精彩
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证