Linux: comment restaurer un fichier de configuration avec apt-get / aptitude?

37

J'ai parfois perdu mon fichier de configuration "/etc/mysql/my.cnf" et je souhaite le restaurer. Le fichier appartient au paquet mysql-commonqui est nécessaire pour certaines fonctionnalités vitales, je ne peux donc pas le dire simplement purge && install: les dépendances seraient également désinstallées (ou si je peux les ignorer temporairement, elles ne fonctionneront pas).

Existe-t-il un moyen de restaurer le fichier de configuration à partir d'un paquet sans ardécompresser le fichier de paquet?

dpkg-reconfigure mysql-common ne pas le restaurer.

kolypto
la source
Je viens toujours d'extraire les fichiers du paquet avec 7zip ( 7z x /path/to/foo.deb, alors 7z x data.tar.gz) ....
Quack quixote
Personnellement, j'aime installer quelque chose comme etckeeper sur mon système juste après l'installation. Ainsi, toutes les modifications et versions des fichiers de configuration sont stockées. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache
4
Et ceci, les enfants, c'est pourquoi nous avons des sauvegardes ...
womble
1
@ womble: en fait, la situation est légèrement différente: j'ai un fichier de configuration, mais il a été modifié par moi. Je n'utilisais pas de conf.ddossiers, et lorsque le mainteneur du paquet le met à jour, le processus de mise à niveau devient très utile pour afficher les messages "fichier de configuration modifié" :) La raison n'est pas très importante, alors j'ai décidé de simplifier ma question
kolypto

Réponses:

39

dpkg -i --force-confmiss mysql-common.debrecréera tous les fichiers de configuration manquants, c'est- /etc/mysql/my.cnfà- dire dans votre cas.

TRS-80
la source
8
Merci! Sur Ubuntu, c'étaitsudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto
10

Dans Debian Squeeze - du moins -, nous pouvons également le faire de cette façon, après su- ou sudopour Ubuntu -

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

Cela va prendre en charge les dépendances mysql-serveret réinitialiser tous les fichiers de configuration manquants du lot, y compris mysql-common. Les fichiers en conflit (restants) seront invités à être conservés ou réinitialisés.

Malheureusement, il y a un bug dans aptitude , et

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

ne fonctionnera pas . Nous devons donc le faire un par un avec

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

Cela supprimera tout fichier de configuration , original ou modifié, mais les fichiers personnalisés seront préservés, avec un message à l'écran. Notez, en passant, que dpkgreconnaît également --force-confnewet les --force-confoldoptions.

Pour obtenir mysql-serverla liste des dépendances imprimée à l'écran:

aptitude --simulate remove mysql-server
Jean Montané
la source
9

Rien de ce qui précède n'a fonctionné pour moi - peut-être obsolète - j'ai quand même trouvé cette solution:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
Dave Hilditch
la source
C'est la commande à utiliser, étant donné qu'aptitude n'est pas par défaut. N'oubliez pas le sudo :)
mardi
3

Vous pouvez trouver les fichiers de configuration par défaut de mysql /usr/share/doc/mysql-server-5.0/examples/ou similaires. C’est peut-être tout ce dont vous avez besoin, à moins que certaines configurations vraiment spéciales / ésotériques ne soient activées.

sybreon
la source
0

Dans mon /etc/mysql/répertoire, j'ai un my.cnf.origfichier qui contient le contenu original de my.cnf.

Je ne sais pas d'où /etc/mysql/my.cnf.origvient - c'est-à-dire si je l'ai créé ou si l'installation de mysql l'a fait. Je me souviens vérifiais à un moment donné qu'il était exactement le même quemy.cnf

Si vous avez une telle chose, et non, my.cnf vous pouvez copier l'un sur l'autre.

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

Dans tous les cas, il s’agit d’un simple fichier texte de 3897 octets que vous pouvez copier et coller à partir d’un fichier de configuration générique Mysql.

Une fois que vous aurez restauré votre ordinateur, ce sera une bonne idée /etc/mysql/my.cnfde le faire afin de pouvoir le restaurer facilement à l'avenir.

pavium
la source
Je fais habituellement une copie de sauvegarde des fichiers de configuration d'installation d'origine en les copiant dans /path/to/foo.conf.orig... s'ils sont installés automatiquement, ils sont créés lorsque apt-get installe une nouvelle version et détecte que vous avez modifié le fichier de configuration d'origine.
Quack Quichotte
Hmm, plus j'y pense, plus il me semble que j'ai créé /etc/mysql/my.cnf.origune sauvegarde qui ne serait pas écrasée par une nouvelle installation. Mais, le placer dans un endroit totalement différent est une bonne idée.
Pavium
J'essayais d'être générique; pour my.cnf je le copierais dans /etc/mysql/my.cnf.orig. Ensuite, naturellement, faites une sauvegarde de l'archive /etc. :)
Quack Quichotte
0

Vous devez réinstaller mysql-common avec cette commande:apt-get install --reinstall mysql-common

Nikolay Chuprina
la source
Est-ce que cela restaure réellement les fichiers de configuration manquants?
poolie
1
Non, ça ne marche pas.
chrishiestand