![脚本化更新期间的conffile提示](https://linux22.com/image/10272/%E8%84%9A%E6%9C%AC%E5%8C%96%E6%9B%B4%E6%96%B0%E6%9C%9F%E9%97%B4%E7%9A%84conffile%E6%8F%90%E7%A4%BA.png)
apt-get update && apt-get upgrade -y
我有一个每周在许多服务器上运行的脚本。
当使用 Debian 9 进行测试时,我注意到它会出现一个提示,询问是否保留修改后的配置文件或安装维护者的版本 ( /etc/ssh/sshd_config
),如下面的屏幕截图所示:
我的问题是:我需要在命令中包含什么才能不提示?期望的行为是它将保留本地配置文件并继续升级。
我努力了:
- 添加
--force-yes
到apt-get upgrade
在升级命令之前或之后添加选项,因为我不确定顺序
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
使用内容创建
/etc/apt/apt.conf.d/local
:Dpkg::Options { "--force-confdef"; "--force-confold"; }
编辑
/etc/dpkg/dpkg.conf
:force confdef,confold
我尝试过的任何方法都无法抑制提示,并且我不确定下一步要尝试什么。
我的很多尝试都是基于这篇 StackExchange 帖子,无人值守升级和修改配置文件,这向我介绍了这个unattended-upgrades
包。我们目前不使用这个,但如果这是在 Debian 上完成每周更新/升级的正确方法,那么我会研究它。
谢谢!
答案1
尝试将 DEBIAN_FRONTEND 设置为非交互式。例如
export DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get upgrade -y
man 7 debconf
更多详情请参见:
非交互的
这是反前端。它根本不会与您互动,并使所有问题都使用默认答案。它可能会将错误消息邮寄给 root,但仅此而已;否则它是完全安静且不引人注目的,是自动安装的完美前端。
如果您使用此前端,并且需要问题的非默认答案,则需要预置 debconf 数据库;请参阅下面的部分无人值守的软件包安装更多细节。