debhelper(7)

NOM
debhelper – Ensemble d'outils regroupés sous le nom de debhelper

SYNOPSIS
dh_* [-v] [-a] [-i] [--no-act] [-ppaquet] [-Npaquet] [-Ptmpdir]

DESCRIPTION
Debhelper facilite la construction des paquets Debian. La philosophie qui sous-tend debhelper est de fournir une collection de petits outils simples et facilement compréhensibles qui seront exploités dans debian/rules pour automatiser les tâches courantes liées à la construction des paquets, d'où un travail allégé pour le responsable. Dans une certaine mesure, cela signifie également que ces outils peuvent être adaptés aux modifications éventuelles de la Charte Debian. Les paquets qui utiliseront debhelper ne nécessiteront qu'une simple reconstruction pour être conformes aux nouvelles règles.

Un fichier debian/rules typique, exploitant debhelper, appellera séquentiellement plusieurs des commandes de debhelper ou bien utilisera dh(1) pour automatiser ce processus. Des exemples de fichiers debian/rules qui exploitent debhelper se trouvent dans /usr/share/doc/debhelper/examples/

Pour créer un nouveau paquet Debian en utilisant debhelper, il suffit de copier un des fichiers d'exemple et de le modifier manuellement. Il est possible également d'essayer le paquet dh-make qui contient une commande dh_make automatisant partiellement le processus. Pour se familiariser avec ces concepts, le paquet Debian maint-guide contient un cours sur la construction d'un premier paquet avec debhelper.

Sauf lorsque l'outil explicite le contraire, tous les outils debhelper sont prévus pour être exécutés dans le répertoire racine d'un paquet source désarchivé. Cela leur permet de trouver les fichiers debian/control.

COMMANDES DE DEBHELPER
Voici la liste des commandes de debhelper disponibles. Consulter leurs pages de manuel respectives pour obtenir des informations complémentaires.

  Commandes obsolètes
Quelques commandes de debhelper sont obsolètes et ne devraient plus être utilisées.

  Autres commandes
Si le nom d'un programme commence par dh_ et qu'il n'est pas dans les listes ci-dessus, cela signifie qu'il ne fait pas partie de la suite debhelper. Cependant, il devrait tout de même fonctionner comme les autres programmes décrits dans cette page.

FICHIERS DE CONFIGURATION DE DEBHELPER
Beaucoup de commandes de debhelper utilisent des fichiers du répertoire debian/ pour piloter leur fonctionnement. Outre les fichiers debian/changelog et debian/control, qui se trouvent dans tous les paquets, et pas seulement dans ceux qui emploient debhelper, d'autres fichiers peuvent servir à configurer le comportement des commandes spécifiques de debhelper. Ces fichiers sont, en principe, nommés debian/paquet.toto (où paquet est, bien sûr, à remplacer par le nom du paquet concerné).

Par exemple, dh_installdocs utilise un fichier appelé debian/package.docs pour énumérer les fichiers de documentation qu'il installera. Consulter les pages de manuel des différentes commandes pour connaître le détail des noms et des formats des fichiers employés. D'une façon générale, ces fichiers de configuration énumèrent les fichiers sur lesquels devra porter l'action, à raison d'un fichier par ligne. Quelques programmes de debhelper emploient des paires fichier/destination voire des formats légèrement plus compliqués.

Noter que s'il n'y a qu'un paquet binaire listé dans debian/control, debhelper utilisera debian/toto lorsqu'il n'y a aucun fichier debian/paquet.toto. Dans les niveaux de compatibilité antérieurs à compat\ 15, cette solution de repli se produit aussi pour le premier paquet binaire listé dans debian/control quand il y plusieurs paquets binaires. Cependant, c'est une bonne idée de garder le préfixe paquet., car c'est plus explicite et requis également lors de la mise à niveau vers compat\ 15.

En plus, il existe des cas particuliers où debhelper se repliera toujours sur une version sans préfixe. Il y a des cas comme debian/copyright ou debian/changelog où les fichiers sont généralement utilisés et nécessaires à tous les paquets binaires.

Dans quelques rares cas, il peut être utile d'exploiter différentes versions de ces fichiers pour des architectures ou des systèmes d'exploitation différents. S'il existe des fichiers appelés debian/paquet.toto.ARCH ou debian/paquet.toto.OS, dans lesquels ARCH et OS correspondent respectivement au résultat de « dpkg-architecture -qDEB_HOST_ARCH » ou de « dpkg-architecture -qDEB_HOST_ARCH_OS », alors ils seront utilisés de préférence aux autres fichiers plus généraux.

En général, ces fichiers de configuration sont employés pour indiquer des listes de divers types de fichiers : documentation, fichiers d'exemple à installer, fichiers à déplacer et ainsi de suite. Lorsque cela se justifie, dans des cas comme ceux-ci, il est possible d'employer, dans ces fichiers, les jokers (wildcard) standards de l'interpréteur de commandes (shell) (? et * et [..]). Des commentaires peuvent être ajoutés dans ces fichiers : les lignes commençant par # sont ignorées.

La syntaxe de ces fichiers est volontairement simple, pour les rendre faciles à lire, à comprendre et à modifier.

  Substitutions dans les fichiers de configuration de debhelper
À partir du niveau de compatibilité 13, il est possible d'utiliser des substitutions simples dans les fichiers de configuration de debhelper pour les outils suivants :

•   dh_clean

•   dh_install

•   dh_installcatalogs

•   dh_installdeb

•   dh_installdirs

•   dh_installdocs

•   dh_installexamples

•   dh_installinfo

•   dh_installman

•   dh_installwm

•   dh_link

•   dh_missing

•   dh_ucf

Toutes les variables de substitution sont de la forme ${toto} et les accolades sont obligatoires. Les noms de variable sont sensibles à la casse et sont constitués de caractères alphanumériques (a-zA-Z0-9), tirets (-), tirets bas (_) et deux points (:). Le premier caractère doit être alphanumérique.

Si vous avez besoin d'un dollar littéral qui ne déclenche pas une substitution, il est possible d'utiliser soit la substitution ${Dollar} soit la séquence ${}.

Les développements suivants sont disponibles :

DEB_HOST_*, DEB_BUILD_*, DEB_TARGET_*
    Se développent à la valeur dpkg-architecture(1) adéquate (comme dpkg-architecture -qVARIABLE_HERE).

    En cas de doute, la variante DEB_HOST_* est celle qui fonctionnera à la fois pour les constructions natives et croisées

    Pour des raisons de performance, debhelper tentera de résoudre d'abord ces noms à partir de l'environnement avant de consulter dpkg-architecture(1). Cela est mentionné principalement dans un esprit de complétude, car cela n'a pas d'importance dans la plupart des cas.

Dollar
    Se développe en un symbole $ littéral unique. Ce symbole ne sera jamais considéré comme faisant partie d'une variable de substitution. C'est-à-dire :

       # Déclenche une erreur
       ${NO_SUCH_TOKEN}
       # Se développe à la valeur littérale « ${NO_SUCH_TOKEN} »
       ${Dollar}{NO_SUCH_TOKEN}

    Cette variante est l'équivalent de la séquence ${} et les deux sont interchangeables.

Newline, Space, Tab
    Se développent respectivement en un seul caractère ASCII saut de ligne, une espace et une tabulation.

    Cela peut être utile s'il est nécessaire d'inclure un caractère d'espacement littéral (par exemple une espace) là où il serait autrement dépouillé ou utilisé comme un séparateur.

env:NOM
    Se développe en la variable d'environnement NOM. La variable d'environnement doit être réglée (mais elle peut être réglée à une chaîne vide).

Notez que toutes les variables doivent se développer à une valeur définie. Par exemple, si debhelper voit ${env:TOTO}, alors, il affirme que la variable d'environnement TOTO est réglée (elle peut être réglée à une chaîne vide).

Contraintes des substitutions

To avoid infinite loops and resource exhaustion, debhelper will stop with an error if the token contains many substitution variables (50) or the total size of the expanded value exceed a certain size (4096 characters or 3x length of the original input - whichever is bigger).

Note the limit is per token. Every helper decides its own definition of a token. The common case of files like debian/package.install, each token is a file/path name.

Contraintes des substitutions : filtrage

La fonction de substitution intégrée ne peut pas être utilisée pour « filtrer » le contenu. Une tentative pour créer des «\ commentaires\ » ou des « lignes vides » avec la substitution aura pour conséquence que ces variables seront considérées comme un item à part entière avec le contenu donné.

Si vous souhaitez utiliser un filtrage, vous devriez envisager d'utiliser un fichier de configuration de debhelper exécutable avec dh-exec comme interpréteur. L'outil dh-exec prend en charge plusieurs fonctions prêtes à l'emploi. Cependant, gardez à l'esprit que dh-exec a sa propre logique de substitution qui peut interagir avec celle de debhelper.

  Fichiers de configuration de l'exécutable debhelper.
Si vous avez besoin de plus de flexibilité, de nombreux outils de debhelper (par exemple dh_install(1)) prennent en charge l'exécution d'un fichier de configuration comme un script.

Pour utiliser cette fonctionnalité, il suffit de marquer le fichier comme exécutable (<chmod +x debian/paquet.install >). L'outil essaiera de l'exécuter et utilisera la sortie du script. Le plus souvent, vous pouvez utiliser dh-exec(1) comme interpréteur du fichier de configuration pour conserver la majorité de la syntaxe originale tout en gagnant en flexibilité.

Lorsque vous utilisez des fichiers de configuration exécutables de debhelper, veuillez vous souvenir des choses suivantes :

•   Le fichier de configuration exécutable doit se terminer avec succès (le code de retour doit l'indiquer).

•   À partir du niveau de compatibilité 13, la sortie sera sujette à des substitutions (voir "Substitutions dans les fichiers de configuration de debhelper") lorsque l'outil les prend en charge. N'oubliez d'être prudent si votre générateur fournit aussi des substitutions parce que cela peut provoquer des confusions inutiles. En particulier, l'outil dh-exec, fréquemment utilisé, possède sa propre prise en charge des substitutions.

    Autrement, la sortie sera utilisée exactement telle quelle. En particulier, debhelper ne développera pas les jokers, ni ne supprimera les commentaires ou les espaces de la sortie qu'il lit. L'outil dh-exec a un filtre de sortie activé par défaut qui retire ce genre de choses.

Si vous avez besoin de construire le paquet sur un système de fichiers où l'on ne peut pas désactiver le bit d'exécution, vous pouvez utiliser dh-exec(1) et son script strip-output.

OPTIONS PARTAGÉES DE DEBHELPER
Tous les programmes de debhelper acceptent les options suivantes.

-v, --verbose
    Mode bavard : afficher les commandes qui modifient le répertoire de construction du paquet.

    Notez que le mode bavard peut aussi lister d'autres commandes « internes » qui n'affectent pas directement le répertoire de construction du paquet.

--no-act
    Empêche la construction de s'effectuer réellement. Si cette option est utilisée avec -v, le résultat sera l'affichage de ce que la commande aurait fait.

-a, --arch
    Construit tous les paquets dépendants de l'architecture DEB_HOST_ARCH.

-i, --indep
    Construit tous les paquets indépendants de l'architecture.

-ppaquet, --package=paquet
    Construit le paquet nommé paquet. Cette option peut être répétée afin de faire agir debhelper sur plusieurs paquets.

-s, --same-arch
    Alias obsolète pour -a.

    Cette option est supprimée dans le niveau de compatibilité 12.

-Npaquet, --no-package=paquet
    Exclut le paquet indiqué du processus de construction, même si l'option -a, -i ou -p l'impliquait.

--remaining-packages
    Exclut du processus de construction les paquets qui ont déjà été construits préalablement par cette commande debhelper (c'est-à-dire, si la commande est présente dans le journal de debhelper du paquet). Par exemple, si vous avez besoin d'invoquer la commande avec des options spéciales seulement pour certains paquets binaires, utilisez cette option lors de la dernière invocation de la commande pour construire le reste des paquets avec les options par défaut.

-Ptmpdir, --tmpdir=tmpdir
    Utilise le répertoire tmpdir pour construire les paquets. Sinon, par défaut, le répertoire utilisé est debian/paquet

--mainpackage=paquet
    Obsolète : cette option n'a pas d'utilité pratique dans compat\ 15 ou ultérieur dans la mesure où le comportement qu'elle affecte a été supprimé dans compat 15.

    Cette option, peu utilisée, indique à debhelper le nom du « paquet principal » pour lequel les fichiers debian/toto peuvent être utilisés à la place des fichiers habituels debian/paquet.toto. Par défaut, debhelper considère que le « paquet principal » est le premier paquet énuméré dans le fichier debian/control.

-O=option|ensemble
    Cette option est utilisée par dh(1) pour passer une ou plusieurs options, indiquées par l'utilisateur, à toutes les commandes exécutées. Si la commande prend en charge l'option ou l'ensemble d'options, elle prendra effet. Si la commande n'accepte pas l'option (ou une partie de l'ensemble d'options), elle sera ignorée.

OPTIONS COURANTES DE DEBHELPER
Certains programmes de debhelper acceptent les options ci-dessous. Consulter la page de manuel de chaque programme pour une explication complète du rôle de ces options.

-n  Ne pas modifier les scripts de maintenance du paquet (postinst, postrm, etc.)

-Xélément, --exclude=élément
    Permet d'exclure un élément du traitement. Cette option peut être employée plusieurs fois afin d'exclure plusieurs éléments. L'élément est en général une partie du nom de fichier, et tous les fichiers contenant le texte indiqué seront exclus.

-A, --all
    Précise que les fichiers (ou autres éléments) indiqués dans la ligne de commande concernent tous les paquets construits et pas seulement le premier.

OPTIONS DU PROCESSUS DE CONSTRUCTION
Les programmes debhelper dh_auto_* comportent plusieurs processus de construction et déterminent, de manière heuristique, lequel utiliser et comment. Il peut être utile de modifier ce comportement par défaut. Tous ces programmes dh_auto_* acceptent les options suivantes, typiquement passées à dh(1), qui les passe ensuite à tous les programmes dh_auto_*.

-Sprocessus de construction, --buildsystem=processus_de_construction
    Oblige à utiliser le processus de construction indiqué au lieu de tenter de déterminer automatiquement celui qui pourrait être utilisable pour le paquet.

    Indique none comme buildsystem pour désactiver la sélection automatique.

-Drépertoire, --sourcedir=répertoire, --sourcedirectory=répertoire
    Considère que les sources du paquet sont situées dans le répertoire indiqué plutôt qu'au plus haut niveau de l'arborescence du paquet source.

    Attention : La variante --sourcedir correspond à une option du même nom dans dh_install et dh_missing, etc., pour des raisons historiques. Alors qu'elles ont le même nom, elles ont des objectifs très différents et, dans certains cas, cela peut provoquer des erreurs quand cette variante est passée à dh (quand ensuite il le passe à tous les outils).

-B[répertoire], --builddir=[répertoire], --builddirectory=[répertoire]
    Permet de construire le paquet en dehors de la structure source en utilisant le répertoire indiqué comme répertoire de construction. Si le paramètre répertoire n'est pas indiqué, un répertoire de construction par défaut sera choisi.

    Si cette option n'est pas indiquée, la construction se fera dans l'arborescence source à moins que le processus exige ou préfère le faire en dehors de cette structure. Dans ce cas, le répertoire par défaut sera utilisé même si --builddirectory n'est pas indiqué.

    Même si le système préfère utiliser, pour la construction, un répertoire situé en dehors de l'arborescence source, il autorise quand même la construction dans l'arborescence source. Pour cela, il suffit d'utiliser un chemin d'accès au répertoire de construction identique au chemin d'accès au répertoire source.

--parallel, --no-parallel
    Détermine si la construction parallèle doit être utilisée, si le système sous-jacent le permet. Le nombre de tâches parallèles est contrôlé, lors de la construction, par la variable d'environnement DEB_BUILD_OPTIONS ("Charte Debian, section 4.9.1"). Ce nombre peut également être soumis aux limites spécifiques du système de construction.

    Si aucune de ces options n'est précisée, debhelper active la parallélisation par défaut (--parallel) dans le niveau de compatibilité 10 (ou supérieur), et la désactive (--no-parallel) dans les autres niveaux.

    Pour des raisons d'optimisation, dh essaiera de ne pas passer ces options aux processus fils si elles ne sont pas nécessaires et qu'elles sont les seules options. Cela arrive en particulier lorsque DEB_BUILD_OPTIONS n'a pas de paramètre parallel (ou si sa valeur est 1).

--max-parallel=maximum
    Cette option implique --parallel et permet de limiter le nombre de tâches qui pourront être lancées lors d'une compilation parallèle. Si la construction du paquet est connue pour ne fonctionner qu'avec un certain niveau de parallélisme, il est possible de le régler à la valeur maximale censée fonctionner, ou que vous souhaitez mettre en œuvre.

    En particulier, régler le maximum à 1 équivaut à l'utilisation de --no-parallel.

--reload-all-buildenv-variables
    Par défaut, dh(1) calcule plusieurs variables d'environnement (par exemple en utilisant dpkg-buildflags(1)) et les met en cache pour éviter que tous les outils dh_auto_* les recalculent.

    Lorsque cette option est passée, l'outil réel dh_auto_* ignorera le cache de dh(1) et déclenchera une reconstruction de ces variables. Cela est utile dans le cas très rare où le paquet requiert de multiples constructions mais avec des options ...FLAGS différentes. Un exemple concret pourrait être la nécessité de modifier le paramètre -0 dans CFLAGS dans la seconde construction.

        export DEB_CFLAGS_MAINT_APPEND=-O3

        %:
            dh $@

        override_dh_auto_configure:
            dh_auto_configure -Bbuild-deb ...
            DEB_CFLAGS_MAINT_APPEND=-Os dh_auto_configure \
               --reload-all-buildenv-variables -Bbuild-udeb ...

    Sans --reload-all-buildenv-variables dans le second appel à dh_auto_configure(1), la modification dans DEB_CFLAGS_MAINT_APPEND pourrait être ignorée parce que dh_auto_configure(1) pourrait utiliser la valeur mise en cache de CFLAGS fixée par dh(1).

    Cette option est seulement disponible avec debhelper (>= 12.7~) quand le paquet utilise le niveau de compatibilité 9 ou supérieur.

--list, -l
    Liste tous les processus de construction pris en charge par le système. Cette liste inclut à la fois les processus par défaut et les processus tiers (marqués comme tels). Cette option montre également le processus de construction automatiquement sélectionné ou celui indiqué manuellement avec l'option --buildsystem.

NIVEAUX DE COMPATIBILITÉ
Parfois, des modifications majeures de debhelper doivent être faites et vont briser la compatibilité ascendante. Ces modifications sont nécessaires pour conserver à debhelper ses qualités de conception et d'écriture, car les besoins changent et le savoir-faire de l'auteur s'améliore. Pour éviter que de tels changements ne cassent les paquets existants, un concept de niveau de compatibilité debhelper a été introduit. On devra préciser à debhelper le niveau de compatibilité qu'il doit employer, ce qui modifiera son comportement de diverses manières.

Dans la version actuelle de debhelper, vous pouvez spécifier le niveau de compatibilité à utiliser dans debian/control en ajoutant une dépendance de construction (Build-Depends) sur le paquet debhelper-compat. Par exemple, pour exploiter la version 13, assurez-vous d'indiquer dans debian/control :

  Build-Depends: debhelper-compat (= 13)

Cela sert aussi à avoir une dépendance de construction sur une version suffisante de debhelper. Ainsi il n'est pas nécessaire d'indiquer une dépendance de construction particulière sur debhelper, sauf si vous avez besoin d'une mise à jour spécifique (comme pour l'introduction d'une nouvelle fonctionnalité ou une correction de bogue à l'intérieur d'un niveau de compatibilité).

Veuillez noter que debhelper ne fournit pas debhelper-compat pour les niveaux experimental ou bêta. Les paquets qui souhaitent expérimenter ces niveaux de compatibilité doivent mettre le niveau de compatibilité dans le champ X-DH-Compat de la section Source du fichier debian/control (ou si c'est seulement pour des commandes choisies, la variable d'environnement DH_COMPAT).

Historiquement, debhelper nécessitait d'indiquer le niveau de compatibilité dans le fichier debian/compat, et debhelper jusqu'à la version 14 continue à le comprendre pour des raisons de rétrocompatibilité. Pour utiliser cette méthode, le fichier debian/compat doit contenir le niveau de compatibilité comme une valeur entière, et rien d'autre. Si vous indiquez le niveau de compatibilité ainsi, votre paquet aura besoin d'une dépendance de construction versionnée sur une version de debhelper, égale (ou supérieure) au niveau de compatibilité utilisé. Ainsi, si vous indiquez le niveau 13 dans debian/compat, assurez-vous que le fichier debian/control contient :

  Build-Depends: debhelper (>= 13~)

Notez que vous devez utiliser exactement une méthode pour spécifier le niveau de compatibilité de debhelper par défaut du paquet. Chaque fois que c'est possible, la dépendance de construction debhelper-compat est recommandée.

Au besoin, la variable d'environnement DH_COMPAT peut être utilisée pour outrepasser le niveau de compatibilité pour une commande donnée. Cette fonction est surtout utile pour mettre à niveau temporairement quelques commandes vers un nouveau niveau de compatibilité ou pour garder certaines commandes à un niveau de compatibilité inférieur. Il vaut mieux utiliser cette fonction avec modération parce qu'elle introduit effectivement des cas particuliers dans le fichier debian/rules qui peuvent être déconcertants pour les responsables ou les réviseurs (ou, à long terme, pour vous-même).

Sauf indication contraire, toute la documentation de debhelper suppose l'utilisation du niveau de compatibilité le plus récent, et, dans la plupart des cas ne précise pas si le comportement est différent avec les niveaux de compatibilité antérieurs. De ce fait, si le niveau de compatibilité le plus récent n'est pas celui utilisé, il est fortement conseillé de lire les indications ci-dessous qui exposent les différences dans les niveaux de compatibilité antérieurs.

  Niveaux de compatibilité pris en charge
La liste des niveaux de compatibilité pris en charge et la liste de contrôle de mise à niveau ont été déplacées dans debhelper-compat-upgrade-checklist(7).

REMARQUES

  Prise en charge de plusieurs paquets binaires
Si le paquet source produit plus d'un paquet binaire, les programmes de debhelper construiront tous les paquets binaires. Si le paquet source doit construire un paquet dépendant de l'architecture et un paquet indépendant de l'architecture, ce comportement ne conviendra pas. En effet, il convient de construire les paquets dépendants de l'architecture dans la cible « binary-arch » de debian/rules, et les paquets indépendants de l'architecture dans la cible « binary-indep » de debian/rules.

Pour résoudre ce problème, et pour un meilleur contrôle sur la construction des paquets par debhelper, tous les programmes de debhelper acceptent les options -a, -i, -p et -s. Ces options sont cumulatives. Si aucune n'est précisée, les programmes de debhelper construisent tous les paquets énumérés dans le fichier de contrôle, avec les exceptions ci-dessous.

Tout d'abord, chaque paquet dont le champ Architecture de debian/control ne contient pas l'architecture DEB_HOST_ARCH sera exclu ("Charte Debian, section 5.6.8").

De plus, quelques autres paquets peuvent être exclus suivant le contenu de la variable d'environnement DEB_BUILD_PROFILES et les champs Build-Profiles des paragraphes debian/control dans les paquets binaires, conformément au brouillon de la charte (voir <https://wiki.debian.org/BuildProfileSpec>).

Interaction entre les sélections de paquets et les Build-Profiles

Les profils de construction (« Build-Profiles ») ont un effet sur le choix des paquets inclus dans les mécanismes de sélection de paquets de debhelper. Généralement, les sélections partent du principe que tous les paquets sont activés. Cette section décrit comment les sélections fonctionnent lorsqu'un paquet est désactivé par un profil de construction (ou par son absence).

-a/--arch, -i/--indep ou aucune option de sélection (un simple appel « dh_X »)
    Le paquet désactivé par le profil est silencieusement exclu de la sélection.

    Veuillez noter que vous recevrez un avertissement si tous les paquets relatifs à cette sélection sont désactivés. Dans ce cas, il est généralement d'aucune utilité de construire.

-N paquet / --no-package paquet
    Cette option est acceptée et ne fait rien.

-p paquet / --package paquet
    Cette option est acceptée, mais debhelper n'agira pas sur le paquet.

Veuillez noter que cela n'a pas d'importance que le paquet soit activé ou désactivé par défaut.

  Génération automatique des scripts Debian d’installation
Certaines commandes de debhelper produisent automatiquement des lignes de code de maintenance du paquet. Pour les inclure dans vos propres scripts de maintenance du paquet, il convient d'ajouter #DEBHELPER# à l'endroit où les lignes de code générées devront être insérées. #DEBHELPER# sera remplacé, par les lignes de code générées automatiquement, lors de l'exécution de dh_installdeb.

Si un script de maintenance n'existe pas et que debhelper doit y inclure quelque chose, alors debhelper créera le script de maintenance complètement.

When inserting the #DEBHELPER# token into a script, consider whether any of the hand written code has a compelling reason to appear before the #DEBHELPER# token. The #DEBHELPER# token will generally contain the code that start (postinst) or stop (prerm/preinst) any services the package is providing. Often (but not always), it is better to let the code from #DEBHELPER# run first. Common exceptions include things like set -e, initializing debconf (when needed) and special-cases like generation or hand-written management of configuration files. These things should generally occur before the #DEBHELPER# token.

Toutes les commandes de debhelper qui produisent automatiquement des lignes de code de cette façon peuvent inhiber cette production grâce à l'option -n (voir ci-dessus).

Nota : Les lignes de code insérées seront écrites dans le langage de l'interpréteur de commandes (shell). De ce fait, il est impossible de les placer directement dans un script Perl. Pour les insérer dans un script Perl, voici une solution (s'assurer que $1, $2, etc., sont bien définis par la commande set) :

  my $temp="set -e\nset -- @ARGV\n" . << 'EOF';
  #DEBHELPER#
  EOF
  if (system($temp)) {
     my $exit_code = ($? >> 8) & 0xff;
     my $signal = $? & 0x7f;
     if ($exit_code) {
         die("Le script debhelper a échoué avec le code d'erreur : ${exit_code}");
     } else {
         die("Le script debhelper a été tué par le signal : ${signal}");
     }
  }

  Génération automatique des diverses dépendances.
Certaines commandes de debhelper peuvent nécessiter des dépendances entre le paquet construit et d'autres paquets. Par exemple, si dh_installdebconf(1) est employé, le paquet devra dépendre de debconf. Si dh_installxfonts(1) est employé, le paquet deviendra dépendant d'une version particulière de xutils. Maintenir ces dépendances induites peut être pénible puisqu'elles découlent de la façon dont debhelper travaille. C'est pourquoi debhelper offre une solution d'automatisation.

As of compat 14, debhelper will automatically inject the relevant dependencies for you, since the dependency is done via a "relationship substvar" (see <https://lists.debian.org/debian-devel/2024/02/msg00230.html> and <https://lists.debian.org/debian-devel/2024/03/msg00030.html> for details).

In earlier compat levels, you have to manually specify the relevant substvars in the relevant fields. Typically, ${misc:Depends} for the Depends field and ${misc:Pre-Depends} for the Pre-Depends fields.

The variables listed here are entirely independent of the standard ${shlibs:Depends} generated by dh_makeshlibs(1), and the ${perl:Depends} generated by dh_perl(1). For compat 13 and earlier you will also have to add these to the respective fields when relevant.

  Répertoires de construction du paquet
Par défaut, tous les programmes de debhelper supposent que le répertoire temporaire utilisé pour construire l'arborescence des fichiers d'un paquet est debian/paquet.

Parfois, il peut être souhaitable d'utiliser un autre répertoire temporaire. C'est obtenu grâce à l'attribut -P. Par exemple, dh_installdocs -Pdebian/tmp utilisera debian/tmp comme répertoire temporaire. Nota : L'usage de -P implique que les programmes de debhelper ne construisent qu'un seul paquet à la fois. De ce fait, si le paquet source génère plusieurs paquets binaires, il faudra employer également le paramètre -p pour préciser l'unique paquet binaire à construire.

  udebs
Debhelper prend en charge la construction des udebs. Pour créer un udeb avec debhelper, il faut ajouter « Package-Type: udeb » aux lignes de paquet dans debian/control. Debhelper essayera de construire des udebs, conformément aux règles de l'installateur Debian, en suffixant les fichiers de paquets générés avec .udeb, en n'installant aucune documentation dans un udeb, en omettant les scripts preinst, postrm, prerm et config, etc.

VARIABLES D'ENVIRONNEMENT
Cette section décrit certaines des variables d'environnement qui influencent le comportement de debhelper ou avec lesquelles debhelper est en interaction.

Il est important de noter que celles-ci doivent être des variables existantes pour affecter le comportement de debhelper (pas simplement des variables de Makefile). Pour les définir proprement dans le fichier debian/rules, assurez-vous de les exporter (« export »). Par exemple « export DH_VERBOSE ».

DH_VERBOSE
    Définir à une valeur non vide pour activer le mode bavard. Consultez l'option -v/--verbose pour des détails.

DH_QUIET
    Définir à une valeur non vide pour activer le mode silencieux. Debhelper n'affichera aucune commande appelant le système de construction amont, et dh n'affichera aucune des sous-commandes appelées. En fonction du système de construction amont, cela pourra le rendre encore plus silencieux. Cela facilite la détection des messages importants, mais rend la sortie inutile en tant que journal de construction.

    Cette valeur est ignorée si DH_VERBOSE est aussi positionnée ou si -v/--verbose est passée.

DH_COMPAT
    Indiquer temporairement le niveau de compatibilité avec lequel debhelper doit fonctionner. Cette valeur supplante le niveau de compatibilité par défaut du paquet source.

DH_NO_ACT
    Mettre cette variable à 1 pour activer le mode simulation (no-act).

DH_OPTIONS
    Tous les outils de debhelper analyseront les arguments de la ligne de commande listés dans cette variable avant toute option de commande (comme s'ils avaient été ajoutés au début des arguments de la ligne de commande). Malheureusement, certains outils tiers peuvent ne pas prendre en compte cette variable et ignoreront ces arguments.

    En utilisant dh(1), des options peuvent être passées à chaque commande debhelper, ce qui est généralement mieux que d'utiliser DH_OPTIONS.

DH_ALWAYS_EXCLUDE
    Si cette variable possède une valeur, elle sera ajoutée à l'option -X de toutes les commandes qui admettent cette option. De plus, dh_builddeb fera un rm -rf pour chaque chose correspondant à la valeur dans l'arbre de construction de paquet.

    Cela peut être utile pour construire un paquet à partir d'une arborescence CVS. Dans ce cas, le réglage de DH_ALWAYS_EXCLUDE=CVS empêchera les répertoires CVS d'interférer subrepticement dans le paquet en construction. Ou, si un paquet possède une source compressée, (maladroitement) présente dans un répertoire CVS, il peut être utile d'exporter DH_ALWAYS_EXCLUDE=CVS dans debian/rules, pour que cette variable soit prise en compte quel que soit l'endroit où le paquet est construit.

    Des exclusions multiples peuvent être séparées avec des caractères deux points, comme dans DH_ALWAYS_EXCLUDE=CVS:.svn.

DH_EXTRA_ADDONS
    Les rajouts à dh indiqués seront exécutés lors de la séquence de commandes. Cela équivaut à les indiquer avec le drapeau --with dans le fichier debian/rules. Les rajouts précédés de --without ne seront pas exécutés, même s'ils sont indiqués dans cette variable d'environnement.

    Cela est prévu pour être utilisé par les dérivées ou les configurations locales spécifiques qui ont besoin d'un rajout lors de plusieurs construction, sans avoir à modifier un grand nombre de fichier rules. Il est préférable d'éviter cette méthode et d'utiliser plutôt les drapeaux --with dans le fichier rules.

DH_COLORS, DPKG_COLORS
    Ces variables peuvent être utilisées pour contrôler comment les commandes de debhelper peuvent utiliser la couleur dans leurs sorties textuelles. Les réglages peuvent être « always », « auto » (par défaut) ou « never ».

    Notez que DPKG_COLOR affecte aussi un certain nombre d'outils liés à dpkg et debhelper l'utilise en supposant que vous voulez les même réglages de couleur pour dpkg et debhelper. Au cas où vous voudriez un autre jeu de couleurs pour debhelper, vous pouvez utiliser DH_COLORS à la place ou en plus de DPKG_COLORS.

NO_COLOR
    Si aucune demande explicite de couleur n'a été passée (par exemple, ni DH_COLORS, ni DPKG_COLORS n'ont été configurées), la présence de cette variable d'environnement fera que le réglage des couleurs par défaut sera « never ».

    Cette variable est définie conformément à <https://no-color.org/>. Dans ce projet, les variables d'environnement (comme DH_COLORS) sont considérées comme une demande explicite de couleur.

CFLAGS, CPPFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS, FCFLAGS, LDFLAGS
    Par défaut (dans tout niveau de compatibilité non obsolète), debhelper réglera automatiquement ces paramètres en utilisant dpkg-buildflags(1) quand ils ne sont pas définis. S'il est nécessaire de changer les paramètres par défaut, veuillez utiliser les fonctions de dpkg-buildflags(1) pour le faire (par exemple, DEB_BUILD_MAINT_OPTIONS=hardening=all ou DEB_CPPFLAGS_MAINT_APPEND=-DCUSTOM_MACRO=true) au lieu de configurer directement les variables concrètes.

HOME, XDG_*
    À partir du niveau de compatibilité 13, ces variables d'environnement sont réinitialisées avant d'invoquer le système de construction amont à l'aide des outils dh_auto_*. Les variables HOME (pour tout outil dh_auto_*) et XDG_RUNTIME_DIR (pour dh_auto_test seulement) seront réglées dans un répertoire accessible en écriture. Toutes les autres variables et XDG_RUNTIME_DIR (sauf durant dh_auto_test) seront vidées.

    Le répertoire HOME sera créé comme un répertoire vide mais il sera réutilisé entre les appels à dh_auto_*. Tout son contenu restera jusqu'à ce qu'il soit explicitement supprimé ou jusqu'à l'exécution de dh_clean.

DEB_BUILD_OPTIONS
    Veuillez consulter "Paramètres pris en charge dans DEB_BUILD_OPTIONS" pour cet environnement.

    Veuillez noter que cette variable ne devrait pas être modifiée par les responsables de paquet dans debian/rules pour changer le comportement de debhelper. Ils devraient plutôt rechercher à désactiver la fonction correspondante directement (par exemple en surchargeant les outils spécifiques).

DEB_BUILD_MAINT_OPTIONS
    C'est une variable d'environnement spécifique à dpkg (voir par exemple dpkg-buildflags(1)). La suite d'outils de debhelper l'ignore silencieusement.

    Cela est documenté ici parce qu'elle porte un nom identique à DEB_BUILD_OPTIONS, ce qui fait que certaines personnes pensent par erreur que debhelper réagit aussi à cette variable.

  Paramètres pris en charge dans DEB_BUILD_OPTIONS
La suite d'outils de debhelper réagit aux paramètres suivants dans DEB_BUILD_OPTIONS.

dherroron=obsolete-compat-levels
    C'est une valeur spécifique à debhelper.

    Quand dherroron est présent et réglé à obsolete-compat-levels, alors les outils de debhelper présenteront dans les erreurs des alertes sur l'utilisation des niveaux de compatibilité anciens sur le point d'être obsolètes

    C'est utile pour la vérification automatique de code se basant sur des niveaux de compatibilité dont la suppression est programmée.

    Cette option est destinée aux tests et non aux constructions pour la production.

nostrip
    Cette valeur changera le contenu des paquets .deb en construction. Les paquets .deb construits avec ce réglage ne seront donc pas reproductibles bit à bit par rapport à une construction normale en cas général.

    Cette valeur fera que les outils officiels de debhelper ignoreront les actions et les outils qui suppriment, détachent ou dédoublent les symboles de débogage dans les binaires ELF.

    Cette valeur affecte dh_dwz(1) et dh_strip(1).

nocheck
    Cette valeur fera que les systèmes de construction officiels de debhelper ignoreront l'exécution des suites de tests de l'amont.

    Les responsables de paquet cherchant à éviter l'exécution des tests de l'amont ne devraient pas recourir à cela. Ils peuvent plutôt ajouter une cible de réécriture vide pour ignorer dh_auto_test.

    Cette valeur affecte dh_auto_test(1).

nodoc
    Cette valeur changera le contenu des paquets .deb en construction. Les paquets .deb construits avec ce réglage ne seront donc pas reproductibles bit à bit par rapport à une construction normale en cas général.

    Cette valeur fera que plusieurs outils de debhelper ignoreront l'installation de documentation comme les pages de manuel ou la documentation fournie par l'amont. En plus, les outils ne sauront pas si la documentation déclarée est « missing » en partant du principe que la documentation n'a pas été construite.

    Cette valeur affecte des outils comme dh_installdocs(1) qui sait qu'il travaille sur la documentation.

notrimdch
    Cette valeur changera le contenu des paquets .deb en construction. Les paquets .deb construits avec ce réglage ne seront donc pas reproductibles bit à bit par rapport à une construction normale en cas général.

    Cette valeur fera que dh_installchangelogs(1) agira comme s'il avait été passé avec l'option --no-trim, l'obligeant à renoncer à supprimer les entrées anciennes des journaux de modification.

noautodbgsym, noddebs
    Le nom officiel est noautodbgsym. La variante noddebs est acceptée pour des raisons historiques.

    Cette valeur fait que debhelper ignore la création des paquets de symboles de débogage générés automatiquement.

    Cette valeur affecte dh_strip(1).

parallel=N
    Cette valeur à permet debhelper d'utiliser jusqu'à N threads ou processus (soumis à des paramètres comme --no-parallel et --max-parallel=M). Tous les outils de debhelper ne fonctionnent pas avec des tâches parallèles et peuvent ignorer silencieusement la requête.

    Cette valeur affecte de nombreux outils de debhelper et en particulier dh_auto_* qui tentera d'exécuter le système de construction amont sous-jacent avec ce nombre de threads.

terse
    Cette valeur fera que les systèmes de construction officiels de debhelper configurent les constructions de l'amont pour qu'elles soient laconiques (c'est-à-dire réduisent la prolixité de leurs sorties). Cela est subordonné à la prise en charge par les systèmes de construction de l'amont et de debhelper de ces fonctionnalités.

    Cette valeur affecte directement surtout les outils dh_auto_*. Pour les commandes fournies par le paquet debhelper, il fait aussi que les outils agissent comme si la variable d'environnement DH_QUIET n'était pas vide.

Les paramètres inconnus sont ignorés silencieusement.

Veuillez noter que les outils tiers dans le style de debhelper ou les systèmes de construction fournis par des tiers peuvent réagir ou non aux paramètres ci-dessus. Cela dépend généralement des détails d'implémentation des outils

VOIR AUSSI

debhelper-compat-upgrade-checklist(7)
    Liste des niveaux de compatibilité pris en charge et une liste de contrôle de mise à niveau pour chacun d'entre eux.

/usr/share/doc/debhelper/examples/
    Un ensemble d'exemples de fichiers debian/rules qui utilisent debhelper.

<http://joeyh.name/code/debhelper/>
    Le site internet de debhelper.

AUTEUR
Joey Hess <joeyh@debian.org>

TRADUCTION
Cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe francophone de traduction de Debian.

Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet debhelper.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».