dpkg-maintscript-helper(1)

NOM
dpkg-maintscript-helper - contournement des limitations connues de dpkg dans les scripts du responsable

SYNOPSIS
dpkg-maintscript-helper commande [paramètres...] -- paramètres-script-responsable...

COMMANDES ET PARAMÈTRES

rm_conffile fichier-de-configuration [version-précédente [paquet]]

mv_conffile ancien-fichier-de-configuration nouveau-fichier-de-configuration [dernière-version [paquet]]

DESCRIPTION

Ce programme est prévu pour être exécuté dans les scripts du responsable afin de réaliser certaines tâches que dpkg ne peut pas (encore) prendre en charge directement à cause de limites de conception ou de limitations actuelles.

La plupart de ces tâches nécessitent la coordination de plusieurs scripts du responsable (preinst, postinst, prerm, postrm). Pour éviter des erreurs, le même appel a simplement besoin d'être placé dans tous les scripts. Le programme adaptera alors son comportement en fonction de la variable d'environnement DPKG_MAINTSCRIPT_NAME et des paramètres des scripts du responsable qui doivent être passés avec un double tiret.

TÂCHES LIÉES AUX FICHIERS DE CONFIGURATION

Lors de la mise à jour d'un paquet, dpkg ne supprime pas automatiquement les fichiers de configuration (comportant des modifications locales à préserver) s'il n'est pas présent dans la nouvelle version. Il existe deux raisons principales à cela. En premier lieu, le fichier de configuration peut avoir été supprimé par accident, être réintégré dans la version suivante et il peut être nécessaire de retrouver les modifications locales. Ensuite, l'objectif est également de permettre d'effectuer la transition depuis des fichiers de configuration gérés par dpkg vers un fichier géré via les scripts du responsable, en général à l'aide d'un outil comme debconf ou ucf.

Cela signifie que si un paquet a besoin de renommer ou supprimer un fichier de configuration, il doit le faire explicitement. L'objectif de dpkg-maintscript-helper est donc de fournir des méthodes de suppression ou renommage de fichiers de configuration via les scripts du responsable.

  SUPPRESSION D'UN FICHIER DE CONFIGURATION

Si un fichier de configuration est complètement supprimé, il doit être effacé du disque sauf si l'administrateur local l'a modifié. Les éventuelles modifications locales doivent être conservées. Si la mise à jour du paquet est interrompue, le fichier de configuration rendu obsolète ne doit pas avoir disparu.

L'ensemble de ces pré-requis est mis en oeuvre en utilisant les commandes shell suivantes dans les scripts preinst, postinst et postrm :

    dpkg-maintscript-helper rm_conffile \
        fichier-de-configuration dernière-version paquet -- "$@"

fichier-de-configuration est le nom du fichier de configuration à supprimer.

dernière-version indique la dernière version du paquet dont la mise à jour doit provoquer la suppression. Il est important de calculer version-précédente correctement afin de supprimer les fichiers de configuration même si le paquet a été reconstruit en utilisant un numéro local de version. Par exemple, pour un fichier de configuration supprimé dans la version 2.0-1 d'un paquet, dernière-version doit être 2.0-1~. Cela provoquera la suppression du paquet même si la version précédente 1.0-1 a été reconstruite avec 1.0-1local1 comme numéro de version.

Si le fichier de configuration n'était pas fourni pour une raison ou une autre dans plusieurs versions et que vous modifiez les scripts du responsable pour nettoyer l'ancien fichier, version-précédente doit être basé sur la version actuellement préparée et non la première version qui ne fournissait plus ce fichier de configuration.

paquet est le nom du paquet. S'il est vide ou omis, la variable d'environnement DPKG_MAINTSCRIPT_PACKAGE (telle que définie par dpkg) sera utilisée.

Tous les paramètres des scripts du responsable doivent être passés au programme après « -- ».

Détails de la mise en oeuvre actuelle : dans le script preinst, il est vérifié si le fichier de configuration a été modifié. Celui-ci est alors renommé, soit en fichier-de-configuration.dpkg-remove s'il n'a pas été modifié, soit en fichier-de-configuration.dpkg-backup s'il l'a été. Dans le script postinst, ce dernier fichier est ensuite renommé en fichier-de-configuration.dpkg-bak et conservé pour référence puisqu'il contient des modifications locales, mais le premier est supprimé. Si la mise à jour du paquet est interrompue, le script postrm remet en place le fichier de configuration d'origine. À la purge du paquet, le script postrm supprimera également le fichier .dpkg-bak qui avait été conservé jusque là.

  RENOMMAGE D'UN FICHIER DE CONFIGURATION

Si un fichier de configuration est déplacé à un autre endroit, il est nécessaire de garantir la préservation des modifications locales. À première vue, cela peut sembler être une simple modification dans le script preinst, mais cela risque de résultat dans une demande, par dpkg, d'approbation de modifications locales qui n'existent pas réellement.

Un renommage élégant peut être mis en oeuvre avec les extraits shell qui suivent, dans les scripts preinst, postinst et postrm.

    dpkg-maintscript-helper mv_conffile \
        ancien-fichier nouveau-fichier dernière-version paquet -- "$@"

ancien-fichier et nouveau-fichier sont l'ancien et le nouveau nom du fichier de configuration à renommer.

dernière-version indique la dernière version du paquet pour laquelle la mise à jour doit provoquer le renommage du fichier de configuration (voir les notes de rm_conffile précédemment pour choisir la valeur adaptée). Si ce paramètre est vide ou est omis, l'opération sera tentée à chaque mise à jour (il est toutefois plus sûr d'indiquer la version afin que l'opération n'ait lieu qu'une fois).

paquet est le nom du paquet. S'il est vide ou omis, la variable d'environnement DPKG_MAINTSCRIPT_PACKAGE (telle que définie par dpkg) sera utilisée.

Tous les paramètres des scripts du responsable doivent être passés au programme après « -- ».

Détails de la mise en oeuvre actuelle : dans le script preinst, il est vérifié si le fichier de configuration a été modifié. Celui-ci est alors soit laissé en place s'il a été modifié, soit renommé en ancien-fichier.dpkg-remove s'il ne l'a pas été. Lors de la configurations, le script postinst supprime ancien-fichier.dpkg-remove et renomme ancien-fichier and nouveau-fichier si ancien-fichier existe toujours Si la mise à jour ou l'installation sont interrompues, le script postrm renomme ancien-fichier.dpkg-remove en ancien-fichier si c'est indispensable.

INTÉGRATION DANS LES PAQUETS

Comme dpkg-maintscript-helper est utilisé dans le script preinst, l'utiliser sans conditions impose une pré-dépendance afin de garantir que la version minimale nécessaire de dpkg et bien été préalablement configurée. La version nécessaire dépend de la commande utilisée. La version minimale dépend de la commande à utiliser : ainsi pour rm_conffile et mv_conffile, cette version est 1.15.7.2 :

    Pre-Depends: dpkg (>= 1.15.7.2)

Cependant, dans de nombreux cas, l'opération réalisée par le programme n'est pas critique pour le paquet et au lieu d'utiliser une pré-dépendance, il est possible de ne lancer le programme que si on a la certitude que la commande nécessaire est gérée par la version actuellement installée de dpkg :

    if dpkg-maintscript-helper supports commande; then
        dpkg-maintscript-helper commande ...
    fi

TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.