无人值守升级覆盖允许来源

无人值守升级覆盖允许来源

我正在尝试设置,Unattended-Upgrade::Allowed-Origins以便仅允许进行安全更新。我想在稍后的配置中执行此操作,apt.conf.d将默认50unattended-upgrades配置保留为默认配置并进行覆盖。

在我的设置中99-unattended-upgrades,我设置如下:

// Only allow security origin
Unattended-Upgrade::Allowed-Origins {
  "${distro_id}:${distro_codename}-security";
};

然而,这似乎合并使用现有配置(而不是完全删除它),因为当我这样做时,apt-config dump我可以看到其中的默认设置。

我还尝试使用以下命令进行设置:

Unattended-Upgrade::Allowed-Origins "${distro_id}:${distro_codename}-security";

也没有用。

可以只需注释掉中的行50unattended-updates,但是,如果可以的话,我真的很想保留原始文件。

答案1

在深入研究了 apt 源代码和 apt-conf 手册页后,我们发现有一种方法

[...]#clear 用于删除配置树的一部分。指定的元素及其所有后代都将被删除。(请注意,这些行也需要以分号结尾。)

#clear 命令是删除列表或完整范围的唯一方法。重新打开范围(或使用下面描述的语法并附加 ::)不会覆盖之前写入的条目。只能通过为选项指定新值来覆盖选项 - 列表和范围不能被覆盖,只能被清除。

因此这将让你得到你想要的:

#clear Unattended-Upgrade::Allowed-Origins;
// Only allow security origin
Unattended-Upgrade::Allowed-Origins {
  "${distro_id}:${distro_codename}-security";
};

https://manpages.debian.org/testing/apt/apt.conf.5.en.html

相关内容