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.


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.


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

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

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.


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.


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


Apakah itu benar-benar mengembalikan file konfigurasi yang hilang?
poolie

1
Tidak, itu tidak berhasil.
chrishiestand

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.