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
avec apt
pour passer dpkg et dpkg
à vous forcer à vous demander si vous souhaitez conserver les fichiers de configuration modifiés ou les fichiers d'origine. La commande sera comme ça -
sudo apt-get --reinstall -o Dpkg::Options::="--force-confask" install foo
Cela vous poserait une question comme
Configuration file '/etc/foo/foo.conf'
==> Modified (by you or by a script) since installation.
Version in package is the same as at last installation.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** foo.conf (Y/I/N/O/D/Z) [default=N] ?
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é commeat /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
Si un conffile a été modifié et que la version du package a changé, installez toujours la nouvelle version sans invite, sauf si --force-confdef est également spécifié, auquel cas l'action par défaut est préférée.
--force-confmiss
fonctionne avec des conffiles manquants. Il échouera également lorsque la version n'a pas changé. Citation de la page de manuel
confmiss: Si un conffile est manquant et que la version du package a changé, installez toujours le conffile manquant sans invite. Ceci est dangereux, car cela signifie de ne pas conserver une modification (suppression) apportée au fichier
--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
confold: si un conffile a été modifié et que la version du package a changé, conservez toujours l'ancienne version sans invite, sauf si --force-confdef est également spécifié, auquel cas l'action par défaut est préférée.
--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 manuel
confdef: Si un conffile a été modifié et que la version dans le package a changé, choisissez toujours l'action par défaut sans invite. S'il n'y a pas d'action par défaut, il s'arrêtera pour demander à l'utilisateur à moins que --force-confnew ou --force-confold ne soit également donné, auquel cas il l'utilisera pour décider de l'action finale.
Seul --force-confask
fonctionnera, car il vous posera explicitement la question même lorsque la version est la même. Citation de la page de manuel
confask: Si un conffile a été modifié, proposez toujours de le remplacer par la version du package, même si la version du package n'a pas changé (depuis dpkg 1.15.8). Si l'un des paramètres --force-confmiss , --force-confnew , --force-confold ou --force-confdef est également indiqué, il sera utilisé pour décider de l'action finale.
J'espère que cela vous aidera.
foo
, que faire si celabar
dépendfoo
et que je ne veux pas supprimerbar
?