帖子内容
@zzh1996 问我为什么在不同云服务商的 Debian 11 的机器上安装 unattended-upgrades,有的会自动创建 /etc/apt/apt.conf.d/20auto-upgrades,有的却不会,导致并没有启用自动更新。 这个行为受 debconf 数据库中的一个选项控制,相关信息存储在 /var/cache/debconf/{config,templates}.dat,两个文件都是纯文本。 执行 apt source unattended-upgrades 会下载这个包的源代码: - debian/templates 有一个选项 enable_auto_updates,默认值为 true。 - debian/config 会设置这个选项的值,但因为优先级是 low 所以默认不会询问用户。 - debian/postinst 会从数据库查询这个选项的值,决定是否创建配置文件。 在腾讯云和 Hetzner 提供的 Debian 11 系统中,虽然没有预装 unattended-upgrades 包,但 debconf 数据库中奇怪地有这个选项,其值为 false。这是通过 debconf-set-selections 工具做到的,它专门用来在安装包之前设置各种选项(称为 preseed)。按我的理解,在 config.dat 中搜索 seen 可以看到所有被 preseed 过的值,在 templates.dat 中搜索 fake 可以看到所有被 preseed 过但没被真的安装用到的值。 我猜或许曾经某个系统会自动安装 unattended-upgrades,但云厂商没想默认启用,所以 preseed 成了 false,后来这个包不会被自动安装了,忘了移除相应配置?