Заставить apt-get (или aptitude) работать с -y, но не запрашивать замену файлов конфигурации?

71

При работе apt-get -y install <packages ...>в Ubuntu 10.04 я хотел бы apt-get(или, aptitudeесли это облегчает) не предлагать мне при установке дополнительных зависимостей (поведение, -yкак я понимаю) и не предлагать мне перезаписывать файлы конфигурации, вместо этого предполагать, что существующие файлы всегда будут сохраняться (который обычно используется по умолчанию). К сожалению, --trivial-onlyпохоже на обратную -yи не влияет на приглашение, которое отображается, согласно manстранице.

В частности , пакеты ОШ , как samba, nullmailer, localepurgeи lighttpdзаставил меня взаимодействовать с терминалом, даже если вся процедура была по сценарию и предназначается , чтобы быть неинтерактивными.

0xC0000022L
источник

Ответы:

97

Вы можете использовать:

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».

Саввас Радевич
источник
33
«Я считаю, что это само за себя» ... продолжает использовать опции, которые я никогда не видел, чтобы кто-то использовал для apt-get
notbad.jpeg
1
@ notbad.jpeg: Я считаю, что замечание было направлено на наименование этих вариантов. Я считаю, что имена действительно говорят сами за себя. Конечно, знать, как их использовать, не было :-D
0xC0000022L
3
о чем -y?
JDS
4
Смотрите также: linux.die.net/man/1/dpkg в --forceразделе, он описывает параметры confoldи confdef. Также полезно: apt-config dumpот askubuntu.com/questions/254129/…
thom_nic
3
"само за себя" ... хм, я нашел это описание чрезвычайно запутанным, особенно если использовать их в комбинации или нет. Тот, который все прояснил, был dpkg(1). Спасибо @thom_nic.
Ллоэки