Provided by: debhelper_11.1.6ubuntu2_all 

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 et debian/compat.
COMMANDES DE DEBHELPER
Voici la liste des commandes debhelper disponibles. Consulter leurs pages de manuel respectives pour
obtenir des informations complémentaires.
dh_auto_build(1)
Construire automatiquement un paquet
dh_auto_clean(1)
Faire le ménage automatiquement après une construction de paquet
dh_auto_configure(1)
Configurer automatiquement un paquet préalablement à sa construction
dh_auto_install(1)
Lancer automatiquement make install ou équivalent
dh_auto_test(1)
Exécuter automatiquement le jeu d'essai d'un paquet
dh_bugfiles(1)
Installer les fichiers de personnalisation de rapports de bogue dans les répertoires des paquets
construits
dh_builddeb(1)
Construire des paquets binaires Debian
dh_clean(1)
Nettoyer les répertoires de construction du paquet
dh_compress(1)
Compresser les fichiers dans le répertoire de construction du paquet et modifier les liens
symboliques en conséquence
dh_fixperms(1)
Ajuster les droits sur les fichiers du répertoire de construction du paquet
dh_gconf(1)
Installer les fichiers par défaut de GConf et inscrire les schémas
dh_gencontrol(1)
Produire et installer le fichier de contrôle
dh_icons(1)
Mettre à jour les caches des icônes Freedesktop
dh_install(1)
Installer les fichiers dans le répertoire de construction du paquet
dh_installcatalogs(1)
Installer et inscrire les catalogues SGML
dh_installchangelogs(1)
Installer les journaux de suivi des modifications (changelog) dans les répertoires de construction du
paquet
dh_installcron(1)
Installer les scripts cron dans etc/cron.*
dh_installdeb(1)
Installer des fichiers dans le répertoire DEBIAN
dh_installdebconf(1)
Installer les fichiers utilisés par debconf dans les répertoires de construction du paquet
dh_installdirs(1)
Créer des sous-répertoires dans le répertoire de construction du paquet
dh_installdocs(1)
Installer la documentation dans le répertoire de construction du paquet
dh_installemacsen(1)
Inscrire un paquet additionnel Emacs
dh_installexamples(1)
Installer les fichiers d'exemples dans le répertoire de construction du paquet
dh_installifupdown(1)
Installer les accroches (hooks) if-up et if-down
dh_installinfo(1)
Installer les fichiers info
dh_installinit(1)
Installer les fichiers de service « init » dans le répertoire de construction du paquet
dh_installlogcheck(1)
Installer les fichiers de règles de vérification des journaux (logcheck rulefiles) dans etc/logcheck/
dh_installlogrotate(1)
Installer les fichiers de configuration de la rotation des journaux (logrotate)
dh_installman(1)
Installer les pages de manuel dans le répertoire de construction du paquet
dh_installmenu(1)
Installer les fichiers du menu Debian dans le répertoire de construction du paquet
dh_installmime(1)
Installer les fichiers « mime » dans le répertoire de construction du paquet
dh_installmodules(1)
Inscrire les modules du noyau
dh_installpam(1)
Installer les fichiers de support de PAM
dh_installppp(1)
Installer les fichiers ppp.ip-up et ppp.ip-down
dh_installudev(1)
Installer les fichiers de règles udev
dh_installwm(1)
Inscrire un gestionnaire de fenêtres (window manager)
dh_installxfonts(1)
Inscrire les polices de caractères graphiques (X fonts)
dh_link(1)
Créer les liens symboliques dans le répertoire de construction du paquet
dh_lintian(1)
Installer les fichiers « override » de lintian dans le répertoire de construction du paquet
dh_listpackages(1)
Énumérer les paquets binaires que debhelper va traiter
dh_makeshlibs(1)
Créer automatiquement le fichier shlibs et exécuter dpkg-gensymbols
dh_md5sums(1)
Créer le fichier DEBIAN/md5sums
dh_movefiles(1)
Déplacer des fichiers depuis debian/tmp dans des sous-paquets
dh_perl(1)
Déterminer les dépendances Perl et fait le ménage après MakeMaker
dh_prep(1)
Faire le ménage en vue de construire un paquet Debian
dh_shlibdeps(1)
Déterminer les dépendances envers les bibliothèques partagées
dh_strip(1)
Dépouiller les exécutables, les bibliothèques partagées, et certaines bibliothèques statiques
dh_systemd_enable(1)
Activer ou désactiver les fichiers unit de systemd
dh_systemd_start(1)
Démarrer/arrêter/redémarrer des fichiers unit de systemd
dh_testdir(1)
Vérifier le répertoire avant de construire un paquet Debian
dh_testroot(1)
Vérifier que le paquet est construit avec les droits nécessaires du superutilisateur (root)
dh_usrlocal(1)
Migrer les répertoires usr/local dans les scripts de maintenance du paquet
Commandes obsolètes
Quelques commandes debhelper sont obsolètes et ne devraient plus être utilisées.
dh_installmanpages(1)
Ancien programme d'installation des pages de manuel (obsolète)
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.
Nota : pour le premier (ou le seul) paquet binaire énuméré dans le fichier debian/control, debhelper
exploitera debian/toto quand aucun fichier debian/paquet.toto n'est présent.
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 gardée très simple pour les rendre faciles à lire,
comprendre et modifier. Si vous préférez la puissance et la complexité, vous pouvez rendre le fichier
exécutable, et écrire un programme qui affiche n'importe quel contenu approprié à la situation. Dans ce
cas, la sortie n'est plus traitée pour développer les jokers (wildcards) ou supprimer les commentaires.
OPTIONS PARTAGÉES DE DEBHELPER
Tous les programmes de debhelper acceptent les options suivantes.
-v, --verbose
Mode verbeux : affiche toutes les commandes qui modifient 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.
This option is removed in compat 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.
--ignore=fichier
Ignore le fichier indiqué. Cela peut être utilisé si debian/ contient un fichier de configuration
debhelper avec une commande qui ne doit pas être prise en compte. Nota : debian/compat,
debian/control, et debian/changelog ne peuvent pas être ignorés, mais il n'existe aucune raison
valable de les ignorer.
Par exemple, si vous récupérez en amont un fichier debian/init que vous ne voulez pas que
dh_installinit installe, utilisez --ignore=debian/init
-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
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.
-Dré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.
-B[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.
As an optimization, dh will try to avoid passing these options to subprocesses, if they are
unnecessary and the only options passed. Notably this happens when DEB_BUILD_OPTIONS does not have a
parallel parameter (or its value is 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.
--list, -l
Liste tous les processus de construction supportés 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. Le niveau de compatibilité est spécifié dans le fichier
debian/compat qui doit être présent.
Pour indiquer à debhelper le niveau de compatibilité à utiliser il faut placer un nombre dans
debian/compat. Par exemple, pour exploiter la version 11 :
% echo 11 > debian/compat
Le paquet nécessitera aussi une version de debhelper dans les dépendances de construction au moins égale
au niveau de compatibilité utilisée pour la construction du paquet. Ainsi, si le paquet emploie le
niveau 11 de compatibilité, debian/control devra contenir :
Build-Depends: debhelper (>= 11)
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
Les niveaux de compatibilité sont les suivants :
v5 C'est le niveau de compatibilité le plus bas pris en charge.
Si vous mettez à jour depuis un niveau de compatibilité antérieur, veuillez consulter
debhelper-obsolete-compat(7).
Ce mode est déconseillé.
v6 Les changements par rapport à la version 5 sont :
- Les commandes qui génèrent des lignes de codes de maintenance les mettront dans l'ordre
inverse dans les scripts prerm et postrm.
- dh_installwm installera un lien vers une page de manuel esclave pour x-window-manager.1.gz
s'il voit la page de manuel dans le répertoire usr/share/man/man1 du répertoire de
construction du paquet.
- dh_builddeb, préalablement, ne supprimait pas les associations créées avec DH_ALWAYS_EXCLUDE
s'il était configuré sur une liste d'éléments tels que CVS:.svn:.git. Maintenant il le fait.
- dh_installman permet d'écraser les pages de manuel existantes dans le répertoire de
construction du paquet. Préalablement, il refusait en silence de le faire.
Ce mode est déconseillé.
v7 Les changements par rapport à la version 6 sont :
- dh_install cherchera récursivement les fichiers dans debian/tmp s'il ne les trouve pas dans
le répertoire courant (ou dans le répertoire indiqué par --sourcedir). Cela permet à
dh_install d'interopérer avec dh_auto_install, qui place les fichiers dans debian/tmp, sans
nécessiter de paramètres particuliers.
- dh_clean lit le répertoire debian/clean et supprime les fichiers qui y sont mentionnés.
- dh_clean supprime les fichiers *-stamp.
- dh_installchangelogs déterminera à quel fichier correspond le changelog amont si rien n'est
indiqué.
Ce mode est déconseillé.
v8 Les changements par rapport à la version 7 sont :
- Les commandes échoueront plutôt que de produire une alerte lorsqu'elles recevront des options
inconnues.
- dh_makeshlibs va exécuter le programme dpkg-gensymbols sur toutes les bibliothèques partagées
qu'il génère pour les fichiers shlibs. -X peut alors être utilisé pour exclure certaines
bibliothèques. En outre, les bibliothèques rangées à des emplacements inhabituels que pkg-
gensymbols n'aurait pas traitées avant qu'elles ne lui soient transmises, induisent un
changement de comportement qui peut causer l'échec de la construction de certains paquets.
- dh exige que la séquence à exécuter soit indiquée en tant que premier paramètre. Tous les
commutateurs doivent venir après. C'est-à-dire qu'il faut écrire « dh $@ --toto », et non
« dh --toto $@ »
- dh_auto_* utilise préférentiellement Module::Build de Perl au lieu de Makefile.PL.
Ce mode est déconseillé.
v9 Les changements par rapport à la version 8 sont :
- Prise en charge multiarchitecture. En particulier dh_auto_configure passe les répertoires
multiarchitectures à autoconf dans --libdir et --libexecdir.
- dh connaît les dépendances classiques entre les cibles de debian/rules. Donc « dh binary »
exécutera toutes les cibles build, build-arch, build-indep, install, etc., présentes dans le
fichier rules. Il n'est pas nécessaire de définir une cible binary avec des dépendances
explicites sur les autres cibles.
- dh_strip compresse les fichiers de symboles de mise au point pour réduire la taille
d'installation des paquets -dbg.
- dh_auto_configure n'inclut pas le nom du paquet source dans --libexecdir en utilisant
autoconf.
- dh n'active pas --with=python-support par défaut.
(Obsolète puisque l'outil dh_pysupport a été retiré de Debian Stretch. Depuis debhelper 10.3,
dh n'active plus cette séquence quel que soit le niveau de compatibilité)
- Tous les programmes debhelper dh_auto_* et dh configurent les variables d'environnement
renvoyées par dpkg-buildflags, sauf si elles sont déjà configurées.
- dh_auto_configure passe les CFLAGS, CPPFLAGS et LDFLAGS de dpkg-buildflags à Makefile.PL et
Build.PL de Perl.
- dh_strip place les symboles de mise au point séparés à un endroit en fonction de leur
identifiant de construction (build-id).
- Les fichiers de configuration exécutables de debhelper sont exécutés et leur sortie est
utilisée comme configuration.
v10 Les changements par rapport à la version 9 sont :
- dh_installinit n'installe plus de fichier nommé debian/<paquet> comme script
d'initialisation.
- dh_installdocs renverra une erreur s'il détecte des liens créés avec --link-doc entre des
paquets de l'architecture « all » et non-« all » car cela casse les binNMUs (envois de
binaires par quelqu'un d'autre que le responsable).
- dh ne crée plus le répertoire de construction du paquet lors de l'omission des commandes
debhelper en cours. Cela n'affectera pas les paquets qui se construisent uniquement avec
dehelper, mais pourrait faire apparaître des bogues dans les commandes qui ne sont pas
incluses avec debhelper.
- dh_installdeb n'installe plus de fichier debian/<paquet>.shlibs fourni par le responsable du
paquet. Cela est maintenant effectué par dh_makeshlibs.
- dh_installwm refuse de créer un paquet cassé si aucune page de manuel ne peut être trouvée
(requis pour l'inscription de l'alternative x-window-manager).
- Debhelper active par défaut la parallélisation pour tous les systèmes de construction qui le
supportent. Cela peut être désactivé en utilisant l'option --no-parallel ou en passant la
valeur 1 à l'option --max-parallel.
- La commande dh n'acceptera aucun des paramètres obsolètes de « manual sequence control »
(--before, --after, etc.). Veuillez utiliser les cibles de réécritures à la place.
- La commande dh n'utilisera plus les fichiers journaux pour enregistrer quelles commandes ont
été exécutées. La commande dh se souvient toujours si la séquence « build » a été effectuée
et l'omet si c'est le cas.
Les principales conséquences de cela sont :
- Il est maintenant plus facile de déboguer les séquences install et binary parce qu'elles
peuvent maintenant être facilement re-exécutées (sans avoir à refaire un cycle complet de
« clean & rebuild »)
- La principale précaution est que dh_* enregistre uniquement ce qui s'est passé dans une
unique cible de réécriture. Lorsque tous les appels à une commande dh_cmd donnée arrivent
dans la même cible de réécriture, tout fonctionnera comme avant.
Exemple de ce qui pourrait mal se passer :
override_dh_foo:
dh_foo -pmon_paquet
override_dh_bar:
dh_bar
dh_foo --remaining
Dans ce cas, l'appel à dh_foo --remaining inclura aussi mon_paquet, car dh_foo
-pmon_paquet a été exécuté dans une cible de réécriture différente. Ce problème n'est pas
limité à --remaining et concerne aussi -a, -i, etc.
- À présent, la commande dh_installdeb échappe les caractères du shell dans les lignes du
fichier de config maintscript. C'était l'intention originale mais cela n'a jamais fonctionné
correctement et les paquets ont commencé à compter sur l'échappement incomplet (p. ex. en
encadrant les noms de fichiers de guillemets).
- La commande dh_installinit utilise maintenant --restart-after-upgrade par défaut. Les paquets
nécessitant le comportement précédent devraient utiliser l'option --no-restart-after-upgrade.
- La séquence autoreconf est maintenant activée par défaut. Veuillez passer l'option --without
autoreconf à dh si cela n'est pas voulu pour certains paquets.
- La séquence systemd est maintenant activée par défaut. Veuillez passer l'option --without
systemd à dh si cela n'est pas voulu pour certains paquets.
v11 C'est la version dont l'usage est recommandé.
Les changements par rapport à la version 10 sont :
- dh_installinit n'installe plus de fichiers service ou tmpfile, ni ne crée de scripts de
maintenance pour ces fichiers. Veuillez utiliser le nouvel assistant dh_installsystemd à la
place.
- Les outils dh_systemd_enable et dh_systemd_start ont été remplacés par un nouvel assistant
dh_installsystemd. Pour la même raison, la séquence systemd de dh a aussi été retirée. Si
vous avez besoin de désactiver dh_installsystemd, veuillez utiliser une cible de réécriture
vide.
Please note that the dh_installsystemd tool has a slightly different behaviour in some cases
(e.g. when using the --name parameter).
- dh_installdirs ne crée plus les répertoires debian/paquet sans qu'on le lui demande
explicitement (ou il doit créer un sous-répertoire à l'intérieur).
La grande majorité des paquets ne seront pas affectés par ce changement.
- Le système de construction makefile passe maintenant les options INSTALL=install
--strip-program=true à make(1). Les systèmes dérivés (comme configure ou cmake) ne sont pas
affectés par ce changement.
- Le système de construction autoconf passe maintenant l'option --runstatedir=/run à
./configure.
- Le système de construction cmake passe maintenant l'option -DCMAKE_INSTALL_RUNSTATEDIR=/run à
cmake(1).
- dh_installman préfère maintenant détecter le langage à partir du chemin plutôt que de
l'extension.
- dh_auto_install crée maintenant uniquement le répertoire de destination nécessaire.
Auparavant, le répertoire de construction de chaque paquet était créé. Cela n'affectera pas
les paquets qui se construisent uniquement avec debhelper, mais pourrait faire apparaître des
bogues dans les commandes qui ne sont pas incluses avec debhelper.
- Les outils dh_installdocs, dh_installexamples, dh_installinfo et dh_installman renvoient
maintenant une erreur si leur configuration contient un motif qui ne correspond à rien ou qui
référence un chemin qui n'existe pas.
Les exceptions connues incluent la construction avec le profil nodoc, où les outils ci-dessus
permettront un échec silencieux de la correspondance lorsque le motif est utilisé pour
spécifier la documentation.
- Les outils dh_installdocs, dh_installexamples, dh_installinfo et dh_installman acceptent
maintenant le paramètre --sourcedir avec la même signification que dans dh_install. De plus,
ils se rabattent sur debian/tmp comme dh_install.
Migration note: A bug in debhelper 11 up to 11.1.5 made dh_installinfo incorrectly ignore
--sourcedir.
- The perl-makemaker and perl-build build systems no longer pass -I. to perl. Packages that
still need this behaviour can emulate it by using the PERL5LIB environment variable. E.g. by
adding export PERL5LIB=. in their debian/rules file (or similar).
- La variable d'environnement PERL_USE_UNSAFE_INC n'est plus définie par dh, ni aucun des
outils dh_auto_*. Cela avait été ajouté comme contournement temporaire, pour éviter les
échecs de construction d’un grand nombre de paquets en même temps.
De plus, cette fonction deviendra peut-être obsolète car l'amont a l'intention de retirer la
prise en charge de la variable d'environnement PERL_USE_UNSAFE_INC. Lorsque ce sera le cas,
cette variable sera aussi supprimée rétroactivement des niveaux de compatibilités existants.
- L'assistant dh_makeshlibs termine maintenant sur une erreur si objdump renvoie une valeur de
sortie différente de zéro lors de l'analyse d'un fichier.
- Les outils dh_installdocs et dh_installexamples essaient maintenant de deviner le « paquet
principal » pour un paquet de documentation donné (par exemple paquet-doc aura paquet comme
paquet principal si ce dernier existe). Si un paquet principal est trouvé, la plupart de la
documentation sera installée par défaut dans /usr/share/doc/paquet-principal, comme
recommandé par la Charte Debian §12.3 depuis la version 3.9.7. Les exceptions à cela incluent
les fichiers copyright et changelog.
L'option --doc-main-package peut être utilisée si la détection automatique est insuffisante.
- Les outils dh_strip et dh_shlibdeps n'utilisent plus les motifs de noms de fichiers pour
déterminer les fichiers à traiter. À la place, ils ouvrent le fichier et cherchent un en-tête
ELF pour déterminer si ce fichier est un objet partagé ou un exécutable ELF.
Ce changement peut forcer les outils à traiter plus de fichiers qu'avant.
v12 Ce niveau de compatibilité est encore en développement ; à utiliser avec précaution.
Les changements par rapport à la version 11 sont :
- L'option -s (--same-arch) est supprimée. Veuillez utiliser -a (--arch) à la place.
- Appeler dh_clean -k provoque maintenant une erreur à la place de l'avertissement
d'obsolescence.
- L'option --no-restart-on-upgrade de dh_installinit a été supprimée. Veuillez utiliser le
nouveau nom --no-stop-on-upgrade.
- Il y avait un bogue dans les fonctions doit (et équivalent) de Debian::Debhelper::Dh_Lib qui
créait un shell dans une circonstance particulière. Ce bogue est maintenant supprimé et
provoquera une erreur de type « commande non trouvée » dans les outils qui l'utilisaient.
- Les options --list-missing et --fail-missing de dh_install ont été supprimées. Veuillez
utiliser dh_missing et ses options correspondantes, qui peuvent aussi voir les fichiers
installés par les autres outils.
- L'outil dh_installinit n'installe plus de configuration pour upstart. À la place, il
abandonnera la construction s'il trouve un ancien fichier de configuration upstart. Cela pour
rappeler au mainteneur de s'assurer de correctement supprimer les anciens fichiers de
configuration livrés dans les anciennes versions du paquet.
- L'outil dh_installdeb valide basiquement quelques commandes dpkg-maintscript-helper(1) et
renvoie une erreur si la commande semble incorrecte.
- The dh_missing tool will now default to --list-missing.
- The dh_makeshlibs tool will now only pass libraries to dpkg-gensymbols(1) if the ELF binary
has a SONAME (containing ".so").
- The dh_compress tool no longer compresses examples (i.e. anything installed in
</usr/share/doc/package/examples>.)
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 « binary-arch » de debian/rules, et les paquets indépendants de
l'architecture dans « binary-indep ».
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.
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.
Toutes les commandes de ce type, outre qu'elles documentent, dans leur page de manuel, les dépendances
qu'elle induisent, généreront automatiquement une variable de substitution nommée ${misc:depends}. Si
cette variable est exploitée dans le dossier debian/control, il sera automatiquement enrichi des
dépendances induites par debhelper.
Ce processus est entièrement indépendant de ${shlibs:Depends} standard, produite par dh_makeshlibs(1), et
de ${perl:Depends} produite par dh_perl(1). Il est également possible de choisir de ne pas les utiliser
si les conjectures de debhelper ne correspondent pas à la réalité.
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
Les variables d'environnement suivantes peuvent influencer le comportement de debhelper. Il est important
de noter que celles-ci doivent être des variables existantes pour que cela fonctionne correctement (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
Mettre cette variable à 1 valide le mode verbeux. Debhelper affichera chaque commande exécutée.
Valide aussi les journaux de construction bavards pour certains systèmes de construction comme
autoconf.
DH_QUIET
Mettre cette variable à 1 valide 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.
DH_COMPAT
Indique temporairement le niveau de compatibilité avec lequel debhelper doit fonctionner. Cette
valeur supplante toute valeur précisée dans debian/compat.
DH_NO_ACT
Mettre cette variable à 1 pour activer le mode simulation (no-act).
DH_OPTIONS
Tout ce qui est indiqué dans cette variable sera passé en argument à toutes les commandes debhelper.
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
If set, this adds the specified dh addons to be run in the appropriate places in the sequence of
commands. This is equivalent to specifying the addon to run with the --with flag in the debian/rules
file. Any --without calls specifying an addon in this environment variable will not be run.
This is intended to be used by downstreams or specific local configurations that require a debhelper
addon to be run during multiple builds without having to patch a large number of rules file. If at
all possible, this should be avoided in favor of a --with flag in the rules file.
VOIR AUSSI
/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> ».
11.1.6ubuntu2 2018-05-10 debhelper(7)