我正在尝试设置,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";
};