网站搜索

如何使用 Apt 工具禁用/锁定软件包更新或将其列入黑名单


APT 表示高级打包工具,是在基于 Linux 的系统上找到的另一种包管理器。 apt 最初被设计为 dpkg.deb 软件包一起使用的前端,现已成功地展示了他在 Mac OS、Open Solaris 等上的可见性。

想要学习和掌握 APTDPKG 命令来管理 Debian 软件包管理,那么请使用我们的深入文章,其中将涵盖超过 30+ > 这两种工具的示例。

在本文中,我们将看到在 Debian Linux 及其衍生版本(例如 Ubuntu 和 Linux Mint)中禁用/锁定软件包安装、升级和删除的各种技术。

1. 使用带有hold/unhold选项的“apt-mark”禁用/锁定包

命令 apt-mark 将标记或取消标记软件包为自动安装,并与选项 holdunhold 一起使用。

  1. hold – 此选项用于将软件包标记为保留,这将阻止安装、升级或删除软件包。
  2. 取消保留 – 此选项用于取消先前对软件包设置的保留,并允许安装、升级和删除软件包。

例如,要使 apache2 软件包无法安装、升级或卸载,您可以在具有 root 权限的终端上使用以下命令:

apt-mark hold apache2

要使此软件包可供更新,只需将“hold”替换为“unhold”即可。

apt-mark unhold apache2

使用 APT 首选项文件阻止包更新

阻止特定软件包更新的另一种方法是在 /etc/apt/preferences/etc/apt/preferences.d/official-package-repositories.pref 中添加其条目代码> 文件。该文件负责根据用户指定的优先级更新或阻止某些包更新。

要阻止该包,您只需输入其名称、附加功能以及您想要将其置于的优先级。在这里,优先级 <1 将阻止该包。

要阻止任何软件包,只需在文件 /etc/apt/preferences 中输入其详细信息,如下所示:

Package: <package-name> (Here, '*' means all packages)
Pin: release *
Pin-Priority: <less than 0>

例如,要阻止 apache2 包的更新,请添加如下所示的条目:

Package: apache2
Pin: release o=Ubuntu
Pin-Priority: 1

我们可以使用带有release关键字的其他选项来进一步识别我们正在应用引脚优先级的包。这些关键词是:

  1. a -> 存档
  2. c -> 组件
  3. o -> 原点
  4. l -> 标签
  5. n -> 架构

喜欢 :

Pin: release o=Debian,a=Experimental

意味着从 Debian 软件包实验存档中提取指定的软件包。

使用 APT 自动删除文件将软件包更新列入黑名单

将软件包列入黑名单的另一种方法是更新其在 /etc/apt/apt.conf.d/ 目录中包含的文件之一中的条目,即 01autoremove

示例文件如下所示:

APT
{
  NeverAutoRemove
  {
        "^firmware-linux.*";
        "^linux-firmware$";
  };

  VersionedKernelPackages
  {
        # linux kernels
        "linux-image";
        "linux-headers";
        "linux-image-extra";
        "linux-signed-image";
        # kfreebsd kernels
        "kfreebsd-image";
        "kfreebsd-headers";
        # hurd kernels
        "gnumach-image";
        # (out-of-tree) modules
        ".*-modules";
        ".*-kernel";
        "linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

  Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
  };
};

现在,要将任何包列入黑名单,只需在 Never-MarkAuto-Sections 中输入其名称即可。只需在 Never-MarkAuto-Section 末尾输入包的名称,然后保存并关闭文件。这将阻止 apt 搜索该软件包的进一步更新。

例如,要将要更新的包列入黑名单,请添加如下所示的条目:

Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
        "apache2*";
  };
};

更新的自定义包选择

另一种选择是选择您要更新的内容。 apt 工具使您可以自由选择要更新的内容,但为此您应该了解所有软件包可用于升级的内容。

对于这样的事情,以下命令集可能会有所帮助:

a. 列出哪些软件包有待更新。

apt-get -u -V upgrade

b. 仅安装选择性软件包。

apt-get --only-upgrade install <package-name>

结论

在本文中,我们解释了使用 APT 方式禁用/阻止或将软件包更新列入黑名单的几种方法。如果您知道任何其他首选方式,请通过评论告知我们,或者如果您正在寻找 yum 命令来禁用/锁定软件包更新,请阅读下面的文章。