Faça o apt-get (ou aptitude) executado com -y, mas não solicite a substituição dos arquivos de configuração?

71

Ao rodar apt-get -y install <packages ...>no Ubuntu 10.04, eu gostaria apt-get(ou aptitudese isso facilita) não solicitar a instalação de dependências adicionais (comportamento -ycomo eu o entendo) e não solicitar a substituição de arquivos de configuração. (que geralmente é o padrão). Infelizmente, --trivial-onlyparece ser o inverso -ye não afeta o prompt mostrado, de acordo com a manpágina.

Em pacotes particulares auch como samba, nullmailer, localepurgee lighttpdter me forçado a interagir com o terminal, mesmo que todo o procedimento foi roteirizado e concebido para ser não-interativo.

0xC0000022L
fonte

Respostas:

97

Você pode usar:

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

Para apenas pacotes específicos, por exemplo, mypackage1 mypackage2:

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

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

Você pode encontrar mais informações e mais opções no manual do dpkg em http://manpages.ubuntu.com/manpages/xenial/en/man1/dpkg.1.html ou man dpkge, por exemplo, procure "confdef".

Savvas Radevic
fonte
33
"Eu acredito que este é auto-explicativo" ... passa a utilizar as opções que eu nunca vi alguém usar para o apt-get
notbad.jpeg
11
@ notbad.jpeg: Acredito que a observação visava a nomeação dessas opções. Acho os nomes realmente auto-explicativos. Claro que saber usá-los não era :-D
0xC0000022L 16/11
3
que tal -y?
JDS
4
Veja também: linux.die.net/man/1/dpkg na --forceseção, descreve as opções confolde confdef. Também é útil: apt-config dumpde askubuntu.com/questions/254129/…
thom_nic 16/17
3
"auto-explicativo" ... hmm, achei essa descrição extremamente confusa, principalmente se usá-las em combinação ou não. O que esclareceu as coisas foi dpkg(1). Obrigado @thom_nic.
Lloeki #