Le manuel de programmation de dpkg - chapitre 9
Manipulation des fichiers de configuration

dpkg peut faire une certaine quantité de manipulation automatique sur les fichiers de configuration de paquet.

Pour que ce mécanisme soit adéquate, cela dépend d'un certain nombre de facteurs, mais fondamentalement, il y a deux approches pour n'importe quel fichier de configuration particulier.

La méthode facile est de transposer un meilleur effort de configuration dans le paquet et utiliser le mécanisme de fichier de configuration de dpkg pour manipuler les mises à jour. Il est peu probable que l'utilisateur veuille éditer le fichier, mais il faut que cela soit possible sans perdre leur modification, et un nouveau paquet avec une version modifiée du fichier est seulement mis à jour rarement, c'est la meilleure approche.

La méthode dure est de construire le fichier de configuration à partir du script postinst, et de prendre la responsabilité de résoudre automatiquement les erreurs des versions précédentes du paquet. Ceci est justifié si le fichier est nécessairement différent sur chaque système.


9.1 Manipulation automatique des fichiers de configuration par dpkg

Un paquet peut contenir un fichier de zone de contrôle appelé conffiles. Ce fichier doit être une liste de noms de fichier de configuration nécessitant une manipulation automatique, séparée par un retour chariot. Les noms de fichiers doivent avoir des noms absolus, et les fichiers référencés doivent réellement exister dans le paquet.

Quand un paquet est mis à jour, dpkg traitera les fichiers de configuration pendant l'étape de configuration, juste avant d'exécuter le script postinst du paquet.

Pour chaque fichier, il vérifie si la version du fichier inclus dans le paquet est la même que celle qui était insérée dans la dernière version du paquet (celui à partir duquel on fait la mise à jour). dpkg compare aussi les versions courantes installées sur le système avec celle transportée avec la dernière version.

Si ni l'utilisateur, ni le mainteneur du paquet n'ont changé le fichier, il est laissé tel quel. Sinon si l'un ou l'autre a changé sa version, alors les nouvelles versions sont prises en compte, c'est à dire si l'utilisateur édite son fichier, mais le mainteneur n'a pas amené une version différente, les modifications de l'utilisateur demeurent (silencieusement), mais si le mainteneur amène une nouvelle version et l'utilisateur ne l'a pas édité, la nouvelle version sera installée (avec un message d'avertissement). Si les deux ont changé leurs versions, l'utilisateur est averti du problème et doit résoudre les différences lui-même.

La comparaison est faite en calculant le MD5 des fichiers et en stockant ce MD5 comme s'il était inclus dans la plus récente version du paquet.

Quand un paquet est installé pour la première fois, dpkg installera le fichier qui l'accompagne, à moins que cela pourrait signifier un écrasement d'un fichier existant sur le système de fichier.

Cependant, notons que dpkg ne remplacera pas un fichier de configuration qui a été enlevé par l'utilisateur (ou par un script). Cela est nécessaire parce que avec certains programmes, un fichier manquant produit un effet dur ou impossible à réaliser d'une autre manière, un fichier manquant ne sera pas remplacé si l'utilisateur l'a décidé ainsi.

Notons qu'un paquet ne doit pas modifier un fichier de configuration manipulé par dpkg dans son script de maintenance. Faire cela amènera dpkg à donner à l'utilisateur, des options confuses ou dangereuse pour la mise à jour des fichiers de configuration quand le paquet est révisé.


9.2 Manipulation des scripts améliorés de configuration de maintenance

Pour les fichiers qui contiennent des informations spécifiques telles que le nom de l'hôte et les détails réseau et ainsi de suite, il est préférable de créer le fichier dans le script postinst du paquet.

Ceci impliquera typiquement, l'examen de l'état du reste du système pour déterminer les valeurs et autres informations, et peut aussi impliquer une saisie par l'utilisateur des informations qui n'ont pas pu être obtenues autrement.

Quand on utilise cette méthode, il y a un nombre important de problèmes à considérer:

Si tu découvres une erreur dans un programme qui génère le fichier de configuration, ou si le format d'un fichier change d'une version à la suivante, tu devras modifier le script postinst pour le corriger, habituellement cela veut dire, éditer le fichier de configuration installé et enlever le problème ou changer la syntaxe. Tu devras faire ça avec attention étant donné que l'utilisateur peut avoir changé le fichier, peut être pour fixer le problème que ton script est en train de traiter, tu devras détecter ces situations et les traiter correctement.

Si tel est ton choix, c'est alors probablement une bonne idée de rendre le programme qui génère le fichier de configuration en un programme séparé dans /usr/sbin, appelé par convention paquetconfig et l'exécuter si approprié, à partir du script de post-installation. Le programme paquetconfig ne doit pas écraser une configuration existante - si son mode opératoire est tourné vers le positionnement d'un paquet pour la première fois (plutôt que n'importe quelle reconfiguration arbitraire ultérieure), tu dois vérifier si la configuration existe déjà, et utiliser l'option --force pour l'écraser.


Le manuel de programmation de dpkg - Copyright ©1996 Ian Jackson Copyright ©1997 David Curé et Christian Jacolot pour la version française.
Table des matières; résumé; suivant; précédent.
15 octobre 1998
D. Cure cure@cnam.fr
C. Jacolot jacolot@ubolib.univ-brest.fr