Cara mengotomatiskan file konfigurasi yang diubah saat pemutakhiran apt-get di Ubuntu 12

13

Saya suka menggunakan "knife cloudstack server create ..." untuk membangun VM baru. Templat bootstrap saya dimulai dengan "pembaruan apt-get" dan "upgrade apt-get -y".

Pembaruan kemudian terhenti dengan:

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

Jadi sebenarnya ada dua masalah:

Pertama, bisakah saya mendapatkan apt-get untuk melakukan sesuatu secara default? Jelas tidak ada cara untuk memberikan jawaban.

Kedua, saya bahkan tidak tahu apa jawaban yang benar untuk pertanyaan itu. File konfigurasi yang diganti berasal dari templat. Saya belum mencari apa yang "nscd" lakukan. (Agaknya "Y" adalah jawaban yang benar, tetapi penelitian yang terlibat pada saat pertanyaan itu menakutkan.)

Mojo
sumber

Jawaban:

15

Anda bisa memberikan argumen untuk menghindari permintaan. Ini bekerja untuk saya;

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

--force-confold(pilihan saya) akan menjadikan pertanyaan "Apa yang ingin Anda lakukan tentang file konfigurasi yang dimodifikasi" menjadi default N(pertahankan versi yang saat ini diinstal)

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

Peringatan - beberapa file konfigurasi yang dimodifikasi dapat merusak sistem Anda jika disimpan kembali & tidak kompatibel dengan versi paket yang diperbarui. Silakan mengujinya sebelum menggunakan solusi otomatisasi.

Jossef Harush
sumber
5

Jika Anda benar-benar tidak ingin menjawab pertanyaan interaktif apa pun, maka atur DEBIAN_FRONTENDvariabel front end menjadi noninteractive.

Ini bisa semudah DEBIAN_FRONTEND=noninteractive apt-get upgrade.

Anda tidak akan mendapatkan pesan dan standarnya akan dipilih. Dalam kebanyakan kasus, ini berarti file konfigurasi Anda tidak akan berubah, dan Anda akan dibiarkan dengan file bernama seperti *.dpkg-newuntuk semua tempat di mana file konfigurasi tidak tersentuh. Anda kemudian dapat secara manual menyelesaikan perubahan, atau mendorong konfigurasi lokal Anda ke sistem menggunakan sistem manajemen konfigurasi atau apa pun.

Kedua, saya bahkan tidak tahu apa jawaban yang benar untuk pertanyaan itu

Menekan tombol D akan menampilkan perbedaan, yang kemudian dapat Anda periksa. Jika Anda yakin bahwa Anda belum pernah mengubah file itu secara manual, memilih Y untuk menggantinya mungkin aman (Anda telah memverifikasi cadangan Anda meningkatkan KANAN !! ). Memilih N hanya menyimpan file lama yang juga aman 95%, kecuali jika paket memiliki perubahan besar, yang biasanya tercakup dalam catatan changelog / rilis yang juga telah Anda baca sebelum Anda menjalankan perintah upgrade / dist-upgrade.

Melewatinya, cukup coba perintah pertama di lingkungan pengujian Anda. Lihat apakah semuanya tidak berfungsi. Jika Anda benar-benar tidak yakin mendapatkan diff, dan baca dokumentasi untuk paket dan penelitian.

Sakit kepala
sumber
Anda menyarankan DEBIAN_FRONTEND = noninteraktif over --force-ya? Kedengarannya seperti default untuk TIDAK, dan "ya" lebih mungkin benar dalam hal ini. (Saya tidak dapat menekan tombol apa pun karena tidak ada stdin.)
Mojo