Faire apt-get (ou aptitude) exécuté avec -y mais sans demander le remplacement des fichiers de configuration?

71

Lors de l' exécution apt-get -y install <packages ...>sur Ubuntu 10.04 , je voudrais apt-get(ou aptitudesi cela le rend plus facile) de ne pas me demander lors de l' installation des dépendances supplémentaires (comportement de ce -yque je comprends) et mais pas me demander d'écraser des fichiers de configuration, au lieu suppose de garder celles qui existent toujours (ce qui est généralement la valeur par défaut). Malheureusement, --trivial-onlysemble être l'inverse de -yet ne pas affecter l'invite qui est affichée, selon la manpage.

Dans les emballages particuliers auch comme samba, nullmailer, localepurgeet lighttpdont m'a forcé à interagir avec le terminal, même si toute la procédure a été scénarisé et censé être non-interactive.

0xC0000022L
la source

Réponses:

97

Vous pouvez utiliser:

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

Pour seulement des paquets spécifiques, par exemple mypackage1 mypackage2:

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

Source: 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";
}

Vous pouvez trouver plus d'informations et plus d'options dans le manuel de dpkg à l' adresse http://manpages.ubuntu.com/manpages/xenial/en/man1/dpkg.1.html ou à la man dpkgrecherche de "confdef".

Savvas Radevic
la source
33
"Je crois que cela va de soi" ... procède à l'utilisation d'options que je n'ai jamais vues utiliser pour apt-get
notbad.jpeg
1
@ notbad.jpeg: Je pense que la remarque visait à nommer ces options. Je trouve les noms très explicites. Bien sûr, savoir les utiliser n'était pas :-D
0xC0000022L
3
qu'en est-il -y?
JDS
4
Voir aussi: linux.die.net/man/1/dpkg dans la --forcesection, elle décrit les options confoldet confdef. Aussi utile: apt-config dumpde askubuntu.com/questions/254129/…
thom_nic
3
"explicite" ... hmm, j'ai trouvé cette description extrêmement déroutante, surtout s'il fallait les utiliser en combinaison ou non. Celui qui a éclairci les choses était dpkg(1). Merci @thom_nic.
Lloeki