dispatch-conf/fr
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
- how to revert a change
- how backups are made
- is archive-dir still an option ? it isn't in the config file by default
dispatch-conf est un utilitaire inclus dans Portage, utilisé pour gérer de manière sûre et pratique les fichiers de configuration après les mises à jour de paquets. Il s'agit d'un outil important pour gérer le problème de la transition de la configuration entre les mises à jour de paquets, sans que l'utilisateur n'ait à migrer manuellement les changements.
dispatch-conf dispatch-conf permet aux administrateurs système d'examiner les modifications apportées aux fichiers de configuration par Portage, afin de gérer de manière standard les changements apportés à la structure de la configuration d'un paquet mis à jour. Portage indiquera quand les fichiers de configuration doivent être mis à jour, et dispatch-conf proposera d'utiliser la nouvelle configuration telle quelle, de rejeter les changements, ou de fusionner sélectivement les modifications. dispatch-conf mettra automatiquement à jour les fichiers de configuration que l'utilisateur n'a jamais modifiés, ou qui diffèrent de la version actuelle uniquement par des données CVS superflues, des commentaires ou des espaces blancs.
dispatch-conf conserve un historique des modifications et permet de revenir aux versions précédentes, de sorte que toute erreur puisse être corrigée. Les modifications apportées aux fichiers de configuration sont enregistrées dans le répertoire d'archivage. Il peut également s'intégrer à rcs pour permettre une gestion des fichiers de configuration contrôlée par version.
dispatch-conf vérifiera tous les répertoires dans la variable d'environnement CONFIG_PROTECT pour les changements. Tous les fichiers de configuration trouvés dans les chemins de la variable d'environnement CONFIG_PROTECT_MASK ne seront pas protégés et seront automatiquement écrasés.
Avant de lancer dispatch-conf pour la première fois, les paramètres de /etc/dispatch-conf.conf doivent être modifiés, et le répertoire d'archivage spécifié dans /etc/dispatch-conf.conf doit être créé (/etc/config-archive par défaut).
Le problème de la gestion de la configuration avec les mises à jour
La migration de la configuration est un problème général lié à tout processus de mise à jour d'un logiciel : certains changements de version modifient le comportement, de sorte que les paramètres de configuration précédents ne sont plus pertinents pour la nouvelle version. De nouvelles options de configuration peuvent être ajoutées, supprimées, leur signification peut être modifiée ou les noms ou le format de chaque directive peuvent changer.
Chaque projet de logiciel gère cela à sa manière. Certains projets disposent d'un suivi solide des versions de configuration et peuvent transférer automatiquement la configuration d'une version à l'autre ; d'autres projets peuvent rencontrer des problèmes entre les versions majeures, ou lors de la mise à jour à partir de versions beaucoup plus anciennes ; pour certains projets, la mise à jour tout en essayant de préserver les configurations antérieures peut poser des problèmes, voire être impossible.
Il existe une longue convention Unix qui consiste à utiliser des fichiers texte simples, souvent avec une syntaxe semi-standard, pour stocker la configuration. Les mises à jour importantes pouvaient nécessiter une migration manuelle de ces fichiers, sous peine de les voir devenir obsolètes. Cela peut sembler lourd aujourd'hui, mais cela reste un moyen très robuste de gérer la configuration, et évite toute ambiguïté sur la façon dont les directives de configuration peuvent changer entre les versions, ce qui est important pour de nombreux services - parfois critiques - tels que les serveurs Internet.
Configuration
Fichiers
Le fichier de configuration de dispatch-conf est /etc/dispatch-conf.conf. Il se peut que le répertoire référencé par la variable archive-dir de ce fichier doive être créé.
intégration RCS (revision control system)
Lorsqu'ils sont configurés pour utiliser RCS, les droits de lecture et d'exécution des fichiers archivés peuvent être hérités du premier archivage d'un fichier. Si les permissions du fichier de travail ont changé depuis, les permissions du premier archivage peuvent être conservées, ce qui peut entraîner des problèmes de sécurité. L'accès aux fichiers RCS peut être contrôlé en définissant les autorisations du répertoire parent.
Lorsque dispatch-conf est configuré pour s'intégrer à rcs, il stocke toutes les modifications dans /etc/config-archive.
Installer un système de contrôle des révisions :
root #
emerge --ask dev-vcs/rcs
Le processus de configuration est aussi simple que d'éditer le fichier de configuration pour inclure ce qui suit :
use-rcs=yes
Les administrateurs peuvent ensuite visualiser les différences en utilisant les utilitaires rcs comme rlog, ainsi que revenir en arrière sur des modifications en utilisant co. Les utilitaires rcs travaillent avec le verrouillage de fichier lui-même, donc au moment où ils sont nécessaires pour des tâches administratives, comprendre que :
- dispatch-conf n'enregistre les modifications effectuées que lorsque le paquet propose de modifier le fichier. Les modifications effectuées par la suite ne sont pas encore enregistrées
- lors de l'extraction d'un fichier, rcs voudra écrire le fichier dans le système de fichiers ; s'assurer de sauvegarder d'abord les fichiers existants ou de travailler avec la sortie standard (voir plus loin)
- pour enregistrer un fichier, un verrou doit d'abord être pris sur ce fichier. Veillez également à ne pas supprimer le fichier de travail
Voir l'historique des validations sur /etc/conf.d/udev :
user $
rlog /etc/config-archive/etc/conf.d/udev,v
RCS file: /etc/config-archive/etc/conf.d/udev,v Working file: udev head: 1.1 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: Archived config file. ---------------------------- revision 1.1 date: 2011/06/15 18:14:59; author: root; state: Exp; branches: 1.1.1; dispatch-conf update. ---------------------------- revision 1.1.1.1 date: 2011/06/15 18:14:59; author: root; state: Exp; lines: +3 -2 dispatch-conf update. =============================================================================
Pour revenir à une version particulière, il suffit de consulter une version précédente :
root #
cp udev udev.orig
root #
co -p -r1.1.1.1 /etc/config-archive/etc/conf.d/udev,v > udev
etc/config-archive/etc/conf.d/udev,v --> standard output revision 1.1.1.
Après avoir apporté les modifications finales (il est possible d'utiliser le fichier de sauvegarde udev.orig pour fusionner des modifications apportées ultérieurement), valider de nouveau le fichier :
root #
co -p -l /etc/config-archive/etc/conf.d/udev,v
Modifier le fichier et vérifier enfin les modifications :
root #
ci -l /etc/config-archive/etc/conf.d/udev,v
/etc/config-archive/etc/conf.d/udev,v <-- udev new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> Merged changes for persistant rules >> . done
Changer les outils de diff ou de fusion
Sortie diff colorisée
Lire les modifications en gris peut être un peu ennuyeux. Heureusement, les versions modernes de sys-apps/diffutils disposent d'un commutateur --color
, qui affiche les différents types de modifications dans des couleurs différentes. La configuration est simple - changez la ligne diff dans le fichier de configuration par :
diff="diff --color=always -Nu '%s' '%s'"
Il est également possible d'utiliser le paquet app-misc/colordiff. Installer colordiff avec :
root #
emerge --ask app-misc/colordiff
Ensuite, modifier la configuration pour l'utiliser :
diff="colordiff -Nu '%s' '%s'"
Utiliser (g)vimdiff pour fusionner les changements
Il est possible d'utiliser vimdiff/gvimdiff au lieu de la méthode par défaut de fusion des fichiers. Pour ce faire, modifiez le fichier de configuration /etc/dispatch-conf.conf en changeant la ligne de fusion :
merge="vimdiff -c'saveas %s' -c next -c'setlocal noma readonly' -c prev %s %s"
vimdiff (pour gvimdiff utiliser l'option -f
en plus) peut également être utilisé pour fusionner les modifications. Pour utiliser Neovim, remplacer %s %s
à la fin par -d %s %s
.
Le volet de gauche contiendra le fichier de configuration original sauvegardé en tant que sortie de la fusion, donc faites des changements dans le volet de gauche et sauvegardez ce volet. Pour vous aider à vous souvenir, le volet de droite (contenant le nouveau fichier de configuration) sera marqué comme non modifiable et en lecture seule.
Quelques commandes utiles liées à la fusion avec vimdiff :
"]c" : jump to next change "[c" : jump to previous change "CTRL-W <Right>" or "CTRL-W <Left>" : go to the other window "do" (diff obtain): get the text of the highlighted block from the other window "dp" (diff put) : put the text of the highlighted block to the other window "zo" : open fold under the cursor "zc" : close fold under the cursor "zr" : open all folds ":wqa" : write and exit
Voir la documentation Vim pour plus d'aide.
Utilisation de imediff2 pour fusionner les modifications
Une autre alternative à la fusion est dev-util/imediff2. Cet outil simple permet d'utiliser quelques touches pour basculer entre les options. Cela se fait principalement par les touches a ou b. La touche e permet également d'ouvrir l'éditeur favori de l'utilisateur, défini par la variable shell EDITOR, pour une fusion manuelle.
Pour l'utiliser avec dispatch-conf, il faut d'abord installer imediff2 :
root #
emerge --ask dev-util/imediff2
Ensuite, configurer /etc/dispatch-conf.conf :
merge="imediff2 -c -N --output='%s' '%s' '%s'"
Usage
Invocation
dispatch-conf doit être lancé en tant que root, car les fichiers de configuration appartiennent généralement à root :
root #
dispatch-conf
Le Handbook AMD64 et la page de manuel contiennent des informations supplémentaires sur l'utilisation :
user $
man 1 dispatch-conf
Tips
Conserver les changements de configuration dans un dépôt git
Lors de l'installation, etckeeper "s'accrochera" à dispatch-conf pour faire des sauvegardes des fichiers de configuration à chaque invocation.
Voir aussi
- etc-update (AMD64 Handbook)
- cfg-update — a utility used on Gentoo to manage configuration file updates.