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 [dernière-version [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 script 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 con comportement en fonction de la variable d'environnement

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 est la dernière version du paquet qui le fournissait (ou la dernière version du paquet qui ne prenait pas soin de supprimer le fichier de configuration obsolète si la suppression correcte n'a pas été immédiatement mise en oeuvre). Si dernière-version est vide ou est omis, cette suppression sera tenté pour toute mise à jour. paquet est le nom du paquet. Ce paramètre est optionnel, la valeur par défaut étant $DPKG_MAINTSCRIPT_PACKAGE (cette variable est positionnée par dpkg sur le nom du paquet sur lequel il travaille). Tous les paramètres des scripts du responsable doivent être redirigé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 les deux noms successifs du fichier de configuration. dernière-version est la dernière version du paquet qui contenait le fichier de configuration avec l'ancien nnom. Si dernière-version est vide ou manquant, l'opération sera tentée à chaque mise à jour (il est plus sûr d'indiquer la bonne version afin qe l'opération ne soit tentée qu'une fois). paquet est le nom du paquet. Ce paramètre est optionnel, la valeur par défaut étant $DPKG_MAINTSCRIPT_PACKAGE (cette variable est positionnée par dpkg sur le nom du paquet sur lequel il travaille). Tous les paramètres des scripts du responsable doivent être redirigé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

Given that dpkg-maintscript-helper is used in the preinst, using it unconditionally requires a pre-dependency to ensure that the required version of dpkg has been unpacked before. The required version depends on the command used, for rm_conffile and mv_conffile it is 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 <command>; then
        dpkg-maintscript-helper <command> ...
    fi

AUTEURS
Copyright © 2010 Raphaël Hertzog
Copyright © 2008 Joey Hess
Copyright © 2007 Guillem Jover
Copyright © 2005 Scott James Remnant

Ce programme est un logiciel libre ; voyez la « GNU General Public Licence » version 2 ou supérieure pour le copyright. Il n'y a PAS de garantie.

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>.