364 lines
19 KiB
HTML
364 lines
19 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of dpkg-maintscript-helper</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>dpkg-maintscript-helper</H1>
|
|
Section: suite dpkg (1)<BR>Updated: 2020-03-23<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NOM</H2>
|
|
|
|
dpkg-maintscript-helper - Contournement des limitations connues de dpkg dans
|
|
les scripts du responsable
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
<B>dpkg-maintscript-helper</B> <I>commande</I> [<I>paramètre</I>...] <B>--</B>
|
|
<I>paramètre-script-responsable</I>...
|
|
<A NAME="lbAD"> </A>
|
|
<H2>COMMANDES ET PARAMÈTRES</H2>
|
|
|
|
<P>
|
|
|
|
<B>supports</B> <I>commande</I>
|
|
<P>
|
|
|
|
<B>rm_conffile</B> <I>fichier-de-configuration</I> [<I>version-précédente</I>
|
|
[<I>paquet</I>]]
|
|
<P>
|
|
|
|
<B>mv_conffile</B> <I>ancien-fichier-de-configuration</I>
|
|
<I>nouveau-fichier-de-configuration</I> [<I>dernière-version</I> [<I>paquet</I>]]
|
|
<P>
|
|
|
|
<B>symlink_to_dir</B> <I>nom-de-chemin</I> <I>ancienne-cible</I> [<I>version-précédente</I>
|
|
[<I>paquet</I>]]
|
|
<P>
|
|
|
|
<B>dir_to_symlink</B> <I>nom-de-chemin</I> <I>nouvelle-cible</I> [<I>version-précédente</I>
|
|
[<I>paquet</I>]]
|
|
<A NAME="lbAE"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
<P>
|
|
|
|
Ce programme est prévu pour être exécuté dans les scripts du responsable
|
|
afin de réaliser certaines tâches que <B>dpkg</B> ne peut pas (encore) prendre
|
|
en charge directement à cause de limites de conception ou de limitations
|
|
actuelles.
|
|
<P>
|
|
|
|
La plupart de ces tâches nécessitent la coordination de plusieurs scripts du
|
|
responsable (<B>preinst</B>, <B>postinst</B>, <B>prerm</B>, <B>postrm</B>). 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 <B>DPKG_MAINTSCRIPT_NAME</B> et des paramètres des
|
|
scripts du responsable qui doivent être passés avec un double tiret.
|
|
<A NAME="lbAF"> </A>
|
|
<H2>PARAMÈTRES COMMUNS</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="1"><I>version-précédente</I><DD>
|
|
Indique la dernière version du paquet pour laquelle la mise à niveau doit
|
|
provoquer l'opération. Il est important de déterminer correctement
|
|
<I>version-précédente</I> afin que les opérations s'accomplissent correctement
|
|
même si l'utilisateur reconstruit le paquet avec une version locale. Si le
|
|
paramètre <I>version-précédente</I> 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).
|
|
<P>
|
|
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, <I>version-précédente</I> 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
|
|
<P>
|
|
Par exemple, pour un fichier de configuration supprimé dans la version
|
|
<B>2.0-1</B> d'un paquet, <I>version-précédente</I> doit être <B>2.0-1~</B>. Cela
|
|
provoquera la suppression du fichier même si la version précédente <B>1.0-1</B>
|
|
a été reconstruite avec <B>1.0-1local1</B> comme numéro de version. Ou bien, si
|
|
un paquet substitue un chemin d'un lien symbolique (fourni dans la version
|
|
<B>1.0-1</B>) à un répertoire (fourni dans la version <B>2.0-1</B>), mais ne réalise
|
|
réellement la substitution que dans les scripts du responsable dans la
|
|
version <B>3.0-1</B>, <I>version-précédente</I> doit être <B>3.0-1~</B>.
|
|
<DT id="2"><I>paquet</I><DD>
|
|
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 <B>pas</B> habituellement inclure le type d'architecture
|
|
(parce qu'il pourrait interdire les catégories croisées, ou le passage d'une
|
|
architecture spécifique à architecture <B>all</B> ou vice-versa). Si le
|
|
paramètre est vide ou omis, les variables d'environnement
|
|
<B>DPKG_MAINTSCRIPT_PACKAGE</B> et <B>DPKG_MAINTSCRIPT_ARCH</B> (telles que définies
|
|
par <B>dpkg</B> lors de l'exécution des scripts du responsable) seront utilisées
|
|
pour créer un nom de paquet avec une qualification d'architecture.
|
|
<DT id="3"><B>--</B><DD>
|
|
Tous les paramètres des scripts du responsable doivent être passés au
|
|
programme après <B>--</B>.
|
|
</DL>
|
|
<A NAME="lbAG"> </A>
|
|
<H2>TÂCHES LIÉES AUX FICHIERS DE CONFIGURATION</H2>
|
|
|
|
<P>
|
|
|
|
Lors de la mise à niveau d'un paquet, <B>dpkg</B> 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.
|
|
<P>
|
|
|
|
Cela signifie que si un paquet a besoin de renommer ou supprimer un fichier
|
|
de configuration, il doit le faire explicitement. L'objectif de
|
|
<B>dpkg-maintscript-helper</B> est donc de fournir des méthodes de suppression
|
|
ou renommage de fichiers de configuration à l'aide de scripts du
|
|
responsable.
|
|
<A NAME="lbAH"> </A>
|
|
<H3>Supprimer un fichier de configuration</H3>
|
|
|
|
<P>
|
|
|
|
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.
|
|
<P>
|
|
|
|
L'ensemble de ces pré-requis est mis en œuvre en utilisant les commandes
|
|
shell suivantes dans les scripts <B>preinst</B>, <B>postinst</B> et <B>postrm</B> :
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper rm_conffile \
|
|
<BR> <I>fichier-de-configuration</I> <I>version-précédente</I> <I>paquet</I> -- "$@"
|
|
<P>
|
|
|
|
<I>fichier-de-configuration</I> est le nom du fichier de configuration à
|
|
supprimer.
|
|
<P>
|
|
|
|
Détails de la mise en œuvre actuelle : dans le script <B>preinst</B>, il est
|
|
vérifié si le fichier de configuration a été modifié. Celui-ci est alors
|
|
renommé, soit en <I>fichier-de-configuration</I><B>.dpkg-remove</B> s'il n'a pas été
|
|
modifié, soit en <I>fichier-de-configuration</I><B>.dpkg-backup</B> s'il l'a
|
|
été. Dans le script <B>postinst</B>, ce dernier fichier est ensuite renommé en
|
|
<I>fichier-de-configuration</I><B>.dpkg-bak</B> 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 <B>postrm</B> remet en place le
|
|
fichier de configuration d'origine. À la purge du paquet, le script
|
|
<B>postrm</B> supprimera également le fichier <B>.dpkg-bak</B> qui avait été
|
|
conservé jusque là.
|
|
<A NAME="lbAI"> </A>
|
|
<H3>Renommer un fichier de configuration</H3>
|
|
|
|
<P>
|
|
|
|
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
|
|
<B>preinst</B>, mais cela risque de résulter en une demande, par <B>dpkg</B>,
|
|
d'approbation de modifications locales qui n'existent pas réellement.
|
|
<P>
|
|
|
|
Un renommage élégant peut être mis en œuvre avec les extraits shell qui
|
|
suivent, dans les scripts <B>preinst</B>, <B>postinst</B> et <B>postrm</B> :
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper mv_conffile \
|
|
<BR> <I>ancien-fichier-configuration</I> <I>nouveau-fichier-configuration</I> <I>version-précédente</I> <I>paquet</I> -- "$@"
|
|
<P>
|
|
|
|
<I>ancien-fichier-configuration</I> et <I>nouveau-fichier-configuration</I> sont
|
|
l'ancien et le nouveau nom du fichier de configuration à renommer.
|
|
<P>
|
|
|
|
Détails de la mise en œuvre actuelle : dans le script <B>preinst</B>, 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
|
|
<I>ancien-fichier-configuration</I><B>.dpkg-remove</B> s'il ne l'a pas été. Lors de
|
|
la configuration, le script <B>postinst</B> supprime
|
|
<I>ancien-fichier-configuration</I><B>.dpkg-remove</B> et renomme
|
|
<I>ancien-fichier-configuration</I> et <I>nouveau-fichier-configuration</I> si
|
|
<I>ancien-fichier-configuration</I> existe toujours. Si la mise à jour ou
|
|
l'installation sont interrompues, le script <B>postrm</B> renomme
|
|
<I>ancien-fichier-configuration</I><B>.dpkg-remove</B> en
|
|
<I>ancien-fichier-configuration</I> si c'est indispensable.
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>SUBSTITUTIONS DE LIENS SYMBOLIQUES ET DE RÉPERTOIRES</H2>
|
|
|
|
Lors de la mise à niveau d'un paquet, <B>dpkg</B> 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.
|
|
<A NAME="lbAK"> </A>
|
|
<H3>Substituer un lien symbolique à un répertoire</H3>
|
|
|
|
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
|
|
<B>preinst</B>, 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.
|
|
<P>
|
|
|
|
Un renommage élégant peut être mis en œuvre avec les extraits shell qui
|
|
suivent, dans les scripts <B>preinst</B>, <B>postinst</B> et <B>postrm</B> :
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper symlink_to_dir \
|
|
<BR> <I>nom-de-chemin</I> <I>ancienne-cible</I> <I>version-précédente</I> <I>paquet</I> -- "$@"
|
|
<P>
|
|
|
|
<I>nom-de-chemin</I> est le nom absolu de l'ancien lien symbolique (le chemin
|
|
sera un répertoire à la fin de l'installation) et <I>ancienne-cible</I> la cible
|
|
de l'ancien lien symbolique vers <I>nom-de-chemin</I>. Cela peut être un chemin
|
|
absolu ou relatif vers le répertoire contenant <I>nom-de-chemin</I>.
|
|
<P>
|
|
|
|
Détails de la mise en œuvre actuelle : dans le script <B>preinst</B>, il est
|
|
vérifié si le lien symbolique existe et pointe vers <I>ancienne-cible</I>. Si ce
|
|
n'est pas le cas, il est alors soit laissé en place, soit renommé en
|
|
<I>nom-de-chemin</I><B>.dpkg-backup</B>. Lors de la configuration, le script
|
|
<B>postinst</B> supprime <I>nom-de-chemin</I><B>.dpkg-backup</B> si
|
|
<I>nom-de-chemin</I><B>.dpkg-backup</B> est encore un lien symbolique. Si la mise à
|
|
niveau ou l'installation sont interrompues, le script <B>postrm</B> renomme
|
|
<I>nom-de-chemin</I><B>.dpkg-backup</B> en <I>nom-de-chemin</I> si c'est indispensable.
|
|
<A NAME="lbAL"> </A>
|
|
<H3>Substituer un répertoire à un lien symbolique</H3>
|
|
|
|
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
|
|
<B>preinst</B>, 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.
|
|
<P>
|
|
|
|
Une substitution élégante peut être mise en œuvre avec les extraits shell
|
|
qui suivent, dans les scripts <B>preinst</B>, <B>postinst</B> et <B>postrm</B> :
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper dir_to_symlink \
|
|
<BR> <I>nom-de-chemin</I> <I>nouvelle-cible</I> <I>version-précédente</I> <I>paquet</I> -- "$@"
|
|
<P>
|
|
|
|
<I>nom-de-chemin</I> est le nom absolu de l'ancien répertoire (le chemin sera un
|
|
lien symbolique à la fin de l'installation) et <I>nouvelle-cible</I> la cible du
|
|
nouveau lien symbolique vers <I>nom-de-chemin</I>. Cela peut être un chemin
|
|
absolu ou relatif vers le répertoire contenant <I>nom-de-chemin</I>.
|
|
<P>
|
|
|
|
Détails de la mise en œuvre actuelle : dans le script <B>preinst</B>, il est
|
|
vérifié si le répertoire existe et ne contient pas de fichiers de
|
|
configuration, de noms de chemin qui appartiennent à d'autres paquets, de
|
|
noms de chemin créés localement. Si ce n'est pas le cas, il est alors soit
|
|
laissé en place, soit renommé en <I>nom-de-chemin</I><B>.dpkg-backup</B> et un
|
|
répertoire vide provisoire nommé <I>nom-de-chemin</I> est créé, marqué par un
|
|
fichier pour que dpkg le suive. Lors de la configuration, le script
|
|
<B>postinst</B> achève la substitution si <I>nom-de-chemin</I><B>.dpkg-backup</B> est
|
|
encore un répertoire et si <I>nom-de-chemin</I> est le répertoire provisoire. Il
|
|
supprime le fichier qui marque le fichier provisoire et déplace les fichiers
|
|
nouvellement créés dans le répertoire provisoire vers la cible du lien
|
|
symbolique <I>nouvelle-cible</I>, remplace le répertoire provisoire
|
|
<I>nom-de-chemin</I>, maintenant vide, par un lien symbolique vers la
|
|
<I>nouvelle-cible</I> et, enfin supprime <I>nom-de-chemin</I><B>.dpkg-backup</B>. Si la
|
|
mise à niveau ou l'installation sont interrompues, le script <B>postrm</B>
|
|
renomme <I>nom-de-chemin</I><B>.dpkg-backup</B> en <I>nom-de-chemin</I> si c'est
|
|
indispensable.
|
|
<A NAME="lbAM"> </A>
|
|
<H2>INTÉGRATION DANS LES PAQUETS</H2>
|
|
|
|
<P>
|
|
|
|
Lors de l'utilisation d'un assistant d'empaquetage, veuillez vérifier s'il
|
|
ne dispose pas d'une intégration native de <B>dpkg-maintscript-helper</B> ce qui
|
|
vous facilitera la tâche. Voir par exemple <B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<P>
|
|
|
|
Comme <B>dpkg-maintscript-helper</B> est utilisé dans le script <B>preinst</B>,
|
|
l'utiliser sans conditions impose une pré-dépendance afin de garantir que la
|
|
version minimale nécessaire de <B>dpkg</B> ait bien été préalablement
|
|
configurée. La version minimale dépend de la commande utilisée : ainsi pour
|
|
<B>rm_conffile</B> et <B>mv_conffile</B>, cette version est 1.15.7.2, pour
|
|
<B>symlink_to_dir</B> et <B>dir_to_symlink</B>, c'est 1.17.14 :
|
|
<P>
|
|
|
|
<BR> <B>Pre-Depends:</B> dpkg (>= 1.17.14)
|
|
<P>
|
|
|
|
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 <B>dpkg</B> :
|
|
<P>
|
|
|
|
<BR> if dpkg-maintscript-helper supports <I>commande</I>; then
|
|
<BR> dpkg-maintscript-helper <I>commande</I> ...
|
|
<BR> fi
|
|
<P>
|
|
|
|
La commande <B>supports</B> retournera <B>0</B> en cas de réussite, <B>1</B>
|
|
autrement. Elle vérifiera si les variables d'environnement telles que
|
|
définies par <B>dpkg</B> et requises par le script sont présentes, et
|
|
considérera que c'est un échec si l'environnement n'est pas suffisant.
|
|
<A NAME="lbAN"> </A>
|
|
<H2>ENVIRONNEMENT</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="4"><B>DPKG_COLORS</B><DD>
|
|
Fixe le mode de couleur (depuis dpkg 1.19.1). Les valeurs admises
|
|
actuellement sont <B>auto</B> (par défaut), <B>always</B> et <B>never</B>.
|
|
</DL>
|
|
<A NAME="lbAO"> </A>
|
|
<H2>VOIR AUSSI</H2>
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1)
|
|
<A NAME="lbAP"> </A>
|
|
<H2>TRADUCTION</H2>
|
|
|
|
Ariel VARDI <<A HREF="mailto:ariel.vardi@freesbee.fr">ariel.vardi@freesbee.fr</A>>, 2002.
|
|
Philippe Batailler, 2006.
|
|
Nicolas François, 2006.
|
|
Veuillez signaler toute erreur à <<A HREF="mailto:debian-l10n-french@lists.debian.org">debian-l10n-french@lists.debian.org</A>>.
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="5"><A HREF="#lbAB">NOM</A><DD>
|
|
<DT id="6"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="7"><A HREF="#lbAD">COMMANDES ET PARAMÈTRES</A><DD>
|
|
<DT id="8"><A HREF="#lbAE">DESCRIPTION</A><DD>
|
|
<DT id="9"><A HREF="#lbAF">PARAMÈTRES COMMUNS</A><DD>
|
|
<DT id="10"><A HREF="#lbAG">TÂCHES LIÉES AUX FICHIERS DE CONFIGURATION</A><DD>
|
|
<DL>
|
|
<DT id="11"><A HREF="#lbAH">Supprimer un fichier de configuration</A><DD>
|
|
<DT id="12"><A HREF="#lbAI">Renommer un fichier de configuration</A><DD>
|
|
</DL>
|
|
<DT id="13"><A HREF="#lbAJ">SUBSTITUTIONS DE LIENS SYMBOLIQUES ET DE RÉPERTOIRES</A><DD>
|
|
<DL>
|
|
<DT id="14"><A HREF="#lbAK">Substituer un lien symbolique à un répertoire</A><DD>
|
|
<DT id="15"><A HREF="#lbAL">Substituer un répertoire à un lien symbolique</A><DD>
|
|
</DL>
|
|
<DT id="16"><A HREF="#lbAM">INTÉGRATION DANS LES PAQUETS</A><DD>
|
|
<DT id="17"><A HREF="#lbAN">ENVIRONNEMENT</A><DD>
|
|
<DT id="18"><A HREF="#lbAO">VOIR AUSSI</A><DD>
|
|
<DT id="19"><A HREF="#lbAP">TRADUCTION</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:01 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|