使用 apt-get install 时强制非交互式“dpkg --configure”

Mar*_*ter 4 dpkg apt

我正在远程服务器上安装软件包,使用ssh

ssh root@my-host "DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get --quiet --yes install w3m"
Run Code Online (Sandbox Code Playgroud)

即使我已经设置DEBIAN_FRONTEND=noninteractive,安装也会卡在以下问题上,我必须手动按 Enter:

Configuration file '/etc/w3m/config'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** config (Y/I/N/O/D/Z) [default=N] ? 
Run Code Online (Sandbox Code Playgroud)

我怀疑,这个问题是由dpkg --configure -a而不是由提出的apt-get,因此非交互式被忽略。

如何自动执行此操作并自动选择默认选项,而不会被询问?

Ste*_*itt 10

这由 处理dpkg,您可以使用--force-confdef选项强制它选择默认选项。不过,请注意文档中的警告:

警告:这些选项主要仅供专家使用。在不完全了解其影响的情况下使用它们可能会破坏您的整个系统。

要在dpkg被 APT 调用时提供此选项,您需要将其添加到 APT 设置中,例如添加以下行到/etc/apt/apt.conf

DPkg::options { "--force-confdef"; };
Run Code Online (Sandbox Code Playgroud)

或者,对于单个调用:

apt-get -o DPkg::Options::=--force-confdef ...
Run Code Online (Sandbox Code Playgroud)