在升级期间(可靠地)禁用 apt-listchanges(和其他交互式内容)

ixt*_*lix 15 apt upgrade

我不得不承认,我真的讨厌 apt-listchanges。如果我要进行大规模的 dist 升级,我只想将计算机留在那里几个小时。这个serverfault 问题的提问者有一个类似的目标,但是在实施了那个帖子中的所有建议之后,我仍然被apt-listchanges.

为何如此难以实现非交互性apt,否则优秀的节目,因为Unix哲学渴望呢?

我希望我所做的更改/etc/apt/listchanges.conf会有所帮助,但我需要有关如何在没有任何交互的情况下可靠地进行升级的建议。

[apt]
frontend=none
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=news
Run Code Online (Sandbox Code Playgroud)

这是我使用的命令是

DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
Run Code Online (Sandbox Code Playgroud)

我还添加了以下几行 /etc/dpkg/dpkg.cfg

force-confold
force-confdef
Run Code Online (Sandbox Code Playgroud)

Jim*_*ris 12

正如您在配置中找到并设置的那样,apt-listchanges如果您将前端设置为none. 您还可以设置环境变量APT_LISTCHANGES_FRONTEND=none来实现相同的目的。

听起来您真正想做的是使用该unattended-upgrades软件包。它为您处理所有事情:禁用apt-listchanges、将前端设置为noninteractive、检查和避免 conffile 提示等。如果不出意外,Python 脚本的内容/usr/bin/unattended-upgrades应该回答您关于它如何发挥其魔力的问题。

  • 如果您的 apt 配置在 DPkg::Options 中包含 --force-confold 或 --force-confnew ,它们的行为将按预期进行。否则,不会升级会触发配置文件提示的包,并且会发送电子邮件(如果在“无人值守升级”中配置了电子邮件)。如果电子邮件不可用,则会记录在“/var/log/unattended-upgrades”下。 (2认同)