Je souhaite rétablir un fichier dans /etc/
sa forme d'origine. J'ai modifié le fichier depuis son installation. Comment puis-je rétablir ce fichier de configuration? Apt est assez intelligent pour ne pas écraser les fichiers de configuration modifiés, alors comment lui dire que je veux qu'il le fasse?
Par souci d'argument, disons que je veux restaurer le fichier /etc/foo.conf
du package foo
.
configuration
apt
Ryan C. Thompson
la source
la source
foo
, que faire si celabar
dépendfoo
et que je ne veux pas supprimerbar
?Réponses:
La réponse fournie par Ryan Thomson allait dans le bon sens. Il ne serait toujours pas en mesure de faire le travail (la raison détaillée est donnée ci-dessous).
La façon correcte (et la plus simple) de le faire consiste à utiliser l' option
-o
avecapt
pour passer dpkg etdpkg
à vous forcer à vous demander si vous souhaitez conserver les fichiers de configuration modifiés ou les fichiers d'origine. La commande sera comme ça -Cela vous poserait une question comme
Vous devez appuyer sur Y ou I pour installer le fichier de configuration d'origine du responsable du package. Vous pouvez même appuyer sur D pour voir quelles sont les modifications ou démarrer un shell racine avec l'option Z pour vous réparer.
Remarque: Après le remplacement, vous trouverez votre fichier modifié comme
at /etc/foo/foo.conf.dpkg-old
Pourquoi d'autres options ne fonctionneraient pas?
Parce que les autres options de dpkg ne fonctionnent pas bien. Les options qui traitent des fichiers de configuration d'un package sont
--force-confmiss
--force-confnew
--force-confold
--force-confdef
--force-confmiss
ne fonctionnerait pas lorsque la version du package ne change pas. Depuis la page de manuel--force-confmiss
fonctionne avec des conffiles manquants. Il échouera également lorsque la version n'a pas changé. Citation de la page de manuel--force-confold
conservera la version modifiée uniquement si la version est modifiée . Pour le même package, il échouera également. Citation de la page de manuel--force-confdef
échouera également car l'action par défaut consiste à conserver l'ancien fichier (indiqué dans le message illustré par--force-confask
. Il a une ligne(Y/I/N/O/D/Z) [default=N]
qui signifie que la conservation est par défaut. Voir ci-dessus). Et si--force-confnew
est spécifié mais que la version ne change pas, cela ne fonctionnera pas non plus. Citation de la page de manuelSeul
--force-confask
fonctionnera, car il vous posera explicitement la question même lorsque la version est la même. Citation de la page de manuelJ'espère que cela vous aidera.
la source
--force-confnew
? J'ai essayéapt-get […] -y
, mais cela n'a pas fonctionné. (Si ce n'est pas possible, veuillez également modifier la réponse pour le dire.)--force-confnew
sans demander? Je pense que c'est le cas par défaut, ce qui signifie qu'il conservera vos modifications.--force-confask
faitapt
toujours poser la question, sinon, vous utiliseriez d'autres options si vous connaissez déjà la réponse.-o Dpkg::Options::=--force-confnew
sans succès (comme votre réponse l'avait prédit) et je n'ai pas lu le message d'erreur quand j'ai essayé-o Dpkg::Options::="--force-confask --force-confnew"
. Cependant,apt-get --reinstall -o Dpkg::Options::=--force-confask -o Dpkg::Options::=--force-confnew install $package
correctement remplacé les fichiers de configuration de modification de$package
. Merci!Si le mal est déjà fait, voici un moyen en ligne de commande de récupérer la version officielle du fichier de configuration. Tout d'abord, téléchargez le fichier de package (avec
apt-get --download-only
comme ci-dessous, ou à partir de la page de package sur packages.ubuntu.com ), puis extrayez son contenu dans un emplacement temporaire. Vous pouvez ensuite copier le fichier dans/etc
. Assurez-vous de respecter les autorisations d'origine (la plupart des fichiers dans/etc
appartiennent à root et au mode 644 (c'est-à-dire lisibles en mots et en écriture en racine), mais chaque exception est là pour une raison importante).Notez que cela ne s'applique pas aux fichiers de configuration qui ne proviennent pas d'un package, tels que
/etc/fstab
ou/etc/passwd
. Si vous les perdez, vous êtes seul. (La plupart dépendent de toute façon du système.)Pour l'avenir, je recommande d'utiliser etckeeper . Installez le package et exécutez
sudo etckeeper init
. Cela configure le contrôle de version pour tous les fichiers dans/etc
. Vous n'avez rien d'autre à faire pour gérer etckeeper; vous devez uniquement interagir avec lui lorsque vous souhaitez effectuer une opération de contrôle de version, par exemple en vous référant à des fichiers plus anciens. Les fichiers sont automatiquement validés avant et après chaque exécution d'apt et chaque nuit (ceci est configurable).Par défaut, sur Ubuntu, etckeeper utilise Bazaar . Modifiez le paramètre
/etc/etckeeper/etckeeper.conf
avant de lanceretckeeper init
si vous préférez Darcs, Git ou Mercury.Avec Bazaar, pour revenir
/etc/foo.conf
à la dernière version validée:Si vous souhaitez remonter plus loin dans le temps, utilisez
sudo bzr log foo.conf
pour afficher l'historique du fichier etsudo bzr revert -r 42 foo.conf
si vous avez déterminé qu'ilrevno: 42
s'agit de la révision à laquelle vous souhaitez revenir.la source
Vous pouvez télécharger le package manuellement depuis packages.ubuntu.com , extraire le fichier et remplacer votre version par celui-ci.
Ou vous pourriez:
Le second semble beaucoup plus brutal. Il peut également effacer d'autres configurations s'il utilise plusieurs fichiers. Le premier est plus de clics et d'efforts, mais il semble beaucoup plus sûr.
Pour la seconde, vous pourrez peut-être simplement supprimer le fichier et --reinstall pourrait le remplacer. Si c'est le cas, ce serait plus sûr.
la source
apt-get --reinstall purge package
cela ne fera pas de mal aux personnes à charge.Selon le package, vous pouvez trouver un fichier de configuration par défaut dans
/usr/share/doc/foo/examples
.la source
Utilisez Synaptic (Ubuntu tweak est encore plus pratique mais synaptic est plus simple) et choisissez «supprimer complètement le package». Cela supprimera tous les fichiers de configuration (vous voudrez peut-être sauvegarder ces fichiers!).
Réinstallez ensuite. Vous avez terminé.
Avec Ubuntu Tweak, vous obtenez encore plus d'options pour le nettoyage, le relancement et les sauvegardes de configuration. Vous voulez peut-être y jeter un œil. C'est dans le softwarecenter.
ps: Synaptic utilise également l'option "purge" (comme mentionné par Oli ci-dessus ...) - juste avec une interface graphique pour une manipulation plus confortable.
la source
J'ai finalement trouvé la réponse dont je me souvenais vaguement il y a des années:
L'argument "confnew" force dpkg à remplacer les fichiers de configuration modifiés par ceux fournis par le paquet, et "confmiss" fait de même avec les fichiers de configuration qui ont été supprimés.
Selon ce journal de discussion , vous pouvez également utiliser ces options via apt-get de la manière suivante:
ce qui vous évite d'avoir à trouver le fichier deb vous-même.
De toute évidence, ces options sont dangereuses et ont le potentiel de détruire des fichiers de configuration système importants en cas de mauvaise utilisation.
la source
--force-confnew
est qu'il n'installera de nouveaux fichiers de configuration que si la version est modifiée. Si vous réinstallez la même version, il n'installera pas de nouveau fichier de configuration car je l'ai testé explicitement--force-confmiss
n'installera un nouveau fichier de configuration que si la version est modifiée et que la configuration est manquante. Comme décrit dans la page de manuelconfmiss: If a conffile is missing and the version in the package did change, always install the missing conffile without prompting. This is dangerous, since it means not preserving a change (removing) made to the file.