Ce document suppose que vous utilisez le système Squeeze. Si
vous avez l'intention de suivre ce texte avec un système Lenny,
vous devez au moins installer les paquets dpkg
et
debhelper
rétroportés.
Il y a d'autres paquets similaires mais spécialisés comme
dh-make-perl
, dh-make-php
, etc.
Cela dit, il existera toujours des paquets qui vaudront la peine d'être empaquetés.
Vous pouvez identifier le format de l'archive en utilisant la commande
file
si l'extension du fichier ne suffit pas.
Ce programme est déjà empaqueté. La version actuelle 0.15.3 a changé substantiellement depuis la version 0.9.12 des exemples suivants.
Voir le tutoriel
des Autotools
et
/usr/share/doc/autotools-dev/README.Debian.gz
.
Les versions peuvent être comparée avec « dpkg --compare-versions
ver1 op ver2 ». Voir
dpkg(1)
.
Le texte qui suit présupposé que l'interpréteur de commandes que vous
utilisez à la connexion est Bash. Si vous utilisez un autre interpréteur de
commandes, par exemple zsh, il est nécessaire d'utiliser le fichier de
configuration approprié à la place de ~/.bashrc
.
Si les sources amont fournissent le répertoire debian
et son
contenu, exécutez plutôt la commande dh_make
avec l'option
--addmissing. Le nouveau format source
3.0 (quilt) est assez robuste pour ne pas casser même avec
ces paquets. Vous pourriez avoir besoin de mettre à jour le contenu fourni en
amont pour votre paquet Debian.
Il y a peu de choix à ce moment : « s » pour
« binaire simple », « i » pour
« binaire indépendant de l'architecture »,
« m » pour « binaires multiples »,
« l » pour « bibliothèque »,
« k » pour « module de noyau »,
« n » pour « correctif de noyau » et
« b » pour « cdbs
». Ce
document se concentre sur l'utilisation du paquet debhelper
avec
la commande dh
. Ce document se concentre sur l'utilisation de la
nouvelle commande dh
pour un « binaire simple » et
l'effleure pour un « binaire indépendant de l'architecture » et un
« binaire multiple ». Le paquet cdbs
propose une
autre infrastructure de scripts de paquets que la commande dh
et
sort du cadre de ce document.
Cette configuration peut-être désactivée en démarrant la commande
quilt
comme ceci : « quilt --quiltrc /dev/null
... ».
Le répertoire debian/patches
devrait maintenant exister si vous
exécutez dh_make
comme décrit auparavant. Cet exemple de
manipulation le créé seulement si vous mettez à jour le paquet existant.
Pour les paquets binaires multiples, la commande dh_auto_install
utilise debian/tmp
comme répertoire temporaire alors que la
commande dh_install
, à l'aide des fichiers
debian/paquet-1.install
et
debian/paquet-2.install
, séparera le contenu de
debian/tmp
dans les répertoires temporaires
debian/paquet-1
et
debian/paquet-2
pour créer les paquets binaires
multiples *.deb
.
Il s'agit simplement d'un exemple pour montrer à quoi le fichier
Makefile
devrait ressembler. Si le fichier Makefile
est créé par la commande ./configure
, la bonne façon de
modifier ce genre de Makefile
est d'exécuter la commande
./configure
à partir de la commande
dh_auto_configure
avec les options par défaut y compris
--prefix=/usr.
NdA : ceci n'est pas le meilleur exemple dans la mesure où le paquet
libncurses
est maintenant livré avec un lien symbolique
libcurses.so
. Les suggestions sont les bienvenues :-)
Cette situation quelque peu étrange est une fonctionnalité bien expliquée
dans la Charte
Debian, note de bas de page 48
. Ce n'est pas lié à
l'utilisation de la commande dh
dans le fichier
debian/rules
mais au fonctionnement de
dpkg-buildpackage
. La même situation s'applique au système de
construction automatique pour Ubuntu
.
Certaines personnes utilisent des valeurs de distribution non valables comme UNRELEASED pour éviter d'envoyer un paquet accidentellement lors de la mise à jour d'un paquet dans un système de gestion de version partagé.
Cette cible est utilisée par « dpkg-buildpackage » comme en Reconstruction complète, Section 6.1.
Cette cible est utilisée par « dpkg-buildpackage -B » comme en Serveurs d'empaquetage automatique (« autobuilder »), Section 6.2.
Cette cible est utilisée par « dpkg-buildpackage -A ».
Ceci utilise les fonctionnalités du nouveau debhelper
V7.
Ses concepts fondateurs sont expliqués dans la présentation « Pas
le debhelper de papy »
réalisé lors de la dixième
conférence Debian par l'auteur de debhelper
. Sous
Lenny, dh_make
crée un fichier rules
beaucoup plus compliqué avec de nombreux scripts dh_*
énumérés
pour chaque cible obligatoire explicitement et les gèle dans l'état de
l'empaquetage initial. Cette nouvelle commande dh
plus simple
libère le responsable de cette contrainte. Vous gardez les pleins pouvoirs de
personnalisation avec les cibles override_dh_*. Voir Personnalisation du fichier rules
, Section
4.4.3. Il se base uniquement sur le paquet debhelper
et ne
rend pas obscur le processus de construction comme le paquet cdbs
.
Vous pouvez vérifier les réelles séquences de programmes dh_*
pour une cible donnée avec « dh --no-act
cible » ou « debian/rules -- '--no-act
cible' » sans vraiment les exécuter.
En assumant que le paquet python-support
soit installé sur le
système.
Pour obtenir des informations complètes sur le rôle exact de tout ces scripts
dh_*
et sur leurs options, veuillez lire leur page de manuel
respective et la documentation de debhelper
.
Ces commandes gèrent d'autres environnements, comme setup.py
, qui
peuvent être énumérés en exécutant « dh_auto_build
--list » dans le répertoire d'un paquet source.
En fait il recherche la première cible disponible parmi
distclean, realclean et clean dans
Makefile
et l'exécute.
En fait il recherche la première cible disponible parmi test et
check dans Makefile
et l'exécute.
Si un paquet installe le fichier
/usr/share/perl5/Debian/Debhelper/Sequence/nom_personnalise.pm
,
vous devriez déclencher sa fonction de personnalisation avec « dh
--with nom-personnalise $@ .
L'utilisation de la commande dh_pysupport
est préférable à
dh_pycentral
. N'utilisez pas la commande dh_python
.
Avec Lenny, pour modifier le comportement d'un script
dh_*
il fallait trouver et adapter la ligne pertinente du fichier
rules
.
Le paquet gentoo
utilise le système de construction GNU, ou
Autotools. Voir http://fr.wikipedia.org/wiki/Autotools
.
dh_auto_build
sans autre option exécutera la première cible du
fichier Makefile
.
Les fichiers debian/changelog
et debian/NEWS
sont
toujours installés automatiquement. Le journal de modification amont est
cherché en convertissant les noms de fichiers en minuscule puis en vérifiant
l'existence de changelog
, changes
,
changelog.txt
, et changes.txt
.
Cela remplace la commande obsolète dh_movefiles(1)
configurée
par le fichier files
.
Si la commande n'a pas non plus de page info
, mais possède des
fichiers de documentation dans le répertoire
/usr/share/paquet
, vous devriez modifier manuellement
la page créée par la commande help2man
.
Il y a eu une réorganisation majeure de la structure du menu pour Squeeze.
Même s'ils ont été présentés par un raccourci Bash
« {post|pre}{inst|rm}
», il est préférable
d'utiliser un shell pur POSIX (non Bash) pour ces scripts du
responsable pour des raisons de compatibilité.
Consulter DebSrc3.0
pour un
condensé d'informations sur la conversion des sources au formats source
3.0 (quilt) et 3.0 (native).
En fait, ce nouveau format permet de gérer des archives amont multiples et plusieurs méthodes de compression. Ces considérations sortent du cadre de ce document.
Plusieurs méthodes de maintenance des ensembles de correctifs ont été
proposés et sont utilisés dans les paquets Debian. Le système
quilt
est le système de maintenance conseillé. Les autres sont
dpatch
, dbs
, cdbs
, etc. La plupart
d'entre-eux conservent aussi les correctifs dans des fichiers
debian/patches/*
.
Si vous demandez à un parrain d'envoyer le paquet, cette séparation plutôt claire et cette documentation de vos changements sont très importantes pour accélérer l'examen du paquet.
Il est possible de ne pas appliquer les correctifs quilt
du format
source 3.0 (quilt) à la fin de l'extraction avec l'option
--skip-patches. Sinon, il est aussi possible d'exécuter
« quilt pop -a » après l'extraction normale.
Le véritable réseau de serveurs d'empaquetage automatique a un fonctionnement autrement plus compliqué que celui présenté ici. De tels détails sortent du cadre de ce document.
contrairement à celui du paquet pbuilder
, l'environnement
chroot
du paquet sbuild
utilisé par les serveurs
d'empaquetage automatique n'est pas forcément minimal et plusieurs paquets
peuvent rester installés.
Comme le paquet pbuilder
est en constante évolution, vous devez
vérifier les possibilités réelles de la configuration en consultant la
dernière documentation officielle.
Il est supposé que
HOOKDIR="/var/cache/pbuilder/hooks" est
déjà configuré. De nombreux exemples de scripts hook sont disponibles dans
le répertoire /usr/share/doc/pbuilder/examples
.
Il existe des restrictions pour de telles mises à jour de paquet stable.
Voici quelques ressources disponibles sur la toile pour les utilisateurs avancés :
« Construction de paquets Debian avec git-buildpackage » en
/usr/share/doc/git-buildpackage/manual-html/gbp.html
;
« paquets
Debian avec Git
» ;
Les variables d'environnement qui devraient normalement être configurées correctement à cette étape ne sont pas configurées par cette méthode. Ne créez jamais de vrai paquets pour l'envoi avec cette méthode rapide.
Il n'est pas nécessaire d'ajouter le paramètre « -i -I
--show-overrides » à lintian
si vous avez
personnalisé /etc/devscripts.conf
ou ~/.devscripts
comme décrit en Commande debuild, Section
6.4.
Le paquet dput
semble fournir plus de fonctionnalités, et devient
plus populaire que le paquet dupload
. Il utilise le fichier
/etc/dput
pour la configuration globale et le fichier
~/.dput.cf
pour la configuration par utilisateur. Il gère aussi
les services relatifs à Ubuntu d'origine.
Voyez ftp://ftp.upload.debian.org/pub/UploadQueue/README
.
Vous pouvez aussi utiliser la commande dcut
du paquet
dput
.
Pour obtenir la date au format voulu, utilisez « LANG=C date -R ».
Si un paquet toto
est empaqueté avec l'ancien format
1.0, ce peut plutôt être réalisé en exécutant
« zcat
/chemin/vers/toto_ancienneversion.diff.gz|patch
-p1 » depuis la nouvelle arborescence source décompressée.
Si la commande uscan
télécharge les sources mises à jour mais
n'exécute pas la commande uupdate
, vous devriez corriger le
fichier debian/watch
pour avoir « debian
uupdate » après l'URL.
Si votre parrain ou d'autres responsables s'opposent à la mise à jour du style d'empaquetage existant, ça ne vaut pas la peine de s'embêter à argumenter. Il y a des choses plus importantes à faire.
Dans le paquet cdbs
(0.4.74), vous trouverez certaines
descriptions négatives du fichier rules
créé par la commande
dh_make
pour les choix non cdbs
. Ne vous en
inquiétez pas. C'est uniquement relatif à la version de Lenny
qui créait des cibles explicites et une longue liste de commandes
dh_*
.
vous pouvez découper gros.diff
en plusieurs petits correctifs
incrémentaux avec la commande splitdiff
.
Guide du nouveau responsable Debian
version 1.2.25, 2010-12-22 12:44:34 UTCjoy-mg@debian.org
frederic.dumont@easynet.be
adn+deb@diwi.org
david@tilapin.org
debian-l10n-french@lists.debian.org