.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "dpkg-maintscript-helper 1" .TH dpkg-maintscript-helper 1 2024-03-10 1.22.6 "dpkg suite" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NOM .IX Header "NOM" dpkg-maintscript-helper \- Contournement des limitations connues de dpkg dans les scripts du responsable .SH SYNOPSIS .IX Header "SYNOPSIS" \&\fBdpkg-maintscript-helper\fR \fIcommande\fR [\fIparam\(`etre\fR...] \fB\-\-\fR \fIparam\(`etre\-script\-responsable\fR... .SH "COMMANDES ET PARAM\(`ETRES" .IX Header "COMMANDES ET PARAM\(`ETRES" .IP "\fBsupports\fR \fIcommande\fR" 4 .IX Item "supports commande" .PD 0 .IP "\fBrm_conffile\fR \fIfichier-de-configuration\fR [\fIversion\-pr\('ec\('edente\fR [\fIpaquet\fR]]" 4 .IX Item "rm_conffile fichier-de-configuration [version-pr\('ec\('edente [paquet]]" .IP "\fBmv_conffile\fR \fIancien-fichier-de-configuration\fR \fInouveau-fichier-de-configuration\fR [\fIderni\(`ere\-version\fR [\fIpaquet\fR]]" 4 .IX Item "mv_conffile ancien-fichier-de-configuration nouveau-fichier-de-configuration [derni\(`ere-version [paquet]]" .IP "\fBsymlink_to_dir\fR \fInom-de-chemin\fR \fIancienne-cible\fR [\fIversion\-pr\('ec\('edente\fR [\fIpaquet\fR]]" 4 .IX Item "symlink_to_dir nom-de-chemin ancienne-cible [version-pr\('ec\('edente [paquet]]" .IP "\fBdir_to_symlink\fR \fInom-de-chemin\fR \fInouvelle-cible\fR [\fIversion\-pr\('ec\('edente\fR [\fIpaquet\fR]]" 4 .IX Item "dir_to_symlink nom-de-chemin nouvelle-cible [version-pr\('ec\('edente [paquet]]" .PD .SH DESCRIPTION .IX Header "DESCRIPTION" Ce programme est pr\('evu pour \(^etre ex\('ecut\('e dans les scripts du responsable afin de r\('ealiser certaines t\(^aches que \fBdpkg\fR ne peut pas (encore) prendre en charge directement \(`a cause de limites de conception ou de limitations actuelles. .PP Many of those tasks require coordinated actions from several maintainer scripts (\fBpreinst\fR, \fBpostinst\fR, \fBprerm\fR, \fBpostrm\fR). To avoid mistakes the same call simply needs to be put in all scripts and the program will automatically adapt its behavior based on the environment variable \fBDPKG_MAINTSCRIPT_NAME\fR and on the maintainer scripts arguments that you have to forward after a double hyphen. .PP This program was introduced in dpkg 1.15.7. .SH "PARAM\(`ETRES COMMUNS" .IX Header "PARAM\(`ETRES COMMUNS" .IP \fIversion\-pr\('ec\('edente\fR 4 .IX Item "version-pr\('ec\('edente" Indique la derni\(`ere version du paquet pour laquelle la mise \(`a niveau doit provoquer l'op\('eration. Il est important de d\('eterminer correctement \fIversion\-pr\('ec\('edente\fR afin que les op\('erations s'accomplissent correctement m\(^eme si l'utilisateur reconstruit le paquet avec une version locale. Si le param\(`etre \fIversion\-pr\('ec\('edente\fR est vide ou omis, l'op\('eration sera tent\('ee \(`a chaque mise \(`a niveau (il est toutefois plus s\(^ur d'indiquer la version afin que l'op\('eration n'ait lieu qu'une fois). .Sp Si le fichier de configuration n'\('etait pas fourni pour une raison ou une autre dans plusieurs versions et que vous modifiez les scripts du responsable pour nettoyer l'ancien fichier, \fIversion\-pr\('ec\('edente\fR doit \(^etre bas\('e sur la version actuellement pr\('epar\('ee et non la premi\(`ere version qui ne fournissait plus ce fichier de configuration. Cela s'applique \(`a toutes les autres actions de la m\(^eme mani\(`ere .Sp Par exemple, pour un fichier de configuration supprim\('e dans la version \fB2.0\-1\fR d'un paquet, \fIversion\-pr\('ec\('edente\fR doit \(^etre \fB2.0\-1~\fR. Cela provoquera la suppression du fichier m\(^eme si la version pr\('ec\('edente \fB1.0\-1\fR a \('et\('e reconstruite avec \fB1.0\-1local1\fR comme num\('ero de version. Ou bien, si un paquet substitue un chemin d'un lien symbolique (fourni dans la version \fB1.0\-1\fR) \(`a un r\('epertoire (fourni dans la version \fB2.0\-1\fR), mais ne r\('ealise r\('eellement la substitution que dans les scripts du responsable dans la version \fB3.0\-1\fR, \fIversion\-pr\('ec\('edente\fR doit \(^etre \fB3.0\-1~\fR. .IP \fIpaquet\fR 4 .IX Item "paquet" Le nom du paquet propri\('etaire du (des) nom(s) de chemin. Si le paquet est \(Fo\ Multi-Arch: same\ \(Fc ce param\(`etre doit inclure le type d'architecture, sinon, il ne devrait \fBpas\fR habituellement inclure le type d'architecture (parce qu'il pourrait interdire les cat\('egories crois\('ees, ou le passage d'une architecture sp\('ecifique \(`a l'architecture \fBall\fR ou vice-versa). Si le param\(`etre est vide ou omis, les variables d'environnement \fBDPKG_MAINTSCRIPT_PACKAGE\fR et \fBDPKG_MAINTSCRIPT_ARCH\fR (telles que d\('efinies par \fBdpkg\fR lors de l'ex\('ecution des scripts du responsable) seront utilis\('ees pour cr\('eer un nom de paquet avec une qualification d'architecture. .IP \fB\-\-\fR 4 .IX Item "--" Tous les param\(`etres des scripts du responsable doivent \(^etre pass\('es au programme apr\(`es \fB\-\-\fR. .SH "T\(^ACHES LI\('EES AUX FICHIERS DE CONFIGURATION" .IX Header "T\(^ACHES LI\('EES AUX FICHIERS DE CONFIGURATION" Lors de la mise \(`a niveau d'un paquet, \fBdpkg\fR ne supprime pas un fichier de configuration automatiquement (comportant des modifications locales \(`a pr\('eserver) s'il n'est pas pr\('esent dans la nouvelle version. Il existe deux raisons principales \(`a cela. En premier lieu, le fichier de configuration peut avoir \('et\('e supprim\('e par accident, \(^etre r\('eint\('egr\('e dans la version suivante et il peut \(^etre n\('ecessaire de retrouver les modifications locales. Ensuite, l'objectif est \('egalement de permettre d'effectuer la transition depuis des fichiers de configuration g\('er\('es par dpkg vers un fichier g\('er\('e \(`a l'aide des scripts du responsable, en g\('en\('eral \(`a l'aide d'un outil comme debconf ou ucf. .PP Cela signifie que si un paquet a besoin de renommer ou supprimer un fichier de configuration, il doit le faire explicitement. L'objectif de \fBdpkg-maintscript-helper\fR est donc de fournir des m\('ethodes de suppression ou renommage de fichiers de configuration \(`a l'aide de scripts du responsable. .SS "Supprimer un fichier de configuration" .IX Subsection "Supprimer un fichier de configuration" \&\fBNote\fR: This can be replaced in most cases by the \f(CW\*(C`remove\-on\-upgrade\*(C'\fR flag in \fIDEBIAN/conffiles\fR (since dpkg 1.20.6), see \fBdeb\-conffiles\fR\|(5). .PP If a conffile is completely removed, it should be removed from disk, unless the user has modified it. If there are local modifications, they should be preserved. If the package upgrade aborts, the newly obsolete conffile should not disappear. .PP L'ensemble de ces pr\('e\-requis est mis en \(oeuvre en utilisant les commandes shell suivantes dans les scripts \fBpreinst\fR, \fBpostinst\fR et \fBpostrm\fR\ : .Sp .RS 4 dpkg-maintscript-helper rm_conffile \e \fIfichier-de-configuration\fR \fIversion\-pr\('ec\('edente\fR \fIpaquet\fR \-\- "$@" .RE .PP \&\fIfichier-de-configuration\fR est le nom du fichier de configuration \(`a supprimer. .PP D\('etails de la mise en \(oeuvre actuelle\ : dans le script \fBpreinst\fR, il est v\('erifi\('e si le fichier de configuration a \('et\('e modifi\('e. Celui-ci est alors renomm\('e, soit en \fIfichier-de-configuration\fR\fB.dpkg\-remove\fR s'il n'a pas \('et\('e modifi\('e, soit en \fIfichier-de-configuration\fR\fB.dpkg\-backup\fR s'il l'a \('et\('e. Dans le script \fBpostinst\fR, ce dernier fichier est ensuite renomm\('e en \fIfichier-de-configuration\fR\fB.dpkg\-bak\fR et conserv\('e pour r\('ef\('erence puisqu'il contient des modifications locales, mais le premier est supprim\('e. Si la mise \(`a jour du paquet est interrompue, le script \fBpostrm\fR remet en place le fichier de configuration d'origine. \(`A la purge du paquet, le script \fBpostrm\fR supprimera \('egalement le fichier \fB.dpkg\-bak\fR qui avait \('et\('e conserv\('e jusque l\(`a. .SS "Renommer un fichier de configuration" .IX Subsection "Renommer un fichier de configuration" Si un fichier de configuration est d\('eplac\('e \(`a un autre endroit, il est n\('ecessaire de garantir la pr\('eservation des modifications locales. \(`A premi\(`ere vue, cela peut sembler \(^etre une simple modification dans le script \fBpreinst\fR, mais cela risque de r\('esulter en une demande, par \fBdpkg\fR, d'approbation de modifications locales qui n'existent pas r\('eellement. .PP Un renommage \('el\('egant peut \(^etre mis en \(oeuvre avec les extraits shell qui suivent, dans les scripts \fBpreinst\fR, \fBpostinst\fR et \fBpostrm\fR\ : .Sp .RS 4 dpkg-maintscript-helper mv_conffile \e \fIancien-fichier-configuration\fR \fInouveau-fichier-configuration\fR \fIversion\-pr\('ec\('edente\fR \fIpaquet\fR \-\- "$@" .RE .PP \&\fIancien-fichier-configuration\fR et \fInouveau-fichier-configuration\fR sont l'ancien et le nouveau nom du fichier de configuration \(`a renommer. .PP D\('etails de la mise en \(oeuvre actuelle\ : dans le script \fBpreinst\fR, il est v\('erifi\('e si le fichier de configuration a \('et\('e modifi\('e. Celui-ci est alors soit laiss\('e en place s'il a \('et\('e modifi\('e, soit renomm\('e en \fIancien-fichier-configuration\fR\fB.dpkg\-remove\fR s'il ne l'a pas \('et\('e. Lors de la configuration, le script \fBpostinst\fR supprime \fIancien-fichier-configuration\fR\fB.dpkg\-remove\fR et renomme \fIancien-fichier-configuration\fR et \fInouveau-fichier-configuration\fR si \fIancien-fichier-configuration\fR existe toujours. Si la mise \(`a jour ou l'installation sont interrompues, le script \fBpostrm\fR renomme \fIancien-fichier-configuration\fR\fB.dpkg\-remove\fR en \fIancien-fichier-configuration\fR si c'est indispensable. .SH "SUBSTITUTIONS DE LIENS SYMBOLIQUES ET DE R\('EPERTOIRES" .IX Header "SUBSTITUTIONS DE LIENS SYMBOLIQUES ET DE R\('EPERTOIRES" Lors de la mise \(`a niveau d'un paquet, \fBdpkg\fR ne substitue pas automatiquement un lien symbolique \(`a un r\('epertoire ou le contraire. Les retours \(`a une version inf\('erieure ne sont pas pris en charge et le chemin sera laiss\('e comme il est. .PP \&\fBNote\fR: The symlinks and directories created during these switches need to be shipped in the new packages, or \fBdpkg\fR will not be able to remove them on purge. .SS "Substituer un lien symbolique \(`a un r\('epertoire" .IX Subsection "Substituer un lien symbolique \(`a un r\('epertoire" Si un lien symbolique est substitu\('e \(`a un r\('epertoire r\('eel, il est n\('ecessaire de garantir qu'avant le d\('epaquetage le lien symbolique est retir\('e. \(`A premi\(`ere vue, cela peut sembler \(^etre une simple modification dans le script \fBpreinst\fR, mais cela risque de r\('esulter en probl\(`emes si l'administrateur local a personnalis\('e le lien symbolique ou si l'on revient \(`a une version ant\('erieure du paquet. .PP Un renommage \('el\('egant peut \(^etre mis en \(oeuvre avec les extraits shell qui suivent, dans les scripts \fBpreinst\fR, \fBpostinst\fR et \fBpostrm\fR\ : .Sp .RS 4 dpkg-maintscript-helper symlink_to_dir \e \fInom-de-chemin\fR \fIancienne-cible\fR \fIversion\-pr\('ec\('edente\fR \fIpaquet\fR \-\- "$@" .RE .PP \&\fInom-de-chemin\fR est le nom absolu de l'ancien lien symbolique (le chemin sera un r\('epertoire \(`a la fin de l'installation) et \fIancienne-cible\fR la cible de l'ancien lien symbolique vers \fInom-de-chemin\fR. Cela peut \(^etre un chemin absolu ou relatif vers le r\('epertoire contenant \fInom-de-chemin\fR. .PP D\('etails de la mise en \(oeuvre actuelle\ : dans le script \fBpreinst\fR, il est v\('erifi\('e si le lien symbolique existe et pointe vers \fIancienne-cible\fR. Si ce n'est pas le cas, il est alors soit laiss\('e en place, soit renomm\('e en \fInom-de-chemin\fR\fB.dpkg\-backup\fR. Lors de la configuration, le script \fBpostinst\fR supprime \fInom-de-chemin\fR\fB.dpkg\-backup\fR si \fInom-de-chemin\fR\fB.dpkg\-backup\fR est encore un lien symbolique. Si la mise \(`a niveau ou l'installation sont interrompues, le script \fBpostrm\fR renomme \fInom-de-chemin\fR\fB.dpkg\-backup\fR en \fInom-de-chemin\fR si c'est indispensable. .SS "Substituer un r\('epertoire \(`a un lien symbolique" .IX Subsection "Substituer un r\('epertoire \(`a un lien symbolique" Si un r\('epertoire r\('eel est substitu\('e \(`a un lien symbolique, il est n\('ecessaire de garantir qu'avant le d\('epaquetage le r\('epertoire est retir\('e. \(`A premi\(`ere vue, cela peut sembler \(^etre une simple modification dans le script \fBpreinst\fR, mais cela risque de r\('esulter en probl\(`emes si le r\('epertoire contient des fichiers de configuration, des noms de chemins qui appartiennent \(`a d'autres paquets, des noms de chemin cr\('e\('es localement ou si l'on revient \(`a une version ant\('erieure du paquet. .PP Une substitution \('el\('egante peut \(^etre mise en \(oeuvre avec les extraits shell qui suivent, dans les scripts \fBpreinst\fR, \fBpostinst\fR et \fBpostrm\fR\ : .Sp .RS 4 dpkg-maintscript-helper dir_to_symlink \e \fInom-de-chemin\fR \fInouvelle-cible\fR \fIversion\-pr\('ec\('edente\fR \fIpaquet\fR \-\- "$@" .RE .PP \&\fInom-de-chemin\fR est le nom absolu de l'ancien r\('epertoire (le chemin sera un lien symbolique \(`a la fin de l'installation) et \fInouvelle-cible\fR la cible du nouveau lien symbolique vers \fInom-de-chemin\fR. Cela peut \(^etre un chemin absolu ou relatif vers le r\('epertoire contenant \fInom-de-chemin\fR. .PP D\('etails de la mise en \(oeuvre actuelle\ : dans le script \fBpreinst\fR, il est v\('erifi\('e si le r\('epertoire existe et ne contient pas de fichiers de configuration, de noms de chemin qui appartiennent \(`a d'autres paquets, de noms de chemin cr\('e\('es localement. Si ce n'est pas le cas, il est alors soit laiss\('e en place, soit renomm\('e en \fInom-de-chemin\fR\fB.dpkg\-backup\fR et un r\('epertoire vide provisoire nomm\('e \fInom-de-chemin\fR est cr\('e\('e, marqu\('e par un fichier pour que dpkg le suive. Lors de la configuration, le script \fBpostinst\fR ach\(`eve la substitution si \fInom-de-chemin\fR\fB.dpkg\-backup\fR est encore un r\('epertoire et si \fInom-de-chemin\fR est le r\('epertoire provisoire. Il supprime le fichier qui marque le fichier provisoire et d\('eplace les fichiers nouvellement cr\('e\('es dans le r\('epertoire provisoire vers la cible du lien symbolique \fInouvelle-cible\fR, remplace le r\('epertoire provisoire \fInom-de-chemin\fR, maintenant vide, par un lien symbolique vers la \fInouvelle-cible\fR et, enfin supprime \fInom-de-chemin\fR\fB.dpkg\-backup\fR. Si la mise \(`a niveau ou l'installation sont interrompues, le script \fBpostrm\fR renomme \fInom-de-chemin\fR\fB.dpkg\-backup\fR en \fInom-de-chemin\fR si c'est indispensable. .SH "INT\('EGRATION DANS LES PAQUETS" .IX Header "INT\('EGRATION DANS LES PAQUETS" When using a packaging helper, please check if it has native \fBdpkg-maintscript-helper\fR integration, which might make your life easier. See for example \fBdh_installdeb\fR\|(1). .PP Comme \fBdpkg-maintscript-helper\fR est utilis\('e dans le script \fBpreinst\fR, l'utiliser sans conditions impose une pr\('e\-d\('ependance afin de garantir que la version minimale n\('ecessaire de \fBdpkg\fR ait bien \('et\('e pr\('ealablement configur\('ee. La version minimale d\('epend de la commande utilis\('ee\ : ainsi pour \fBrm_conffile\fR et \fBmv_conffile\fR, cette version est 1.15.7.2, pour \fBsymlink_to_dir\fR et \fBdir_to_symlink\fR, c'est 1.17.14\ : .Sp .Vb 1 \& Pre\-Depends: dpkg (>= 1.17.14) .Ve .PP Cependant, dans de nombreux cas, l'op\('eration r\('ealis\('ee par le programme n'est pas critique pour le paquet et au lieu d'utiliser une pr\('e\-d\('ependance, il est possible de ne lancer le programme que si on a la certitude que la commande n\('ecessaire est g\('er\('ee par la version actuellement install\('ee de \fBdpkg\fR\ : .Sp .RS 4 if dpkg-maintscript-helper supports \fIcommande\fR; then dpkg-maintscript-helper \fIcommande\fR ... fi .RE .PP La commande \fBsupports\fR retournera \fB0\fR en cas de r\('eussite, \fB1\fR autrement. Elle v\('erifiera si les variables d'environnement telles que d\('efinies par \fBdpkg\fR et requises par le script sont pr\('esentes, et consid\('erera que c'est un \('echec si l'environnement n'est pas suffisant. .SH ENVIRONNEMENT .IX Header "ENVIRONNEMENT" .IP \fBDPKG_ROOT\fR 4 .IX Item "DPKG_ROOT" Si cette variable est positionn\('ee, ce r\('epertoire sera utilis\('e comme r\('epertoire racine du syst\(`eme de fichiers. .IP \fBDPKG_ADMINDIR\fR 4 .IX Item "DPKG_ADMINDIR" Si cette variable est positionn\('ee, ce r\('epertoire sera utilis\('e comme r\('epertoire de donn\('ees pour \fBdpkg\fR. .IP \fBDPKG_COLORS\fR 4 .IX Item "DPKG_COLORS" Fixe le mode de couleur (depuis dpkg\ 1.19.1). Les valeurs admises actuellement sont \fBauto\fR (par d\('efaut), \fBalways\fR et \fBnever\fR. .SH "VOIR AUSSI" .IX Header "VOIR AUSSI" \&\fBdh_installdeb\fR\|(1). .SH TRADUCTION .IX Header "TRADUCTION" Ariel VARDI , 2002. Philippe Batailler, 2006. Nicolas Fran\(,cois, 2006. Veuillez signaler toute erreur \(`a .