Jawaban yang diberikan oleh Ryan Thomson mengarah ke jalan yang benar. Tetap tidak akan bisa melakukan pekerjaan (Alasan detail diberikan di bawah).
Cara yang benar (dan termudah) untuk melakukannya adalah -o
dengan menggunakan apt
untuk melewatkan opsi dpkg dan memaksa dpkg
untuk bertanya kepada Anda apakah Anda ingin mempertahankan file konfigurasi yang diubah atau yang asli. Perintahnya akan seperti ini -
sudo apt-get --reinstall -o Dpkg::Options::="--force-confask" install foo
Ini akan mengajukan pertanyaan seperti
Configuration file '/etc/foo/foo.conf'
==> Modified (by you or by a script) since installation.
Version in package is the same as at last installation.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** foo.conf (Y/I/N/O/D/Z) [default=N] ?
Anda harus menekan Y atau I untuk menginstal file konfigurasi asli pengelola paket. Anda bahkan dapat menekan D untuk melihat perubahan apa atau memulai shell root dengan opsi Z untuk memperbaiki diri Anda.
Catatan: Setelah penggantian, Anda akan menemukan file yang dimodifikasi sebagaiat /etc/foo/foo.conf.dpkg-old
Mengapa opsi lain tidak berfungsi?
Karena opsi lain dalam dpkg tidak berfungsi dengan baik. Opsi yang berhubungan dengan file konfigurasi paket adalah
--force-confmiss
--force-confnew
--force-confold
--force-confdef
--force-confmiss
tidak akan berfungsi ketika versi paket tidak berubah. Dari halaman manual
Jika sebuah conffile telah dimodifikasi dan versi dalam paket memang berubah, selalu instal versi baru tanpa diminta , kecuali --force-confdef juga ditentukan, dalam hal ini tindakan default lebih disukai.
--force-confmiss
bekerja dengan conffiles yang hilang. Itu juga akan gagal ketika versi tidak berubah. Mengutip halaman manual
confmiss: Jika sebuah conffile hilang dan versi dalam paket memang berubah, selalu instal conffile yang hilang tanpa diminta. Ini berbahaya, karena itu berarti tidak mempertahankan perubahan (menghapus) yang dilakukan pada file
--force-confold
akan mempertahankan versi yang dimodifikasi hanya jika versi tersebut diubah . Untuk paket yang sama, itu juga akan gagal. Mengutip halaman manual
confold: Jika sebuah conffile telah dimodifikasi dan versi dalam paket memang berubah, selalu pertahankan versi yang lama tanpa diminta , kecuali --force-confdef juga ditentukan, dalam hal ini tindakan default lebih disukai.
--force-confdef
juga akan gagal karena tindakan default adalah untuk mempertahankan file yang lebih lama (Diindikasikan dari pesan yang ditunjukkan dengan --force-confask
. Ini memiliki garis (Y/I/N/O/D/Z) [default=N]
yang berarti mempertahankan adalah default. Lihat di atas). Dan jika --force-confnew
ditentukan tetapi versi tidak berubah, itu juga tidak akan berfungsi. Mengutip halaman manual
confdef: Jika sebuah conffile telah dimodifikasi dan versi dalam paket memang berubah, selalu pilih aksi default tanpa diminta. Jika tidak ada tindakan standar, ia akan berhenti bertanya kepada pengguna kecuali --force-confnew atau --force-confold juga diberikan, dalam hal ini ia akan menggunakannya untuk memutuskan tindakan final.
Hanya --force-confask
akan berfungsi, karena itu akan secara eksplisit mengajukan pertanyaan kepada Anda bahkan ketika versinya sama. Mengutip halaman manual
confask: Jika sebuah conffile telah dimodifikasi selalu menawarkan untuk menggantinya dengan versi dalam paket, bahkan jika versi dalam paket tidak berubah (sejak dpkg 1.15.8). Jika salah satu dari - force-confmiss , --force-confnew , --force-confold , atau --force-confdef juga diberikan, itu akan digunakan untuk memutuskan tindakan akhir.
Semoga itu bisa membantu.
foo
, bagaimana jikabar
tergantungfoo
dan saya tidak ingin menghapusbar
?