NOM
debuild - Construire un paquet Debian
SYNOPSIS
debuild [options_debuild] [options_dpkg-buildpackage] [--lintian-opts
options_lintian]
debuild [options_debuild] binary|binary-arch|binary-indep|clean ...
debuild crée tous les fichiers nécessaires pour envoyer un paquet à
l'archive Debian. Il exécute dans un premier temps dpkg-buildpackage,
puis lintian avec le fichier .changes créé (en supposant que lintian
est installé) ; enfin, il signe les fichiers .changes et/ou .dsc
appropriés (en utilisant debsign(1) plutôt que dpkg-buildpackage(1) ;
toutes les options relatives à la signature lui sont passées). Des
paramètres peuvent être fournis à dpkg-buildpackage et lintian, en
utilisant les paramètres de l'option --lintian-opts pour ce dernier.
Les options --lintian et --no-lintian permettent de forcer ou
d'empêcher l'exécution de lintian. Par défaut, lintian est
exécuté. Il y a également d'autres options permettant de positionner ou
conserver des variables d'environnement, comme décrit dans la section
VARIABLES D'ENVIRONNEMENT ci-dessous.
Cette façon d'exécuter debuild permet également d'obtenir un journal de
la construction du paquet dans ../<paquet>_<version>_<arch>.build.
Une autre façon d'utiliser debuild est d'utiliser un (ou plus) des
paramètres binary, binary-arch, binary-indep et clean. Dans ce cas,
debuild cherchera à obtenir les privilèges du superutilisateur et
exécutera debian/rules avec ce(s) paramètre(s). Les options
--rootcmd=commande_pour_devenir_root ou -rcommande_pour_devenir_root
peuvent être utilisées. La commande_pour_devenir_root est en règle
générale une de celles-ci : fakeroot, sudo ou super. Voyez ci-dessous
pour une discussion plus approfondie sur ce point. Encore une fois, les
options permettant de préserver l'environnement peuvent être utilisées.
Dans ce cas, debuild cherchera également à exécuter dans un premier
temps dpkg-checkbuilddeps(1) ; ceci peut être explicitement demandé ou
empêché avec les options -D et -d, respectivement. Notez également que
si l'une de ces options ou si l'option -r est indiquée dans la variable
DEBUILD_DPKG_BUILDPACKAGE_OPTS du fichier de configuration, elle sera
reconnue, même avec cette façon d'exécuter debuild.
debuild lit aussi les fichiers de configuration de devscripts décrits
ci-dessous. Ceci permet de fournir des options à utiliser par défaut.
VERIFICATION DU NOM DU REPERTOIRE
Comme certains autres scripts du paquet devscripts, debuild parcourt
une arborescence de répertoires jusqu'à trouver un fichier
debian/changelog avant de construire le paquet. Pour éviter les
problèmes posés par les fichiers égarés, il examine le nom du
répertoire parent une fois le fichier debian/changelog trouvé, et
vérifie que le nom du répertoire correspond au nom du paquet. La façon
précise utilisée est contrôlée par les deux variables du fichier de
config DEVSCRIPTS_CHECK_DIRNAME_LEVEL et DEVSCRIPTS_CHECK_DIRNAME_REGEX
et les options en ligne de commande associées --check-dirname-level et
--check-dirname-regex.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL peut prendre les valeurs suivantes :
0 Ne vérifie jamais le nom du répertoire.
1 Ne vérifie le nom du répertoire que s'il a fallu changer de
répertoire pour trouver le fichier debian/changelog. C'est le
comportement par défaut.
2 Vérifie toujours le nom du répertoire.
Le nom du répertoire est vérifié en testant si le nom du répertoire
courant (donné par pwd(1)) correspond à l'expression rationnelle
donnée par la variable DEVSCRIPTS_CHECK_DIRNAME_REGEX du fichier de
configuration ou par l'option --check-dirname-regex regex. Il s'agit
d'une expression rationnelle Perl (voir perlre(1)), qui sera ancrée à
son début et à sa fin.
Si elle contient un / , alors elle doit correspondre au chemin
complet. Si elle contient la chaîne PACKAGE, cette chaîne sera
remplacée par le nom du paquet source déterminé par le fichier
changelog. La valeur par défaut de cette expression rationnelle est
PACKAGE(-.+)? , ce qui correspond aux répertoires nommés PACKAGE ou
PACKAGE-version.
VARIABLES D'ENVIRONNEMENT
Comme les variables d'environnement peuvent affecter la construction
d'un paquet, souvent de façon involontaire, debuild nettoie
l'environnement en enlevant toutes les variables d'environnement,
à l'exception de TERM, HOME, LOGNAME, GNUPGHOME, PGPPATH,
GPG_AGENT_INFO, FAKEROOTKEY, DEB_*, des variables FLAGS (C, CPP, CXX,
LD et F) et les variables _APPEND associées, ainsi que les variables
pour les paramètres régionaux LANG et LC_*. La variable TERM vaut dumb
si elle n'est pas positionnée et PATH est positionné à
/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 .
Si une variable d'environnement ne doit pas être modifiée pour la
construction d'un paquet, il est possible d'utiliser --preserve-envvar
var (ou -e var). L'environnement peut aussi êtr préservé en utilisant
l'option --preserve-env. Cependant, même dans ce cas le PATH est remis
à la valeur précise ci-dessus. Le seul moyen d'empêcher le PATH d'être
remis à zéro est d'utiliser une option --preserve-envvar PATH. Mais
soyez conscient qu'utiliser des programmes d'un emplacement non
standard peut facilement résulter en un paquet cassé, puisqu'il ne sera
pas possible de le construire sur des systèmes standards.
Notez que des répertoires peuvent être ajoutés au début de la variable
d'environnement PATH en utilisant l'option --prepend-path. C'est utile
quand on veut utiliser des outils comme ccache(1) ou distcc(1) pour la
construction d'un paquet.
Il est également possible d'éviter d'avoir à écrire quelque chose comme
TOTO=titi debuild -e TOTO en écrivant debuild -e TOTO=titi ou la forme
longue debuild --set-envvar TOTO=titi.
OBTENTION DES PRIVILEGES DU SUPERUTILISATEUR
debuild doit être excuté en tant que superutilisateur pour fonctionner
correctement. Il y a trois façons fondamentalement différentes de faire
cela. La première, et celle qui est conseillée, est d'utiliser une
commande permettant de devenir superutilisateur. La meilleure d'entre
elles est probablement fakeroot(1), puisqu'elle ne nécessite pas
d'accorder vraiment de privilège. super(1) et sudo(1) sont d'autres
possibilités. Si aucune option -r (ou --rootcmd) n'est donnée
(rappelez-vous que dpkg-buildpackage accepte également une option -r)
et qu'aucune des méthodes suivantes n'est utilisée, alors -rfakeroot
sera supposée.
La deuxime méthode est d'utiliser une commande comme su(1) pour devenir
superutilisateur et ensuite de réaliser toutes les opérations en tant
que superutilisateur. Notez cependant que lintian s'arrêtera s'il est
exécuté en tant que superutilisateur ou setuid root ; ceci peut être
contourné en utilisant l'option --allow-root de lintian si vous êtes
sûr de vous.
La troisième méthode consiste à installer debuild setuid root. Ce n'est
pas la méthode par défaut et nécessitera l'installation en tant que tel
par l'administrateur système. Il faut aussi être conscient que toute
personne pouvant exécuter debuild en tant que superutilisateur ou
setuid root a un accès complet au système. Ceci n'est pas recommandée
mais fonctionnera. debuild peut être installé avec les permissions
4754, de façon à ce que seuls les membres de son groupe puissent
l'exécuter. L'inconvénient de cette méthode est que les autres
utilisateurs ne pourront plus alors utiliser ce programme. D'autres
variantes consistent à avoir plusieurs copies de debuild ou d'utiliser
des programmes comme sudo ou super pour accorder sélectivement des
privilèges superutilisateur à certains utilisateurs. Si
l'administrateur veut utiliser cette méthode, il devra utiliser le
programme dpkg-statoverride(8) pour modifier les permissions de
/usr/bin/debuild. Ceci permettra de conserver les permissions après les
mises à jour.
CROCHETS
debuild gère un certain nombre de points d'accroche ( hook ) quand il
exécute dpkg-buildpackage. Notez que si l'un des points d'accroche
entre clean-hook et final-hook (inclus) est utilisé, debuild émulera
certaines sections du processus dpkg-buildpackage, plutôt que de les
exécuter directement, puisque dpkg-buildpackage n'a pas de point
d'accroche. Les points d'accroche suivants sont disponibles :
dpkg-buildpackage-hook
S'exécute avant le début de dpkg-buildpackage en appelant
dpkg-checkbuilddeps.
clean-hook
S'exécute avant que dpkg-buildpackage lance la règle clean du
fichier debian/rules pour nettoyer le source (s'exécute même si
le source n'est pas nettoyé car -nc est utilisée).
dpkg-source-hook
S'exécute après le nettoyage du source et avant l'exécution de
dpkg-source(1) (s'exécute même si dpkg-source n'est pas appelé
car -b ou -B est utilisée).
dpkg-build-hook
S'exécute après dpkg-source et avant l'appel de la règle build
du fichier debian/rules (s'exécute même si ce n'est qu'une
construction du paquet source, donc que la règle build du
fichier debian/rules n'est pas appelée).
dpkg-binary-hook
S'exécute entre les appels aux règles build et binary(-arch) du
fichier debian/rules. Ne s'exécute QUE si un paquet binaire est
construit.
dpkg-genchanges-hook
S'exécute seulement après la construction du paquet et avant
l'appel à dpkg-genchanges(1).
final-clean-hook
S'exécute après dpkg-genchanges et avant l'appel final à la
règle clean du fichier debian/rules (s'exécute même si le source
n'est pas nettoyé après la construction, ce qui est le
comportement par défaut).
lintian-hook
S'exécute (une fois) avant l'appel à lintian (s'exécute même si
aucun de ces programmes n'est appelé).
signing-hook
S'exécute seulement après l'appel à lintian et avant la
signature (s'exécute même si rien n'est signé).
post-dpkg-buildpackage-hook
S'exécute quand tout est fini.
A hook command can be specified either in the configuration file as,
for example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into
underscores!) or as a command line option --signing-hook-foo. The
command will have certain percent substitutions made on it: %% will be
replaced by a single % sign, %p will be replaced by the package name,
%v by the package version number, %s by the source version number, %u
by the upstream version number. Neither %s nor %u will contain an
epoch. %a will be 1 if the immediately following action is to be
performed and 0 if not (for example, in the dpkg-source hook, %a will
become 1 if dpkg-source is to be run and 0 if not). Then it will be
handed to the shell to deal with, so it can include redirections and
stuff. For example, to only run the dpkg-source hook if dpkg-source is
to be run, the hook could be something like: "if [ %a -eq 1 ]; then
...; fi".
Soyez prudent avec les crochets, puisqu'une mauvaise utilisation peut
empêcher le paquet de se compiler depuis le source. Ils peuvent être
utiles pour prendre des instantanés, etc.
Enfin, seuls dpkg-buildpackage-hook et les crochets avant lintian-hook
peuvent être utilisés si dpkg-cross(1) est installé (ceci est dû au
fait que debuild ré-implémente en interne dpkg-buildpackage, mais
n'essaie pas de ré-implémenter le remplacement de dpkg-cross pour ce
script).
OPTIONS
Pour plus de détails, voir ci-dessus.
--no-conf, --noconf
Ne lit aucun fichier de configuration. L'option ne peut être
utilisée qu'en première position de la ligne de commande.
--rootcmd=commande-pour-devenir-root, -rcommande-pour-devenir-root
Commande pour obtenir (ou simuler) les privilèges
superutilisateur.
--preserve-env
Ne nettoie pas l'environnement, à l'exception du PATH.
--preserve-envvar=var, -evar
Ne nettoie pas la variable d'environnement var.
Si var se termine par un astérisque ( * ), alors toutes les
variables qui ont une correspondance avec la portion de var
avant l'astérisque seront préservées.
--set-envvar=var=valeur, -evar=valeur
Positionne la variable d'environnement var à valeur et ne
l'enlève pas de l'environnement.
--prepend-path=valeur
Une fois que PATH a été normalisé, ajouter valeur au début.
--lintian
Exécute lintian après dpkg-buildpackage. C'est le comportement
par défaut. Cette option permet de remplacer une directive
contraire placée dans un fichier de configuration.
--no-lintian
N'exécute pas lintian après dpkg-buildpackage.
--no-tgz-check
Même si dpkg-buildpackage est exécuté et que le numéro de
version possède une révision pour Debian, ne vérifie pas que le
fichier .orig.tar.gz existe avant de démarrer la construction.
--tgz-check
Si dpkg-buildpackage est exécuté et que le numéro de version
possède une révision pour Debian, vérifie que le fichier
.orig.tar.gz existe avant de démarrer la construction. C'est le
comportement par défaut.
--username nom_utilisateur
Pour les signatures, utiliser debrsign(1) plutôt que debsign(1).
username indique l'identifiant à utiliser.
--toto-hook=crochet
Définit un crochet comme décrit ci-dessous. Si hook est blanc,
le crochet est annulé.
--clear-hooks
Supprime tous les crochets. Ils peuvent être réinstallés par des
options ultérieures en ligne de commande.
--check-dirname-level N
Veuillez consulter la section ci-dessus VERIFICATION DU NOM DU
REPERTOIRE, pour une explication de cette option.
--check-dirname-regex regex
Veuillez consulter la section ci-dessus VERIFICATION DU NOM DU
REPERTOIRE, pour une explication de cette option.
-d N'exécute pas dpkg-checkbuilddeps pour vérifier les dépendances
de construction du paquet ( build dependencies ).
-D Exécute dpkg-checkbuilddeps pour vérifier les dépendances de
construction.
VARIABLES DE CONFIGURATION
Les deux fichiers de configuration /etc/devscripts.conf et
~/.devscripts sont évalués dans cet ordre par un interpréteur de
commandes ( shell ) pour placer les variables de configuration. Des
options de ligne de commande peuvent être utilisées pour neutraliser
les paramètres des fichiers de configuration. Les paramètres des
variables d'environnement sont ignorés à cette fin. Si la première
option donnée en ligne de commande est --noconf, alors ces fichiers ne
sont pas évalués.
Les variables actuellement identifiées sont :
DEBUILD_PRESERVE_ENV
Si elle est positionnée à yes, équivaut à utiliser l'option
--preserve-env.
DEBUILD_PRESERVE_ENVVARS
Définit les variables d'environnement à conserver. Elle est
constituée d'une liste de variables d'environnement séparées par
des virgules. Ceci correspond à utiliser plusieurs fois les
options --preserve-envvar ou -e.
DEBUILD_SET_ENVVAR_var=valeur
Equivaut à utiliser --set-envvar=var=value.
DEBUILD_PREPEND_PATH
Equivaut à utiliser --prepend-path.
DEBUILD_ROOTCMD
Positionner cette variable à prog équivaut à utiliser -rprog.
DEBUILD_TGZ_CHECK
Si elle est positionnée à no, équivaut à utiliser l'option
--no-tgz-check en ligne de commande.
DEBUILD_SIGNING_USERNAME
Positionner cette variable équivaut à utiliser l'option
--username en ligne de commande.
DEBUILD_DPKG_BUILDPACKAGE_OPTS
Voici les options qui devraient être passées à l'invocation de
dpkg-buildpackage. Elles sont données avant toute option en
ligne de commande. A cause des problèmes de guillemets avec les
interpréteurs de commandes, pour les paramètres contenant un
espace, il sera nécessaire d'ajouter des guillemets
supplémentaires. Par exemple, pour forcer à toujours utiliser
votre clé GPG, même pour les envois sponsorisés ( sponsored
upload ), le fichier de configuration pourra contenir :
DEBUILD_DPKG_BUILDPACKAGE_OPTS="-k'Gilbey <jdg@debian.org>' -sa"
ce qui fournit exactement deux options. Sans les guillemets
supplémentaires, dpkg-buildpackage se serait plaint (à juste
titre) que Gilbey n'est pas une option reconnue (elle ne
commence pas par un signe - ).
Egalement, si ce paramètre contient une ou plusieurs des options
-r, -d ou -D, elle seront toujours prise en compte par debuild.
Notez que l'option -r placée ici écrasera le paramètre
DEBUILD_ROOTCMD.
DEBUILD_TOTO_HOOK
La variable de crochet pour le crochet toto. Voyez la section
sur les crochets pour plus de détails. Par défaut, elle est non
définie.
DEBUILD_LINTIAN
Si elle est positionnée à no, alors lintian ne sera pas exécuté.
DEBUILD_LINTIAN_OPTS
Ici, les options qui doivent être passées lors de l'invocation
de lintian. Elles sont données avant toute option en ligne de
commande et l'utilisation de cette option est la même que celle
décrite pour la variable DEBUILD_DPKG_BUILDPACKAGE_OPTS.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL, DEVSCRIPTS_CHECK_DIRNAME_REGEX
Veuillez consulter la section VERIFICATION DU NOM DU REPERTOIRE
ci-dessus pour une explication de ces variables. Notez que ce
sont des variables de configuration pour tous les outils du
paquet devscripts ; elles impacteront tous les scripts qui les
utilisent, comme indiqué dans leurs pages de manuel respectives
et dans devscripts.conf(5).
EXEMPLES
Pour construire votre propre paquet, lancez simplement debuild depuis
l'arbre des sources. Des options de dpkg-buildpackage(1) peuvent être
passées via la ligne de commande.
La ligne de commande typiquement utilisée pour construire le(s)
paquet(s) binaire(s) sans signer le fichier .changes (ou le fichier
.dsc inexistant) est :
debuild -i -us -uc -b
Changez -b en -S pour ne construire qu'un paquet source.
Voici un exemple appelant lintian (et lui fournissant des options) pour
vérifier les paquets créés :
debuild --lintian-opts -i
Prenez note de l'ordre des options : d'abord les options de debuild,
puis celles de dpkg-buildpackage et enfin celles de lintian (lintian
est appelé par défaut). Si vous utilisez toujours les mêmes options de
dpkg-buildpackage, vous pouvez utiliser l'option
DEBUILD_DPKG_BUILDPACKAGE_OPTS du fichier de configuration, comme
décrit plus haut.
Pour construire un paquet pour un envoi sponsorisé (sponsored upload),
prenons toto_1.0-1.dsc et les fichiers sources respectifs, lancez
quelque chose qui ressemblerait aux commandes suivantes :
dpkg-source -x toto_1.0-1.dsc
cd toto-1.0
debuild -k0x12345678
où 0x12345678 est remplacé par l'identifiant de votre clé GPG ou un
autre identifiant de clé tel que votre adresse de messagerie. De
nouveau, vous pouvez également utiliser l'option du fichier de
configuration DEBUILD_DPKG_BUILDPACKAGE_OPTS tel que cela est décrit
plus haut pour éviter d'avoir à taper l'option -k à chaque fois que
vous effectuez un envoi sponsorisé.
VOIR AUSSI
dpkg-buildpackage(1), dpkg-checkbuilddeps(1), debsign(1), fakeroot(1),
lintian(1), chmod(1), dpkg-statoverride(8), su(1), sudo(1), super(1) et
devscripts.conf(5).
AUTEUR
Le programme debuild a été initialement écrit par Christoph Lameter
<clameter@debian.org>. La version actuelle a été écrite par Julian
Gilbey <jdg@debian.org>.
TRADUCTION
Ce document est une traduction réalisée par Nicolas François, Guillaume
Delacour, Cyril Brulebois et Thomas Huriaux.
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 en ajoutant l'option -L C à la commande man.
N'hésitez pas à signaler à l'auteur ou sur la liste de traduction
<debian-l10-french@lists.debian.org>, selon le cas, toute erreur dans
cette page de manuel.