Linux: як відновити конфігураційний файл за допомогою apt-get / aptitude?


37

Я час від часу втрачав свій конфігураційний файл "/etc/mysql/my.cnf" і хочу відновити його. Файл належить до пакету, mysql-commonякий необхідний для певної життєвої функціональності, тому я не можу просто purge && installйого: залежності також буде видалено (або якщо я можу їх ігнорувати тимчасово, вони не працюватимуть).

Чи є спосіб відновити конфігураційний файл з пакету, не arзнімаючи з нього файл пакета?

dpkg-reconfigure mysql-common не відновив.


Я завжди просто витягував файли пакунків з 7zip ( 7z x /path/to/foo.deb, тоді 7z x data.tar.gz) ....
шарлатаний кіхот

Особисто мені подобається встановлювати щось на зразок etckeeper в моїй системі відразу після установки. Таким чином зберігаються всі зміни та версії файлів конфігурації. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache

4
І це, діти, тому у нас є резервні копії ...
Утром

1
@womble: насправді ситуація дещо інша: у мене є файл конфігурації, але він змінений мною. Я не використовував conf.dпапки, і коли оновлення пакета оновить його, процес оновлення стає дійсно захопленим відображенням повідомлень "змінено конфігураційний файл" :) Причину не так важливо згадувати, тому я вирішив спростити своє питання
kolypto

Відповіді:


39

dpkg -i --force-confmiss mysql-common.debвідтворить будь-які файли конфігурації, які відсутні, тобто /etc/mysql/my.cnfу вашому випадку.


8
Спасибі! На Ubuntu це булоsudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
колипто

10

У Debian Squeeze - принаймні - ми також можемо зробити це так, після su- або sudoдля Ubuntu -

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

Це забезпечить залежність mysql-serverта скидає всі відсутні файли конф партії, в тому числі mysql-common. Конфліктуючі (залишилися) файли буде запропоновано зберегти або скинути.

На жаль, є помилка у здатності та

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

не вийде . Тому ми повинні робити це по черзі

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

Це видалить будь-який конфігураційний файл , оригінальний або модифікований, але користувацькі файли будуть збережені з екранним повідомленням. Зауважте, до речі, що dpkgтакож розпізнає --force-confnewі --force-confoldваріанти.

Щоб отримати mysql-serverдрук списку залежностей на екрані:

aptitude --simulate remove mysql-server

9

Жодне з перерахованого вище не працювало для мене - можливо, застаріло - все одно, я знайшов таке рішення:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common

Це команда для використання, враховуючи, що придатність не є типовою. Не забудьте sudo :)
nsn

3

Ви можете знайти конфігураційні файли mysql за замовчуванням у /usr/share/doc/mysql-server-5.0/examples/подібних. Це може бути все, що вам потрібно, якщо ви не ввімкнули якісь особливі / езотеричні конфігурації.


0

У своєму /etc/mysql/каталозі я маю my.cnf.origфайл, який містить оригінальний вміст my.cnf.

Я не впевнений, звідки /etc/mysql/my.cnf.origвзявся - тобто я створив його, чи це зробила установка mysql. Я пам'ятаю , як перевірка в один час , що він був точно такий же , як іmy.cnf

Якщо у вас є така річ, і ні, my.cnf ви можете скопіювати одну до іншої.

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

У будь-якому випадку це простий текстовий файл з 3897 байтів, і ви можете скопіювати та вставити з загального файлу конфігурації Mysql.

Коли ви відновите свою /etc/mysql/my.cnfкопію, це буде хорошою ідеєю, щоб зробити копію, щоб потім було легко її відновити.


Зазвичай я створюю резервну копію конфігураційних файлів оригінальної установки, копіюючи їх у /path/to/foo.conf.orig... якщо вони встановлюються автоматично, вони створюються, коли apt-get встановлює нову версію і виявляє, що ви змінили оригінальний файл конфігурації.
шарлатаний кіхот

Хм, чим більше я думаю про це, тим більше здається, що я створив /etc/mysql/my.cnf.origрезервну копію, яку не було б замінено новою установкою. Але ставити його десь зовсім іншим - це гарна ідея.
pavium

Я намагався бути родовим; для my.cnf я би скопіював це /etc/mysql/my.cnf.orig. Потім, природно, зробіть резервну копію /etc. :)
кихат шарлатан

0

Вам потрібно перевстановити mysql-common за допомогою цієї команди:apt-get install --reinstall mysql-common


Це насправді відновлює відсутні файли конфігурації?
poolie

1
Ні, це не працює.
Христос

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.