¿Hace que apt-get (o aptitude) se ejecute con -y pero no solicite el reemplazo de los archivos de configuración?

71

Cuando se ejecuta apt-get -y install <packages ...>en Ubuntu 10.04, me gustaría apt-get(o aptitudesi eso hace que sea más fácil) que no me pregunte cuando instale dependencias adicionales (comportamiento de -ylo que entiendo) y que no me pida que sobrescriba los archivos de configuración, en su lugar supongo que siempre mantendré los existentes. (que suele ser el predeterminado). Desafortunadamente, --trivial-onlyparece ser lo -ycontrario y no afecta el aviso que se muestra, según la manpágina.

En particular, los paquetes auch como samba, nullmailer, localepurgey lighttpdme han obligado a interactuar con el terminal, a pesar de que todo el procedimiento fue escrito y destinado a ser no interactivo.

0xC0000022L
fuente

Respuestas:

97

Puedes utilizar:

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

Solo para paquetes específicos, por ejemplo, mypackage1 mypackage2:

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

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

Puede encontrar más información y más opciones en el manual de dpkg en http://manpages.ubuntu.com/manpages/xenial/en/man1/dpkg.1.html o, man dpkges decir, busque "confdef".

Savvas Radevic
fuente
33
"Creo que esto se explica por sí mismo" ... procede a usar opciones que nunca he visto que nadie use para apt-get
notbad.jpeg
1
@ notbad.jpeg: Creo que el comentario apuntaba a nombrar esas opciones. Encuentro que los nombres se explican por sí mismos. Por supuesto, saber usarlos no fue :-D
0xC0000022L
3
¿qué pasa -y?
JDS
44
Vea también: linux.die.net/man/1/dpkg en la --forcesección, describe las opciones confoldy confdef. También útil: apt-config dumpde askubuntu.com/questions/254129/…
thom_nic
3
"se explica por sí mismo" ... hmm, esa descripción me pareció extremadamente confusa, especialmente si usarlos en combinación o no. El que aclaró las cosas fue dpkg(1). Gracias @ thom_nic.
Lloeki el