Content-type: text/html
Manpage of
Section: Debhelper (7)
Updated: 2006-01-14
Index
Return to Main Contents
NOM
debhelper - ensemble d'outils regroupés sous le nom de debhelper
SYNOPSIS
dh_* [-v] [-a] [-i] [-s] [--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, exploitant debhelper, appelle séquentiellement des
commandes de debhelper. Le nom de ces commandes est préfixé par « dh_ ». 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.
COMMANDES DE DEBHELPER
Voici la liste complète de commandes debhelper disponibles. Consulter leurs
pages de manuel respectives pour obtenir des informations complémentaires.
- dh_builddeb(1)
-
Construction des paquets Debian
- dh_clean(1)
-
nettoie le répertoire de construction du paquet
- dh_compress(1)
-
comprime les fichiers dans le répertoire de construction du
paquet et modifie les liens symboliques en conséquence
- dh_desktop(1)
-
inscrit les fichiers .desktop
- dh_fixperms(1)
-
ajuste les droits sur les fichiers du répertoire de
construction du paquet
- dh_gconf(1)
-
produit les scripts d'enregistrement du schéma GConf
- dh_gencontrol(1)
-
produit et installe le fichier de contrôle
- dh_install(1)
-
installe les fichiers dans le répertoire de construction du
paquet
- dh_installcatalogs(1)
-
installe et inscrit les catalogues SGML
- dh_installchangelogs(1)
-
installe les journaux de suivi des modifications
(changelog) dans les répertoires de construction du paquet
- dh_installcron(1)
-
installe les scripts cron dans etc/cron.*
- dh_installdeb(1)
-
installe des fichiers dans le répertoire DEBIAN
- dh_installdebconf(1)
-
installe les fichiers utilisés par debconf dans les
répertoires de construction du paquet
- dh_installdirs(1)
-
crée des sous-répertoires dans le répertoire de
construction du paquet
- dh_installdocs(1)
-
installe la documentation dans le répertoire de
construction du paquet
- dh_installemacsen(1)
-
inscrit un paquet additionnel emacs
- dh_installexamples(1)
-
installe les fichiers d'exemples dans le répertoire de
construction du paquet
- dh_installinfo(1)
-
installe et inscrit les fichiers info
- dh_installinit(1)
-
installe les scripts d'initialisation (init scripts) dans
le répertoire de construction du paquet
- dh_installlogcheck(1)
-
installe les fichiers de règles de vérification des
journaux (logcheck rulefiles) dans etc/logcheck/
- dh_installlogrotate(1)
-
installe les fichiers de configuration de la rotation
des journaux (logrotate)
- dh_installman(1)
-
installe les pages de manuel dans le répertoire de
construction du paquet
- dh_installmanpages(1)
-
ancien programme d'installation des pages de manuel
- dh_installmenu(1)
-
installe les fichiers du menu Debian dans le répertoire de
construction du paquet
- dh_installmime(1)
-
installe les fichiers « mime » dans le répertoire de
construction du paquet
- dh_installmodules(1)
-
inscrit les modules avec modutils
- dh_installpam(1)
-
installe les fichiers de support de PAM
- dh_installppp(1)
-
installe les fichiers ppp.ip-up et ppp.ip-down
- dh_installwm(1)
-
inscrit un gestionnaire de fenêtre (window manager)
- dh_installxfonts(1)
-
inscrit les polices de caractères graphiques (X fonts)
- dh_link(1)
-
crée les liens symboliques dans le répertoire de construction du
paquet
- dh_listpackages(1)
-
énumère les paquets binaires que debhelper va traiter
- dh_makeshlibs(1)
-
crée automatiquement le fichier shlibs
- dh_md5sums(1)
-
crée le fichier DEBIAN/md5sums
- dh_movefiles(1)
-
déplace des fichiers depuis debian/tmp dans des sous-paquets
- dh_perl(1)
-
détermine les dépendances Perl
- dh_python(1)
-
détermine les dépendances Python et ajoute des scripts de
maintenance Python postinst et prerm
- dh_scrollkeeper(1)
-
produit les scripts d'enregistrement ScrollKeeper
- dh_shlibdeps(1)
-
détermine les dépendances envers les bibliothèques partagées
- dh_strip(1)
-
dépouille les exécutables, les bibliothèques partagées, et
certaines bibliothèques statiques
- dh_suidregister(1)
-
programme obsolète d'inscription suid
- dh_testdir(1)
-
vérifie le répertoire avant de construire un paquet Debian
- dh_testroot(1)
-
vérifie que le paquet est construit par le superutilisateur
(root)
- dh_testversion(1)
-
vérifie que la bonne version de debhelper est installée
- dh_undocumented(1)
-
programme obsolète de création de liens symboliques vers
« undocumented.7 »
- dh_usrlocal(1)
-
migre les répertoires usr/local dans les scripts de
maintenance du paquet
Si le nom d'un programme commence par « dh_ » et qu'il n'est pas dans la
liste ci-dessus, alors, c'est qu'il ne fait pas partie du paquet
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 : Lorsqu'un paquet est le premier (ou le seul) paquet binaire
énuméré dans le fichier debian/control, debhelper exploitera debian/toto si
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 différentes. S'il existe des fichiers
appelés debian/package.toto.arch dans lesquels « arch » correspond au
résultat de « dpkg --print-architecture », alors ils seront utilisés de
préférence aux autres fichiers plus généraux.
Dans beaucoup de cas, ces fichiers de configuration sont employés pour
indiquer divers types de fichiers : documentation, fichiers d'exemples à
installer, fichiers à déplacer et ainsi de suite. Lorsque cela se justifie,
dans des cas comme ceux-ci, il est possible d'employer les jokers (wildcard)
standard de l'interpréteur de commandes (shell) (« ? », « * » et « [..] »).
Il est également possible de placer des commentaires dans ces fichiers. Les
lignes débutant par « # » sont ignorées.
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 d'une architecture.
- -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
-
Il s'agit d'une version plus astucieuse de l'option -a, employée dans
quelques rares cas. Grâce à cette option, si le fichier de contrôle du
paquet comporte le champ « Architecture: i386 », debhelper ne construira
pas le paquet pour d'autres architectures. De cette façon, cette option
construit tous les paquets marqués «Architecture: any » ainsi que tous
les paquets dont l'architecture mentionnée correspond à l'architecture
courante. Ce comportement est à l'opposé de l'option -a, qui construit
seulement les paquets qui ne sont pas indépendants de l'architecture.
- -Npaquet, --no-package=paquet
-
Exclut le paquet spécifié du processus de construction, même si l'option -
a, -i ou -p l'impliquait.
- -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.
OPTIONS COURANTES DE DEBHELPER
Certains programmes de debhelper acceptent les options suivantes :
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.
- -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.
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 du fichier debian/rules, et les paquets indépendants de
l'architecture dans la cible 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.
Consulter /usr/share/doc/debhelper/examples/rules.multi pour avoir un
exemple d'utilisation de debhelper avec un paquet qui génère des paquets
binaires multiples.
Génération automatique des scripts Debian de maintenance du paquet
Certaines commandes de debhelper produisent automatiquement des lignes de
codes 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 écrit 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
system ($temp) / 256 == 0
or die "Problème avec le script de debhelper : $!";
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. Ceci est obtenu grâce au paramètre -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.
Niveaux de compatibilité de debhelper
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 précisera à debhelper le
niveau de compatibilité qu'il doit employer, et il modifiera son
comportement de diverses manières.
Pour indiquer à debhelper le niveau de compatibilité à utiliser il faut
placer un nombre dans debian/compat. Par exemple, pour imposer la version
V5 :
echo 5 > debian/compat
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.
Les niveaux de compatibilité sont les suivants :
- V1
-
C'est le niveau initial de compatibilité de debhelper ainsi que la valeur
par défaut. Dans ce mode, debhelper emploiera debian/tmp comme répertoire de
l'arborescence du premier paquet binaire énuméré dans le fichier de contrôle
et debian/paquet pour tous les autres. Ce mode est déconseillé.
Ce mode est déconseillé.
- V2
-
Dans ce mode, debhelper emploiera uniformément debian/paquet comme
répertoire de l'arborescence de chaque paquet construit.
Ce mode est déconseillé.
- V3
-
Ce mode fonctionne comme V2 mais avec les ajouts suivants :
-
- -
-
Les fichiers de configuration de debhelper acceptent les jokers * et ?
lorsque cela a un sens. Pour désactiver cette substitution et utiliser ces
caractères tels quels, il suffit de les préfixer avec une barre
contre-oblique (backslash).
- -
-
Les scripts de maintenance du paquet (postinst et postrm) feront appel à
ldconfig quand dh_makeshlibs sera lancé.
- -
-
Chaque fichier de etc/ est automatiquement marqué par dh_installdeb comme un
fichier de configuration.
-
Ce mode est déconseillé.
- V4
-
Les changements par rapport à la version 3 sont :
-
- -
-
dh_makeshlibs -V n'inclura pas la partie Debian du numéro de version dans la
ligne de dépendance produite dans le fichier shlibs.
- -
-
Il est fortement conseillé de mettre le nouveau ${misc:Depends} dans
debian/control pour compléter ${shlibs:Depends}.
- -
-
dh_fixperms rendra exécutables tous les fichiers des répertoires bin/ et
etc/init.d.
- -
-
dh_link corrigera les liens existants pour les rendre conformes à la Charte
Debian.
-
- V5
-
C'est la version dont l'usage est recommandé. Elle fait la même chose que la
version V4 plus :
-
- -
-
Les commentaires sont ignorés dans les fichiers de configuration de
debhelper.
- -
-
dh_strip --dbg-package indique maintenant le nom du paquet qui doit recevoir
les symboles de mise au point et non plus les paquets d'où proviennent ces
symboles.
- -
-
dh_installdocs saute l'installation des fichiers vides.
- -
-
dh_install génère des erreurs si les jokers (wildcards) ne correspondent à
rien.
-
Liens symboliques vers le répertoire de documentation
Parfois il est utile de construire un paquet qui ne contient pas de
répertoire /usr/share/doc/paquet. On peut, à la place, créer un lien
symbolique « en l'air » qui pointe sur un autre répertoire de
documentation. La Charte Debian indique que c'est autorisé si le paquet
construit dépend du paquet comportant la documentation. Pour obtenir ce
résultat, il suffit d'omettre l'installation du répertoire de documentation
dans le paquet et d'employer dh_link pour générer le lien symbolique (ou le
faire manuellement). Dans ce cas debhelper devrait se comporter
correctement, c'est-à-dire remarquer qu'il s'agit d'un lien symbolique « en l'air » et ne pas essayer d'installer un fichier copyright ou changelog.
udebs
Debhelper prend en charge la construction des udebs. Pour créer un udeb avec
debhelper, il faut ajouter « XC-Package-Type: udeb » aux lignes de
paquet dans debian/control, ainsi qu'une dépendance vers debhelper (>= 4,2) dans la ligne build-depend. 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, en omettant les scripts preinst, postrm et prerm ainsi que
les scripts de configuration, etc.
Autres remarques
Généralement, si un programme de debhelper a besoin qu'un répertoire existe
dans debian/, il le créera. Ce comportement n'est pas documenté dans toutes
les pages de manuel, mais, par exemple, le dh_installdeb sait qu'il doit
créer le répertoire debian/paquet/DEBIAN/ avant de tenter de mettre des
fichiers dedans. De même, dh_installmenu sait qu'il est nécessaire d'avoir
un répertoire debian/paquet/usr/share/menu/ avant d'installer les
fichiers menu, etc.
Dès qu'un paquet emploie debhelper pour sa construction, il faut vérifier
que debhelper a bien été ajouté à la ligne build-depend dans le fichier
debian/control. Il convient également de s'assurer que la version de
debhelper indiquée dans build-depend est au moins égale au niveau de
compatibilité de debhelper utilisée pour la construction du paquet. Ainsi si
le paquet emploie le niveau 5 de compatibilité :
Build-Depends: debhelper (>= 5)
VARIABLES D'ENVIRONNEMENT
- DH_VERBOSE
-
Mettre cette variable à 1 valide le mode verbeux. Debhelper affichera chaque
commande exécutée qui modifie des fichiers.
- DH_COMPAT
-
Indique temporairement le niveau de compatibilité auquel debhelper doit
fonctionner. Cette valeur supplante la valeur précisée dans debian/compat.
- DH_NO_ACT
-
Mettre cette variable à 1 pour activer le mode simulation (no-act).
- DH_OPTIONS
-
Le contenu de cette variable sera ajouté au début des arguments de chaque
ligne de commande de debhelper. Ce comportement est utile dans quelques
situations, par exemple, pour passer -p à toutes les commandes de debhelper
qui seront exécutées. Une bonne façon d'employer DH_OPTIONS est d'utiliser
des « Cible-spécifique Variable Valeurs » dans le fichier
debian/rules. Consulter la documentation de make pour obtenir des précisions
sur cette méthode.
- 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 quelque chose, correspondant à la valeur dans l'arbre de
construction de paquet.
Ceci 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 deux points, comme
dans DH_ALWAYS_EXCLUDE=CVS:.svn
VOIR AUSSI
- /usr/share/doc/debhelper/examples/
-
Un ensemble d'exemples de fichiers debian/rules qui utilisent debhelper.
- <http://kitenet.net/programs/debhelper/>
-
Le site internet de debhelper.
AUTEUR
Joey Hess <joeyh@debian.org>
TRADUCTION
Valéry Perrin <valery.perrin.debian@free.fr> le 17 septembre 2005. Dernière mise à jour le 14 janvier 2006.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité.
La version anglaise la plus à jour de ce document est toujours consultable via la commande « man -L en nom_du_man ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- COMMANDES DE DEBHELPER
-
- FICHIERS DE CONFIGURATION DE DEBHELPER
-
- OPTIONS PARTAGÉES DE DEBHELPER
-
- OPTIONS COURANTES DE DEBHELPER
-
- REMARQUES
-
- Prise en charge de plusieurs paquets binaires
-
- Génération automatique des scripts Debian de maintenance du paquet
-
- Génération automatique des diverses dépendances.
-
- Répertoires de construction du paquet
-
- Niveaux de compatibilité de debhelper
-
- Liens symboliques vers le répertoire de documentation
-
- udebs
-
- Autres remarques
-
- VARIABLES D'ENVIRONNEMENT
-
- VOIR AUSSI
-
- AUTEUR
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 23:28:16 GMT, January 18, 2006