NOM
dpkg-maintscript-helper - Contournement des limitations connues de dpkg dans les scripts du responsableSYNOPSIS
dpkg-maintscript-helper commande [paramètre...] -- paramètre-script-responsable...COMMANDES ET PARAMÈTRES
- supports commande
- rm_conffile fichier-de-configuration [version-précédente [ paquet]]
- mv_conffile ancien-fichier-de-configuration nouveau-fichier-de-configuration [dernière-version [paquet]]
- symlink_to_dir nom-de-chemin ancienne-cible [ version-précédente [paquet]]
- dir_to_symlink nom-de-chemin nouvelle-cible [ version-précédente [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.PARAMÈTRES COMMUNS
- version-précédente
- Indique la dernière version du paquet pour laquelle la mise à niveau doit provoquer l'opération. Il est important de déterminer correctement version-précédente afin que les opérations s'accomplissent correctement même si l'utilisateur reconstruit le paquet avec une version locale. Si le paramètre version-précédente est vide ou omis, l'opération sera tentée à chaque mise à niveau (il est toutefois plus sûr d'indiquer la version afin que l'opération n'ait lieu qu'une fois). 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. Cela s'applique à toutes les autres actions de la même manière Par exemple, pour un fichier de configuration supprimé dans la version 2.0-1 d'un paquet, version-précédente doit être 2.0-1~. Cela provoquera la suppression du fichier même si la version précédente 1.0-1 a été reconstruite avec 1.0-1local1 comme numéro de version. Ou bien, si un paquet substitue un chemin d'un lien symbolique (fourni dans la version 1.0-1) à un répertoire (fourni dans la version 2.0-1), mais ne réalise réellement la substitution que dans les scripts du responsable dans la version 3.0-1, version-précédente doit être 3.0-1~.
- paquet
- Le nom du paquet propriétaire du (des) nom(s) de chemin. Si le paquet est « Multi-Arch: same » ce paramètre doit inclure le type d'architecture, sinon, il ne devrait pas habituellement inclure le type d'architecture (parce qu'il pourrait interdire les catégories croisées, ou le passage d'une architecture spécifique à l'architecture all ou vice-versa). Si le paramètre est vide ou omis, les variables d'environnement DPKG_MAINTSCRIPT_PACKAGE et DPKG_MAINTSCRIPT_ARCH (telles que définies par dpkg lors de l'exécution des scripts du responsable) seront utilisées pour créer un nom de paquet avec une qualification d'architecture.
- --
- Tous les paramètres des scripts du responsable doivent être passés au programme après --.
TÂCHES LIÉES AUX FICHIERS DE CONFIGURATION
Lors de la mise à niveau d'un paquet, dpkg ne supprime pas un fichier de configuration automatiquement (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é à l'aide des 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 à l'aide de scripts du responsable.Supprimer un fichier de configuration
Note : cela peut être remplacé dans la majorité des cas par le drapeau "remove-on-upgrade" dans DEBIAN/conffiles (depuis dpkg 1.20.6), voir deb-conffiles(5). 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 œuvre en utilisant les commandes shell suivantes dans les scripts preinst, postinst et postrm :dpkg-maintscript-helper rm_conffile \
fichier-de-configuration version-précédente paquet -- "$@"
Renommer 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ésulter en une demande, par dpkg, d'approbation de modifications locales qui n'existent pas réellement. Un renommage élégant peut être mis en œuvre avec les extraits shell qui suivent, dans les scripts preinst, postinst et postrm :dpkg-maintscript-helper mv_conffile \
ancien-fichier-configuration nouveau-fichier-configuration
version-précédente paquet -- "$@"
SUBSTITUTIONS DE LIENS SYMBOLIQUES ET DE RÉPERTOIRES
Lors de la mise à niveau d'un paquet, dpkg ne substitue pas automatiquement un lien symbolique à un répertoire ou le contraire. Les retours à une version inférieure ne sont pas pris en charge et le chemin sera laissé comme il est. Note : Les liens symboliques et les répertoires créés pendant cette substitution doivent être fournis dans les nouveau paquets, sinon dpkg sera incapable de les supprimer lors de la purge.Substituer un lien symbolique à un répertoire
Si un lien symbolique est substitué à un répertoire réel, il est nécessaire de garantir qu'avant le dépaquetage le lien symbolique est retiré. À première vue, cela peut sembler être une simple modification dans le script preinst, mais cela risque de résulter en problèmes si l'administrateur local a personnalisé le lien symbolique ou si l'on revient à une version antérieure du paquet. Un renommage élégant peut être mis en œuvre avec les extraits shell qui suivent, dans les scripts preinst, postinst et postrm :dpkg-maintscript-helper symlink_to_dir \
nom-de-chemin ancienne-cible version-précédente paquet -- "$@"
Substituer un répertoire à un lien symbolique
Si un répertoire réel est substitué à un lien symbolique, il est nécessaire de garantir qu'avant le dépaquetage le répertoire est retiré. À première vue, cela peut sembler être une simple modification dans le script preinst, mais cela risque de résulter en problèmes si le répertoire contient des fichiers de configuration, des noms de chemins qui appartiennent à d'autres paquets, des noms de chemin créés localement ou si l'on revient à une version antérieure du paquet. Une substitution élégante peut être mise en œuvre avec les extraits shell qui suivent, dans les scripts preinst, postinst et postrm :dpkg-maintscript-helper dir_to_symlink \
nom-de-chemin nouvelle-cible version-précédente paquet -- "$@"
INTÉGRATION DANS LES PAQUETS
Lors de l'utilisation d'un assistant d'empaquetage, veuillez vérifier s'il ne dispose pas d'une intégration native de dpkg-maintscript-helper ce qui vous facilitera la tâche. Voir par exemple dh_installdeb(1). 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 ait bien été préalablement configurée. La version minimale dépend de la commande utilisée : ainsi pour rm_conffile et mv_conffile, cette version est 1.15.7.2, pour symlink_to_dir et dir_to_symlink, c'est 1.17.14 :Pre-Depends: dpkg (>= 1.17.14)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
ENVIRONNEMENT
- DPKG_ROOT
- Si cette variable est positionnée, ce répertoire sera utilisé comme répertoire racine du système de fichiers.
- DPKG_ADMINDIR
- Si cette variable est positionnée, ce répertoire sera utilisé comme répertoire de données pour dpkg.
- DPKG_COLORS
- Fixe le mode de couleur (depuis dpkg 1.19.1). Les valeurs admises actuellement sont auto (par défaut), always et never.
VOIR AUSSI
dh_installdeb(1)TRADUCTION
Ariel VARDI <[email protected]>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <[email protected]>.2023-05-11 | 1.21.22 |