系统极客一直在努力
专注操作系统及软件使用技能

如何在 Ubuntu、Debian 或 Linux Mint 系统中锁定软件包版本

Ubuntu

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


为什么要阻止软件包更新呢?通常是用户对某个软件版本有特定的需求,或更新之后会导致问题,所以才要维持特定版本不进行升级。例如:LotServer 就需要特定的 Linux Kernel 版本,笔者就是用 apt-mark 阻止内核升级的。

需要注意的是:如果你要保持特定版本的软件包被其它软件所依赖,那么阻止其升级可能会导致问题。因此,尽量不要将太多软件包固定在老版本,尤其是「库」。

以下是在 Debian、Ubuntu 和 Linux Mint 中阻止软件包更新的 3 种常用方法。

方法1:使用 GUI 工具防止程序包更新

「新立得包管理器」是一款用于 apt 的 GTK 图形包管理程序,可以用于锁定并阻止特定应用程序更新升级。

您可以使用以下命令安装 Synaptic Package Manager:

sudo apt install synaptic

在「心立得」中防止软件更新,请选中要锁定的软件包——在「软件包」菜单中勾选「锁定版本」选项。

新立得包管理器

如果要查看在 Synaptic 中已锁定的所有软件包,可以点击左侧「状态」——选择「标记为永不升级的软件包」进行查看。

新立得包管理器

需要注意的是:

  • 使用「新立得包管理器」锁定的软件包并不能阻止 apt upgradeapt-get upgrade 命令对应用程序的更新。
  • 「新立得包管理器」中锁定的软件包仅能阻止「Ubuntu 软件」或一些其它图形化包管理器对软件版本的升级。
  • 「新立得包管理器」中锁定的软件包不能阻止 使用 Linux Mint Update Manager 更新软件包。

方法2:使用 apt-mark 锁定应用程序版本

使用 apt-mark 命令可以阻止「Ubuntu 软件」和「终端」命令(apt upgradeapt-get upgrade)对锁定的应用程序进行升级。

您可以使用以下命令锁定版本:

sudo apt-mark hold PACKAGE

可以使用以下命令检查标记为保留(锁定)的包:

sudo apt-mark showhold

要解除锁定可以使用如下命令:

sudo apt-mark unhold PACKAGE

apt-mark

holdunhold 参数后可以指定多个包,就像使用 apt 安装软件一样(用空格分隔开就行)。

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

此前有段时间一些不遵守规则的「图形包管理器」直接给忽略了 apt-mark 锁定的软件(好加在我没中招),为了保险和一些在使用老旧 Debian、Ubuntu、Linux Mint 版本的用户,还可以使用 dpkg 防止软件包更新。

要使用 dpkg 阻止程序包升级,请使用:

echo "PACKAGE hold" | sudo dpkg --set-selections

您可以使用以下命令查看所有 hold 的软件包:

dpkg --get-selections | grep hold

要删除保留(允许升级包),请使用:

echo "PACKAGE install" | sudo dpkg --set-selections

dpkg

apt-mark 不同,此方法不允许一次指定多个包。

赞(0) 赞赏

评论 抢沙发

微信赞赏