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-21 14:06:56 UTCjoy-mg@debian.orgfrederic.dumont@easynet.beadn+deb@diwi.orgdavid@tilapin.orgdebian-l10n-french@lists.debian.org