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

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

4
И это, дети, вот почему у нас есть резервные копии ...
womble

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

Ответы:


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и сбросит все недостающие файлы conf лота, в том числе mysql-common. Конфликтующие (оставшиеся) файлы будут предложены для сохранения или сброса.

К сожалению, в aptitude есть ошибка , и

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

Это команда для использования, учитывая, что aptitude не используется по умолчанию. Не забудьте 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резервную копию, которая не будет перезаписана при новой установке. Но, помещая это куда-то совсем другое, это хорошая идея.
павильон

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

0

Вам необходимо переустановить mysql-common с помощью этой команды:apt-get install --reinstall mysql-common


Это действительно восстанавливает отсутствующие файлы конфигурации?
пул

1
Нет, это не работает.
chrishiestand

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.