使用无人值守升级安装安全包。每天运行。但是我注意到过去一周左右安全包尚未安装。经过一番调查,我发现这些更新需要用户交互。(即它们在更新期间有交互提示)
我怎样才能让无人值守升级对这些提示不予认可?
我尝试使用 APT::GET::ASSUME-NO,但似乎不起作用。
似乎必须有某种方法来解决这个问题,因为我管理许多服务器,并且更新每个服务器的安全性会相当耗时。
/etc/apt/apt.conf.d/50unattended-upgrades 文件如下所示
Unattended-Upgrade::Origins-Pattern {
"origin=${distro_id},archive=${distro_codename}";
"origin=${distro_id},archive=${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist {
};
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
登录后我看到
22 updates are security updates.
编辑:运行 Ubuntu-Server 18.04.4 LTS(GNU/Linux 5.4.0-1035-aws x86_64)
更新时需要交互的包是php7.0-fpm。
添加
DPkg::Options {
"--force-confold";
"--force-confdef";
};
似乎确实停止了 conffile 提示。但是运行后却sudo unattended-upgrades -d
出现了该消息。
dpkg is configured not to cause conffile prompts
No packages found that can be upgraded unattended and no pending auto-removals
所以也许这只是我必须面对的事情。但我希望有人能找到解决这个问题的方法。
我们管理着数百台服务器。因此,你可以想象,在每台服务器上手动执行此操作会相当耗时。
答案1
什么问题引发了用户交互?
我将这些设置包含在 apt 配置中unattended-upgrades
。它们将回答dpkg
配置文件更改的提示
DPkg::Options {
"--force-confold";
"--force-confdef";
};
更多信息https://debian-handbook.info/browse/stable/sect.automatic-upgrades.html
编辑
我不知道update-notifier
代码如何区分安全更新和其他更新。MOTD 输出可能使用与不同的标准unattended-upgrades
。
如果你专门查看php7.0-fpm
,请检查 的输出apt-cache policy php7.0-fpm
。它将告诉你候选版本是什么以及该版本来自哪个存储库。
其中一个可能引起混淆的原因unattended-upgrades
是默认配置不是从updates
存储库安装更新。这是我用来从updates
存储库(以及 ESM 存储库)安装更新的另一个 apt 配置。
#clear Unattended-Upgrade::Allowed-Origins;
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESM:${distro_codename}";
"${distro_id}ESM:${distro_codename}-updates";
"${distro_id}ESM:${distro_codename}-security";
};
该软件包php7.0-fpm
表明存在另一个潜在问题。您说您正在使用18.04.4,但该包仅存在于16.04。如果您从非官方存储库安装了此软件,则除非匹配,unattended-upgrades
否则不会更新该软件包。Origins-Pattern