让 apt-get(或 aptitude)使用 -y 运行但不提示替换配置文件?

让 apt-get(或 aptitude)使用 -y 运行但不提示替换配置文件?

在 Ubuntu 10.04 上运行时,apt-get -y install <packages ...>我希望apt-get(或者aptitude如果这样更容易)在安装其他依赖项时不要提示我(-y据我理解的行为),但是不是提示我覆盖配置文件,而是假设始终保留现有配置文件(通常是默认设置)。不幸的是,根据页面显示,这--trivial-only似乎是相反的,并且不会影响显示的提示。-yman

特别是诸如samba、和之nullmailer类的软件包迫使我与终端进行交互,即使整个过程都是脚本化的并且是非交互式的。localepurgelighttpd

答案1

您可以使用:

sudo apt-get update
sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

仅针对特定包,例如 mypackage1 mypackage2:

sudo apt-get update
sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install mypackage1 mypackage2

来源:http://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/

Avoiding the conffile prompt

Every time that dpkg must install a new conffile that you have modified
(and a removed file is only a particular case of a modified file in dpkg’s eyes),
it will stop the upgrade and wait your answer. This can be particularly annoying for
major upgrades. That’s why you can give predefined answers to dpkg with the help
of multiple --force-conf* options:

    --force-confold: do not modify the current configuration file, the new version
is installed with a .dpkg-dist suffix. With this option alone, even configuration
files that you have not modified are left untouched. You need to combine it with
--force-confdef to let dpkg overwrite configuration files that you have not modified.
    --force-confnew: always install the new version of the configuration file, the
current version is kept in a file with the .dpkg-old suffix.
    --force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This
is the default behavior of dpkg and this option is mainly useful in combination with
--force-confold.
    --force-confmiss: ask dpkg to install the configuration file if it’s currently
missing (for example because you have removed the file by mistake).

If you use Apt, you can pass options to dpkg with a command-line like this:

$ apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

You can also make those options permanent by creating /etc/apt/apt.conf.d/local:

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}

您可以在 dpkg 手册中找到更多信息和更多选项:http://manpages.ubuntu.com/manpages/xenial/en/man1/dpkg.1.html或者man dpkg即查找“confdef”。

相关内容