Linux: bagaimana cara mengembalikan file konfigurasi menggunakan apt-get / aptitude?

37

Saya kadang-kadang kehilangan file konfigurasi saya "/etc/mysql/my.cnf", dan ingin mengembalikannya. File milik paket mysql-commonyang diperlukan untuk beberapa fungsi vital jadi saya tidak bisa hanya purge && installitu: dependensi juga akan dihapus (atau jika saya bisa mengabaikannya sementara, mereka tidak akan berfungsi).

Apakah ada cara untuk mengembalikan file konfigurasi dari suatu paket tanpa armelepas file paket?

dpkg-reconfigure mysql-common tidak mengembalikannya.

kolypto
sumber
aku selalu hanya diekstrak file paket dengan 7zip ( 7z x /path/to/foo.deb, kemudian 7z x data.tar.gz) ....
dukun quixote
Secara pribadi, saya suka mengatur sesuatu seperti dllkeeper pada sistem saya tepat setelah saya menginstal. Dengan begitu semua perubahan dan versi file konfigurasi dapat disimpan. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache
4
Dan ini, anak-anak, adalah mengapa kita memiliki backup ...
womble
1
@ Womble: sebenarnya, situasinya sedikit berbeda: saya punya file konfigurasi, tapi itu dimodifikasi oleh saya. Saya tidak menggunakan conf.dfolder, dan ketika pengelola paket memperbaruinya, proses pemutakhiran menjadi sangat tertarik untuk menampilkan pesan "file konfigurasi" :) Alasannya tidak begitu penting untuk disebutkan, jadi saya memutuskan untuk menyederhanakan pertanyaan saya
kolypto

Jawaban:

39

dpkg -i --force-confmiss mysql-common.debakan membuat ulang file konfigurasi yang hilang, misalnya /etc/mysql/my.cnfdalam kasus Anda.

TRS-80
sumber
8
Terima kasih! Di Ubuntu, itusudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto
10

Di Debian Squeeze - setidaknya -, kita juga bisa melakukannya dengan cara ini, setelah su- atau sudountuk Ubuntu -

aptitude install -o Dpkg::Options::=--force-confmiss mysql-server

Ini akan menangani dependensi mysql-serverdan mengatur ulang semua file conf lot yang hilang, termasuk mysql-common. File yang berselisih (tersisa) akan diminta untuk disimpan atau diatur ulang.

Sayangnya, ada bug di aptitude , dan

aptitude purge -o Dpkg::Options::=--force-all mysql-server

tidak akan bekerja . Jadi kita harus melakukannya satu per satu dengan

dpkg --force-all --purge  mysql-common  mysql-server  mysql-client …

Ini akan menghapus file konfigurasi apa pun , asli atau diubah, tetapi file khusus akan dipertahankan, dengan pesan di layar. Perhatikan, omong-omong, itu dpkgjuga mengenali --force-confnewdan --force-confoldopsi.

Untuk mendapatkan mysql-serverdaftar dependensi yang dicetak di layar:

aptitude --simulate remove mysql-server
Jean Montané
sumber
9

Tidak satu pun di atas bekerja untuk saya - mungkin sudah ketinggalan zaman - saya menemukan solusi ini:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
Dave Hilditch
sumber
Ini adalah perintah untuk digunakan, mengingat aptitude tidak default. Jangan lupakan sudo :)
nsn
3

Anda dapat menemukan file konfigurasi mysql default di /usr/share/doc/mysql-server-5.0/examples/atau serupa. Mungkin itu yang Anda butuhkan kecuali Anda mengaktifkan beberapa konfigurasi khusus / esoterik.

sybreon
sumber
0

Dalam /etc/mysql/direktori saya , saya punya my.cnf.origfile yang berisi konten asli my.cnf.

Saya tidak yakin dari mana /etc/mysql/my.cnf.origdatangnya - yaitu, apakah saya membuatnya, atau instalasi mysql melakukannya. Aku ingat memeriksa pada satu waktu itu adalah persis sama denganmy.cnf

Jika Anda memiliki hal seperti itu, dan tidak, my.cnf Anda dapat menyalin satu ke yang lain.

sudo cp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf

Dalam kasus apa pun, ini adalah file teks sederhana berukuran 3897 byte dan Anda dapat menyalin dan menempel dari file konfigurasi Mysql umum.

Ini akan menjadi ide yang baik setelah Anda mengembalikan Anda /etc/mysql/my.cnfuntuk membuat salinan sehingga Anda dapat mengembalikannya dengan mudah di masa depan.

pavium
sumber
Saya biasanya membuat cadangan file konfigurasi instal-asli dengan menyalinnya ke /path/to/foo.conf.orig... jika ini diinstal secara otomatis, mereka dibuat ketika apt-get menginstal versi baru dan mendeteksi Anda telah mengubah file konfigurasi asli.
quack quixote,
Hmm, semakin saya memikirkannya, semakin saya membuat /etc/mysql/my.cnf.origcadangan yang tidak akan ditimpa oleh instalasi baru. Tapi, menempatkannya di tempat yang sama sekali berbeda adalah ide yang bagus.
pavium
Saya berusaha menjadi generik; untuk my.cnf saya akan menyalinnya ke /etc/mysql/my.cnf.orig. Kemudian, secara alami, buat cadangan tarball /etc. :)
quack quixote
0

Anda perlu menginstal ulang mysql-common dengan perintah ini:apt-get install --reinstall mysql-common

Nikolay Chuprina
sumber
Apakah itu benar-benar mengembalikan file konfigurasi yang hilang?
poolie
1
Tidak, itu tidak berhasil.
chrishiestand
0

Tampaknya beberapa solusi yang lain tidak akan bekerja jika file konfigurasi paket dikelola dengan ucf.

Dalam hal ini Anda dapat menggunakan:

UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
Skippy le Grand Gourou
sumber