如何使用 Apt 工具禁用/锁定软件包更新或将其列入黑名单
APT 表示高级打包工具,是在基于 Linux 的系统上找到的另一种包管理器。 apt 最初被设计为 dpkg 与 .deb 软件包一起使用的前端,现已成功地展示了他在 Mac OS、Open Solaris 等上的可见性。
想要学习和掌握 APT 和 DPKG 命令来管理 Debian 软件包管理,那么请使用我们的深入文章,其中将涵盖超过 30+ > 这两种工具的示例。
在本文中,我们将看到在 Debian Linux 及其衍生版本(例如 Ubuntu 和 Linux Mint)中禁用/锁定软件包安装、升级和删除的各种技术。
1. 使用带有hold/unhold选项的“apt-mark”禁用/锁定包
命令 apt-mark 将标记或取消标记软件包为自动安装,并与选项 hold 或 unhold 一起使用。
- hold – 此选项用于将软件包标记为保留,这将阻止安装、升级或删除软件包。
- 取消保留 – 此选项用于取消先前对软件包设置的保留,并允许安装、升级和删除软件包。
例如,要使 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关键字的其他选项来进一步识别我们正在应用引脚优先级的包。这些关键词是:
- a -> 存档
- c -> 组件
- o -> 原点
- l -> 标签
- 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 命令来禁用/锁定软件包更新,请阅读下面的文章。