Membuat apt-get (atau aptitude) berjalan dengan -y tetapi tidak meminta penggantian file konfigurasi?

71

Ketika berjalan apt-get -y install <packages ...>di Ubuntu 10.04 saya ingin apt-get(atau aptitudejika itu membuatnya lebih mudah) untuk tidak meminta saya ketika menginstal dependensi tambahan (perilaku -yseperti yang saya mengerti) dan tetapi tidak meminta saya tentang menimpa file konfigurasi, alih-alih menganggap selalu yang sudah ada (yang biasanya default). Sayangnya --trivial-onlysepertinya kebalikan dari -ydan tidak mempengaruhi prompt yang ditampilkan, menurut manhalaman.

Dalam paket khusus auch sebagai samba, nullmailer, localepurgedan lighttpdtelah memaksa saya untuk berinteraksi dengan terminal, meskipun seluruh prosedur itu scripted dan dimaksudkan untuk menjadi non-interaktif.

0xC0000022L
sumber

Jawaban:

97

Anda dapat menggunakan:

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

Hanya untuk paket tertentu, misalnya mypackage1 mypackage2:

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

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

Anda dapat menemukan informasi lebih banyak dan lebih banyak opsi dalam manual dpkg di http://manpages.ubuntu.com/manpages/xenial/en/man1/dpkg.1.html atau man dpkgdan dengan kata lain mencari "confdef".

Savvas Radevic
sumber
33
"Saya percaya ini cukup jelas" ... mulai menggunakan opsi yang belum pernah saya lihat digunakan orang untuk apt-get
notbad.jpeg
1
@ notbad.jpeg: Saya percaya pernyataan itu ditujukan pada penamaan opsi-opsi itu. Saya menemukan nama-nama yang jelas. Tentu saja mengetahui untuk menggunakannya bukan :-D
0xC0000022L
3
bagaimana -y?
JDS
4
Lihat juga: linux.die.net/man/1/dpkg di bawah --forcebagian, ini menjelaskan opsi confolddan confdef. Juga membantu: apt-config dumpdari askubuntu.com/questions/254129/…
thom_nic
3
"Cukup jelas" ... hmm, saya menemukan deskripsi yang sangat membingungkan, terutama apakah akan menggunakannya dalam kombinasi atau tidak. Yang membersihkan semuanya adalah dpkg(1). Terima kasih @ thom_nic.
Lloeki