保留或阻止软件包在 Debian、Ubuntu 中升级

如您所知,我们可以使用升级所有已安装的软件包 apt upgrade 命令在 Debian、Ubuntu 和其他基于 Debian 的系统中。 在此升级过程中,会升级所有已安装的包,安装一些额外的包(即依赖项),并删除一些不需要的包。 Apt 包管理器会自动完成所有这些工作,以帮助用户维护一个干净的系统。 Apt 还有一个选项可以防止软件包在 Debian、Ubuntu 及其变体中自动安装、升级或删除。 在本指南中,我们将讨论在 Debian、Ubuntu 及其衍生产品(如 Linux Mint 和 Pop!_OS)中阻止或阻止软件包升级的各种方法。

内容

  1. 为什么有人要阻止软件包升级?
  2. 保留或阻止软件包在 Debian、Ubuntu 中升级
    1. 1. 防止在Debian、Ubuntu中使用apt-mark命令自动安装、升级或删除软件包
    2. 2.在Debian、Ubuntu中使用dpkg防止软件包升级
    3. 3. 在 Debian、Ubuntu 中使用 aptitude 保留升级包
    4. 4. 防止在 Debian、Ubuntu 中使用 Synaptic 包管理器自动安装、升级或删除包
      1. 结论

为什么有人要阻止软件包升级?

你可能想知道为什么有人想要从 apt upgrade 中保留一个包。 将软件包更新到最新版本是否有助于我们保护系统? 当然,是的! 但是在某些情况下您不想这样做。 以下是一些阻止软件包升级的原因:

  • 软件包的当前版本运行良好,因此您可能认为没有必要升级它。
  • 另一个应用程序需要特定版本才能正常运行。
  • 您即将更新的软件包可能有问题。 尽管开发人员在将软件包推送到存储库之前对其进行了彻底的测试,但有时他们可能会在不知不觉中推送不稳定的软件包,这会破坏您的系统。
  • 节省带宽。 您可能不想更新占用超过 500 MB 的包。

因此,无论是什么原因,如果您想防止软件包在 Debian 或 Ubuntu 系统中发生更改,本教程将有所帮助。

保留或阻止软件包在 Debian、Ubuntu 中升级

我们可以从命令行或使用名为的图形包管理实用程序阻止/保留/忽略/排除 apt 升级 突触 包管理器。

首先,让我们看看命令行方法!

1. 防止在Debian、Ubuntu中使用apt-mark命令自动安装、升级或删除软件包

标记 用于显示、设置和取消设置包的各种设置,例如将包标记为自动/手动安装或更改 dpkg 选择,例如保留、安装、卸载和清除,例如 apt-get dselect-upgrade 或者 aptitude.

为了防止包被更改(安装、卸载和升级), apt-mark command 提供以下三个子命令:

  1. 抓住
  2. 不放
  3. 展示

hold 命令用于将包标记为已阻止,这将阻止包被自动安装、升级或删除。

unhold 命令用于取消先前设置的包保留以再次允许所有操作。

showhold 命令用于显示保留的包列表。

让我们看一个例子。 我要阻止一个包裹(例如 htop) 使用以下命令自动安装、升级或删除:

$ sudo apt-mark hold htop

示例输出:

htop set on hold.

上锁的 htop 即使升级系统后,软件包仍将保持相同的版本。

要显示保留的包,请运行:

$ sudo apt-mark showhold

要取消保留包,只需运行:

$ sudo apt-mark unhold htop

示例输出:

Canceled hold on htop.
使用 apt-mark 命令防止软件包自动安装、升级或删除

请注意 此方法不会阻止手动删除包. 您仍然可以使用删除锁定的包 apt-get remove <packagename> 命令。

此方法仅防止应用程序在系统升级过程中自动安装、更新、升级或删除。 持有包裹实际上意味着你告诉包裹经理 无论如何都要保留当前版本,即使有新版本可用. 这个技巧在阻止图形驱动程序时非常有用。 如果当前工作程序的更新版本在更新后中断,这也很有用。

每当您尝试使用命令更新系统时 sudo apt-get update 或者 sudo apt-get upgrade,标记的包将仍然是您持有包时的相同版本。

Apt-mark 不是唯一一种在 Debian 或 Ubuntu 中防止软件包更改的 CLI 实用程序。 还有两种方法可以在命令行中暂停和取消保留包。

2.在Debian、Ubuntu中使用dpkg防止软件包升级

数据包 是用于安装、构建、删除和管理 Debian 软件包的命令行实用程序。

放置一个包,例如 ,使用 dpkg 暂停,运行:

$ echo "htop hold" | sudo dpkg --set-selections

你可以查看你之前搁置的包的状态,运行:

$ dpkg --get-selections | grep "htop" htop						hold

如您所见,htop 被搁置。

要查看所有包的状态,请运行:

$ dpkg --get-selections

要取消包裹,请执行以下操作:

$ echo "htop install" | sudo dpkg --set-selections
在 Debian、Ubuntu 中使用 dpkg 防止软件包升级

3. 在 Debian、Ubuntu 中使用 aptitude 保留升级包

资质 是 Debian GNU/Linux 软件包系统的基于文本的界面。 它允许用户执行各种包管理任务,例如安装、更新、升级、列出和删除包。

要暂停一个包并防止它自动升级,请运行:

$ sudo aptitude hold htop

要查看包的状态,请运行:

$ aptitude show htop

示例输出:

Package: htop                             Version: 2.2.0-2build1 State: installed [held] Automatically installed: no Priority: optional Section: utils Maintainer: Ubuntu Developers <[email protected]> Architecture: amd64 Uncompressed Size: 225 k Depends: libc6 (>= 2.15), libncursesw6 (>= 6), libtinfo6 (>= 6) Suggests: lsof, strace Description: interactive processes viewer  Htop is an ncursed-based process viewer similar to top, but it allows  one to scroll the list vertically and horizontally to see all processes  and their full command lines.     Tasks related to processes (killing, renicing) can be done without  entering their PIDs. Homepage: https://hisham.hm/htop/

正如你在上面的输出中看到的,htop 包被升级了。

要取消包裹,只需执行以下操作:

$ sudo aptitude unhold htop
在 Debian、Ubuntu 中使用 aptitude 保留升级包在 Debian、Ubuntu 中使用 aptitude 保留升级包

4. 防止在 Debian、Ubuntu 中使用 Synaptic 包管理器自动安装、升级或删除包

如果你有 突触 安装在您的系统上的包管理器,您可以轻松地锁定包的安装、更新、升级或删除。

打开 Synaptic 管理器并搜索您要保存的包。 然后点击 包裹 从菜单栏中单击 抓住.

使用 Synaptic 包管理器防止包被自动安装、升级或删除使用 Synaptic 包管理器防止包被自动安装、升级或删除

而已。 现在,只要您保留它,系统升级过程中就不会触及该软件包。

要取消它,请转到 Synaptic -> 打包 -> 解锁 版本。

如果您的系统中未安装 Synaptic 软件包管理器,您可以使用以下命令进行安装:

$ sudo apt install synaptic

结论

在本教程中,您学习了如何防止软件包在基于 Debian 的系统(例如 Ubuntu、Linux Mint 和 Pop!_OS 等)中自动安装、升级和删除。虽然在某些情况下阻止软件包可能会有所帮助,但它也会在您的 Ubuntu 系统中留下安全漏洞。 人们必须知道何时保留或取消保留包裹。 请谨慎使用此功能。 祝你好运!

相关阅读:

  • 如何在 Arch Linux 中忽略正在升级的软件包

特色图片由 erfouris 工作室在Pixabay上提供。

APTapt-getapt-markDebianLinuxLinux 基础Linux 命令包管理Synaptic 包管理器Ubuntu