如何在 Ubuntu、Debian 或 Linux Mint 中防止更新包 [APT]

在 Debian、Ubuntu、Linux Mint、elementary OS 和其他基于 Debian/Ubuntu 的 Linux 发行版中,有多种方法可以防止软件包更新。 本文介绍了 3 种排除存储库包升级的方法。

为什么要阻止更新包? 假设您安装的软件包比 Debian、Ubuntu 或 Linux Mint 存储库中可用的版本旧,或者您知道某些更新导致问题,并且您想要升级所有软件包减去一个(或两个、三个…)。

这是一个例子。 我在 Ubuntu 18.10 中使用带有来自 Saiarcot895-dev PPA 的硬件加速补丁的 Chromium 浏览器。 为了让硬件加速与 Nvidia 驱动程序一起工作,需要一个修补的 vdpau-va-driver 包,而最新的 Ubuntu 18.10 的这个 PPA 中还没有这个包。 幸运的是,Ubuntu 18.04 软件包可以安装在 Ubuntu 18.10 中,但是通过“apt upgrade”或使用软件更新程序进行的任何升级都会升级这个软件包,这是我不想要的。 所以在这种情况下,从升级中保留这个包可以让我升级所有其他包,而不必担心它。

应该注意的是,如果您持有的包被用作另一个可以升级的包的依赖项,那么在某些情况下阻止包将来升级可能会导致问题。 所以尽量不要阻止太多的包升级,尤其是库。

来自同一系列:如何在 Debian、Ubuntu 或 Linux Mint 中从命令行搜索可用软件包 [APT]

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

1. 使用 GUI 防止包更新:Synaptic 包管理器

Synaptic 包管理器,一个用于 apt 的 Gtk 图形包管理程序,可以锁定包以防止它们被更新。

需要注意的是,使用 Synaptic 锁定包不会阻止它们从命令行更新 – 运行 apt upgrade 或者 apt-get upgrade 仍将升级锁定在 Synaptic 中的软件包。
在 Synaptic 中锁定包将阻止使用 Ubuntu 的 Software Updater 应用程序以及可能的其他图形包管理器进行包升级。 不过,它不会阻止使用 Linux Mint 更新管理器应用程序更新软件包。
因此,我建议使用 apt-mark 或者 dpkg (见下文)以防止软件包更新。

您可以使用以下命令安装 Synaptic 包管理器:

sudo apt install synaptic