Tutoriel : la construction de paquets Debian Lucas Nussbaum [email protected]Traduction française de Cédric Boutillier, Jean-Philippe Mengual et l’équipe francophone de traduction version 0.15 – 2014-10-16 Tutoriel : la construction de paquets Debian 1 / 87
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
I Un système Debian (ou Ubuntu) (avec accès superutilisateur)
I Quelques paquets :I build-essential : dépend de paquets supposés disponibles sur la
machine du développeur (inutile de les indiquer dans le champ decontrôle Build-Depends de votre paquet)
I dépend aussi de dpkg-dev, contenant les outils de basespécifiques à Debian pour créer des paquets
I devscripts : contient de nombreux scripts utiles pour lesresponsables Debian
Beaucoup d’autres outils seront aussi mentionnés plus tard, tels quedebhelper, cdbs, quilt, pbuilder, sbuild, lintian, svn-buildpackage,git-buildpackage. . .Installez-les au besoin.
Tutoriel : la construction de paquets Debian 8 / 87
Processus général de la construction de paquets
Web sources amontmiroir Debian
paquet source là où la plupart dutravail manuel est fait
un ou plusieurs paquets binaires .deb
dh_makeapt-get source dget
debuild (construire et tester aveclintian) ou dpkg-buildpackage
installer (debi)envoyer (dput)
Tutoriel : la construction de paquets Debian 9 / 87
Exemple : reconstruction de dash1 Installez les paquets nécessaires à la construction de dash, ainsi que
devscriptsapt-get build-dep dash
(nécessite des lignes deb-src dans /etc/apt/sources.list)apt-get install --no-install-recommends devscripts fakeroot
2 Créez un répertoire de travail et entrez-ymkdir /tmp/debian-tutorial ; cd /tmp/debian-tutorial
3 Récupérez le paquet source de dash
apt-get source dash
(Il faut pour cela avoir des lignes deb-src dans votre /etc/apt/sources.list)
4 Construisez le paquetcd dash-*
debuild -us -uc (-us -uc désactive la signature du paquet avec GPG)
5 Vérifiez le résultatI Il y a de nouveaux fichiers .deb dans le répertoire parent
6 Regardez le répertoire debian/I C’est là que se fait le travail de construction du paquet
Tutoriel : la construction de paquets Debian 10 / 87
Plan1 Introduction
2 Création des paquets source
3 Construire et tester les paquets
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 11 / 87
Paquet sourceI Un paquet source peut produire plusieurs paquets binaires
Le paquet source libtar produit les paquets binaires libtar0 et libtar-dev
I Deux types de paquets : (en cas de doute, utilisez « non natif »)I natif : normalement pour les logiciels spécifiques à Debian (dpkg, apt . . . )I non natif : logiciels développés hors de Debian
I Fichier principal : .dsc (métadonnées)
I Autres fichiers selon la version du format sourceI 1.0 ou 3.0 (natif) : paquet_version.tar.gz
I 1.0 (non natif) :I paquet_ver.orig.tar.gz : sources amontI paquet_debver.diff.gz : correctif avec des modifications
spécifiques à Debian
I 3.0 (quilt) :I paquet_ver.orig.tar.gz : sources amontI paquet_debver.debian.tar.gz : archive tar avec les
modifications de Debian
(Consultez dpkg-source(1) pour les détails exacts.)Tutoriel : la construction de paquets Debian 12 / 87
I Téléchargez l’archive des sources amont(sources amont = celles fournies par les développeurs du logiciel)
I Renommez-la en <paquet_source>_<version_amont>.orig.tar.gz
(exemple : simgrid_3.6.orig.tar.gz)
I Décompressez-la
I Renommez le répertoire en <paquet_source>-<version_amont>
(exemple : simgrid-3.6)
I cd <paquet_source>-<version_amont> && dh_make (du paquetdh-make)
I Il existe des alternatives à dh_make pour des types de paquetsspécifiques : dh-make-perl, dh-make-php. . .
I Un répertoire debian/ est créé, contenant de nombreux fichiers
Tutoriel : la construction de paquets Debian 15 / 87
Fichiers dans debian/
L’empaquetage ne doit se faire qu’en modifiant les fichiers de debian/
I Fichiers principaux :I control – métadonnées sur le paquet (dépendances, etc.)I rules – indique la manière de construire le paquetI copyright – informations de copyright du paquetI changelog – journal des modifications du paquet Debian
I Autres fichiers :I compatI watchI configuration de dh_install* (*.dirs, *.docs, *.manpages. . . )I scripts du responsable (*.postinst, *.prerm. . . )I source/formatI patches/ – si vous avez besoin de modifier les sources amont
I Plusieurs fichiers ont un format basé sur la RFC 822 (en-têtes de courriel)
Tutoriel : la construction de paquets Debian 16 / 87
debian/changelogI Liste les modifications dans la construction du paquet DebianI Donne la version actuelle du paquet
1.2.1.1-5RévisionDebian
Versionamont
I Édité à la main ou avec dchI Pour créer une entrée pour une nouvelle version : dch -i
I Format spécial pour clôturer des bogues Debian ou UbuntuDebian : Closes: #595268 ; Ubuntu : LP: #616929
I Installé en tant que /usr/share/doc/paquet /changelog.Debian.gz
mpich2 (1.2.1.1 -5) unstable; urgency=low
* Use /usr/bin/python instead of /usr/bin/python2 .5. Allow
to drop dependency on python2 .5. Closes: #595268
* Make /usr/bin/mpdroot setuid. This is the default after
the installation of mpich2 from source , too. LP: #616929
Architecture : « all » ou « any »Deux types de paquets binaires :
I Paquets ayant un contenu différent selon l’architecture DebianI Exemple : programme CI Architecture: any dans debian/control
I Si ça ne fonctionne que sur certaines architectures :Architecture: amd64 i386 ia64 hurd-i386
I buildd.debian.org : construit les autres architectures à l’envoiI Nommés paquet_version_architecture.deb
I Paquets ayant le même contenu sur toutes les architecturesI Exemple : bibliothèque PerlI Architecture: all dans debian/controlI Nommé paquet_version_all.deb
Un même paquet source peut engendrer à la fois des paquets binairesArchitecture: any et Architecture: all
Tutoriel : la construction de paquets Debian 19 / 87
debian/rules
I Makefile
I Interface utilisée pour construire des paquets Debian
I Documenté dans la Charte Debian, chapitre 4.8http://www.debian.org/doc/debian-policy/ch-source#s-debianrules
I Cibles requises :I build, build-arch, build-indep : doit effectuer toute la
configuration et la compilation
I binary, binary-arch, binary-indep : créent les paquets binairesI dpkg-buildpackage appellera binary pour construire tous les
paquets ou binary-arch pour ne construire que les paquetsArchitecture: any
I clean : nettoie le répertoire des sources
Tutoriel : la construction de paquets Debian 20 / 87
Tutoriel : la construction de paquets Debian 23 / 87
CDBSI Avec debhelper, restent beaucoup de redondances entre les paquets
I Assistants de second niveau incluant des fonctionnalités courantesI p. ex. construction avec ./configure && make && make install
I CDBS :I Introduit en 2005, basé sur la magie évoluée de GNU makeI Documentation : /usr/share/doc/cdbs/I Gestion de Perl, Python, Ruby, GNOME, KDE, Java, Haskell. . .I Mais certaines personnes le détestent :
I Il est parfois difficile à personnaliser : « enchevêtrementcomplexe de makefiles et de variables d’environnement »
I Plus lent que l’utilisation seule de debhelper (beaucoup d’appelsinutiles à dh_*)
#!/usr/bin/make -f
include /usr/share/cdbs /1/ rules/debhelper.mk
include /usr/share/cdbs /1/ class/autotools.mk
# ajouter une action apres la construction
build/monpaquet ::
/bin/bash debian/scripts/toto.sh
Tutoriel : la construction de paquets Debian 24 / 87
Dh (aussi appelé Debhelper 7, ou dh7)
I Introduit en 2008, avec l’objectif de remplacer CDBS
I Commande dh qui appelle dh_*
I Fichier debian/rules simple, ne contenant que les redéfinitions
I Plus facile à personnaliser que CDBS
I Doc : pages de man (debhelper(7), dh(1)) et présentation à DebConf9http://kitenet.net/~joey/talks/debhelper/debhelper-slides.pdf
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_configure:
dh_auto_configure -- --with -kitchen -sink
override_dh_auto_build:
make world
Tutoriel : la construction de paquets Debian 25 / 87
debhelper classique vs CDBS vs dhI Parts de marché :
debhelper classique : 27 % CDBS : 18 % dh : 54 %
I Lequel apprendre ?I Probablement un peu de chaqueI Vous devez connaître debhelper pour utiliser dh et CDBSI Vous pourriez avoir à modifier des paquets CDBS
I Lequel utiliser pour un nouveau paquet ?I dh (seule solution de plus en plus utilisée)
02/2010 06/2011 11/20120
20
40
60
Date
Par
tsde
mar
ché
(%) debhelper
dhCDBS
Tutoriel : la construction de paquets Debian 26 / 87
Plan1 Introduction
2 Création des paquets source
3 Construire et tester les paquets
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 27 / 87
Construire les paquetsI apt-get build-dep monpaquet
Installer les dépendances de construction (pour un paquet dans Debian)Ou mk-build-deps -ir (pour un paquet pas encore envoyé dans Debian)
I debuild : construire, tester avec lintian, signer avec GPG
I Vous pouvez aussi faire appel directement à dpkg-buildpackage
I En général, avec dpkg-buildpackage -us -uc
I Il vaut mieux construire les paquets dans un environnement minimalI pbuilder – assistant pour la construction de paquets dans un chroot
I schroot et sbuild : utilisé sur les démons de construction Debian(pas aussi simple que pbuilder, mais permet des copies LVMvoir : https://help.ubuntu.com/community/SbuildLVMHowto )
I Crée les fichiers .deb et un fichier .changesI .changes : décrit ce qui a été construit ; utilisé pour envoyer le paquet
Tutoriel : la construction de paquets Debian 28 / 87
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 30 / 87
Travaux pratiques no 1 : modifier le paquet grep1 Rendez-vous sur http://ftp.debian.org/debian/pool/main/g/grep/
et téléchargez la version 2.6.3-3 du paquet (avec Ubuntu 11.10 ouultérieur, ou Debian testing ou unstable, utilisez à la place la version 2.9-1ou 2.9-2)
I Si le paquet source n’est pas décompressé automatiquement,décompressez-le avec dpkg-source -x grep_*.dsc
2 Regardez les fichiers contenus dans debian/.I Combien de paquets binaires sont produits par ce paquet source ?I Quel assistant d’empaquetage ce paquet utilise-t-il ?
3 Construisez le paquet
4 Nous allons maintenant modifier le paquet. Ajoutez une entrée au journaldes modifications et augmentez le numéro de version.
5 Désactivez maintenant la gestion des expressions rationnelles de Perl(c’est une option de ./configure)
6 Reconstruisez le paquet
7 Comparez le paquet d’origine et le nouveau avec debdiff
8 Installez le paquet nouvellement construit
9 Pleurez votre rage si vous vous êtes plantés ! ;) Tutoriel : la construction de paquets Debian 31 / 87
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 32 / 87
debian/copyright
I Informations de copyright et de licence pour les sources et l’empaquetageI Écrites traditionnellement dans un fichier texteI Nouveau format en langage machine :
Files: *Copyright: Copyright 1998 John Doe <[email protected] >License: GPL -2+This program is free software; you can redistribute it[...].On Debian systems , the full text of the GNU General PublicLicense version 2 can be found in the file‘/usr/share/common -licenses/GPL -2’.
Files: debian /*Copyright: Copyright 1998 Jane Smith <[email protected] >License:[TEXTE DE LA LICENCE]
Tutoriel : la construction de paquets Debian 33 / 87
Souvent nécessaire :I Corriger des bogues ou faire des modifications spécifiques à Debian
I Rétroporter des corrections depuis une version amont plus récente
Plusieurs méthodes existent :I Modifier directement les fichiers
I SimpleI Mais aucun moyen de suivre et de documenter les modifications
I Utiliser les systèmes de gestion de correctifsI Facilite l’intégration de vos modifications en amontI Facilite le partage des corrections avec les dérivéesI Donne plus de visibilité à vos modificationshttp://patch-tracker.debian.org/
Tutoriel : la construction de paquets Debian 34 / 87
I Exemple : git-buildpackageI la branche upstream pour suivre les sources amont avec les
étiquettes upstream/versionI la branche master suit le paquet DebianI les étiquettes debian/version pour chaque envoiI la branche pristine-tar pour pouvoir reconstruire l’archive tar
amont
I Les champs Vcs-* de debian/control pour localiser le dépôtI http://wiki.debian.org/Alioth/GitI http://wiki.debian.org/Alioth/Svn
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 41 / 87
Plusieurs manières de contribuer à DebianI La pire :
1 Empaqueter votre propre application2 L’intégrer à Debian3 Disparaître
I Les meilleures :I S’impliquer dans des équipes d’empaquetage Debian
I Beaucoup d’équipes se concentrent sur un ensemble de paquetset ont besoin d’aide
I Liste disponible sur http://wiki.debian.org/TeamsI Excellente façon d’apprendre de contributeurs plus expérimentés
I Adopter des paquets existants non maintenus (paquets orphelins)
I Apporter un nouveau logiciel à DebianI Seulement s’il est intéressant ou utile, s’il vous plaîtI Y a-t-il une alternative déjà empaquetée pour Debian ?
Tutoriel : la construction de paquets Debian 42 / 87
Adopter des paquets orphelinsI Beaucoup de paquets non maintenus dans Debian
I Liste complète et marche à suivre :http://www.debian.org/devel/wnpp/
I Ceux installés sur votre machine : wnpp-alert
I Différents états :I Orphelin : le paquet n’est pas maintenu
Adoptez-le s’il vous sied
I RFA : Request For Adopter (cherche un adoptant)Le responsable cherche un adoptant, mais il continue son travail en attendantAdoptez-le s’il vous sied. L’envoi d’un courriel au responsable actuel est poli
I ITA : Intent To Adopt (en cours d’adoption)Quelqu’un prévoit d’adopter le paquet. Vous pourriez proposer votre aide !
I RFH : Request For Help (recherche d’aide)Le responsable cherche de l’aide
I Certains paquets non maintenus ne sont pas identifiés comme tels→ pasencore officiellement orphelins
I En cas de doute, demandez sur [email protected] #debian-qa sur irc.debian.org Tutoriel : la construction de paquets Debian 43 / 87
Points à vérifier avant de demander un parrainageI Debian met fortement l’accent sur la qualité
I En général, les parrains et marraines sont difficiles à trouver et trèsoccupés
I Assurez-vous que votre paquet est prêt avant de demander unparrainage
I Points à vérifier :I Évitez les oublis de dépendances de construction : assurez-vous que
la construction de votre paquet fonctionne dans un environnementchroot sid propre
I L’utilisation de pbuilder est recommandée
I Lancez lintian -EviIL +pedantic sur votre paquetI Vous devez corriger les erreurs et faire de votre mieux pour
corriger les autres problèmes
I Testez largement votre paquet, bien sûr
I En cas de doute, demandez de l’aide
Tutoriel : la construction de paquets Debian 46 / 87
Où trouver de l’aide ?L’aide dont vous avez besoin :
I conseils et réponses à vos questions, relecture de codeI parrainage pour les envois, une fois votre paquet prêt
Vous pouvez obtenir de l’aide :I autres membres d’une équipe d’empaquetage : la meilleure solution
I liste des équipes : http://wiki.debian.org/Teams
I le groupe Debian Mentors (si le paquet ne correspond à aucune équipe)I http://wiki.debian.org/DebianMentorsFaqI liste de diffusion : [email protected]
(une autre manière d’apprendre par hasard)I IRC : #debian-mentors sur irc.debian.orgI http://mentors.debian.net/I documentation : http://mentors.debian.net/intro-maintainers
I listes de diffusion localisées (pour obtenir de l’aide dans votre langue)I debian-devel-{french,italian,portuguese,spanish}@lists.d.oI liste complète : https://lists.debian.org/devel.htmlI ou les listes d’utilisateurs : https://lists.debian.org/users.html
Tutoriel : la construction de paquets Debian 47 / 87
I Pour une vision par paquet source : système de suivi des paquets(PTS : Packaging Tracking System)http://packages.qa.debian.org/dpkg
I Pour une vision par responsable/équipe : aperçu des paquets d’undéveloppeur (DDPO : Developer’s Packages Overview)http://qa.debian.org/developer.php?login=
I Ubuntu gère essentiellement les différences avec Debian
I Pas de concentration sur des paquets spécifiquesMais une collaboration avec les équipes Debian
I Il est recommandé en général d’envoyer les nouveaux paquets d’aborddans Debianhttps://wiki.ubuntu.com/UbuntuDevelopment/NewPackages
I Peut-être une meilleure idée :I S’impliquer dans une équipe Debian et faire le lien avec Ubuntu
I Faciliter la réduction les divergences, trier les bogues sur Launchpad
I Beaucoup d’outils Debian peuvent aider :I Colonne Ubuntu sur l’aperçu des paquets du développeurI Encart Ubuntu sur le système de suivi des paquetsI Réception des courriels de bogues Launchpad au moyen du PTS
Tutoriel : la construction de paquets Debian 52 / 87
Ce document est un logiciel libre : vous pouvez le redistribuer et le modifier, selonvotre choix, sous :
I les termes de la General Public License GNU publiée par la Fondation du logiciellibre, version 3 de la License, ou (si vous préférez) toute version supérieure.http://www.gnu.org/licenses/gpl.html
I les termes de la licence Creative Commons Attribution-ShareAlike 3.0 Unported.http://creativecommons.org/licenses/by-sa/3.0/
Tutoriel : la construction de paquets Debian 55 / 87
2 Créez un paquet DebianI Installez les dépendances de construction du paquetI Vous obtenez un paquet de base fonctionnelI Terminez en complétant debian/control et d’autres fichiers
3 Profitez
Tutoriel : la construction de paquets Debian 58 / 87
4 Travaux pratiques no 1 : modifier le paquet grep
5 Sujets avancés sur la construction de paquets
6 Maintenir des paquets dans Debian
7 Conclusions
8 Travaux pratiques no 2 : empaqueter GNUjump
9 Travaux pratiques no 3 : une bibliothèque Java
10 Travaux pratiques no 4 : empaqueter un gem Ruby
11 Travaux pratiques no 5 : empaqueter un module Perl
12 Solutions aux travaux pratiques Tutoriel : la construction de paquets Debian 65 / 87
Solutions aux
travaux pratiques
Tutoriel : la construction de paquets Debian 66 / 87
Travaux pratiques no 1 : modifier le paquet grep1 Rendez-vous sur http://ftp.debian.org/debian/pool/main/g/grep/
et téléchargez la version 2.6.3-3 du paquet (avec Ubuntu 11.10 ouultérieur, ou Debian testing ou unstable, utilisez à la place la version 2.9-1ou 2.9-2)
2 Regardez les fichiers contenus dans debian/.I Combien de paquets binaires sont produits par ce paquet source ?I Quel assistant d’empaquetage ce paquet utilise-t-il ?
3 Construisez le paquet
4 Nous allons maintenant modifier le paquet. Ajoutez une entrée au journaldes modifications et augmentez le numéro de version.
5 Désactivez maintenant la gestion des expressions rationnelles de Perl(c’est une option de ./configure)
6 Reconstruisez le paquet
7 Comparez le paquet d’origine et le nouveau avec debdiff
Récupérer les sources1 Rendez-vous sur http://ftp.debian.org/debian/pool/main/g/grep/
et téléchargez la version 2.6.3-3 du paquet
I Utilisez dget pour télécharger le fichier .dsc :dget http://cdn.debian.net/debian/pool/main/g/grep/grep_2.6.3-3.dsc
I D’après http://packages.qa.debian.org/grep, grep la version 2.6.3-3est actuellement dans stable (squeeze). Si vous avez les lignes deb-src,pour squeeze dans votre /etc/apt/sources.list, utilisez :apt-get source grep=2.6.3-3
ou apt-get source grep/stable
ou si vous sentez que vous avez de la chance : apt-get source grep
I Le paquet source de grep se compose de trois fichiers :I grep_2.6.3-3.dscI grep_2.6.3-3.debian.tar.bz2I grep_2.6.3.orig.tar.bz2
C’est le cas typique du format « 3.0 (quilt) »
I Si nécessaire, décompressez le paquet source avecdpkg-source -x grep_2.6.3-3.dsc
Tutoriel : la construction de paquets Debian 68 / 87
2 Regardez les fichiers contenus dans debian/.I Combien de paquets binaires sont produits par ce paquet source ?I Quel assistant d’empaquetage ce paquet utilise-t-il ?
I D’après debian/control, ce paquet ne génère qu’un seul paquet binaire,nommé grep.
I D’après debian/rules, ce paquet est un exemple typique de constructionavec l’assistant classique debhelper, n’utilisant ni CDBS ni dh. On peutvoir les différents appels aux commandes dh_* dans debian/rules.
3 Construisez le paquet
I Utilisez la commande apt-get build-dep grep pour installer lesdépendances de construction
I Puis debuild ou dpkg-buildpackage -us -uc (prend environ 1 min)
Tutoriel : la construction de paquets Debian 69 / 87
Éditer le journal des modifications
4 Nous allons maintenant modifier le paquet. Ajoutez une entrée au journaldes modifications et augmentez le numéro de version.
I debian/changelog est un fichier texte. Vous pourriez l’éditer et ajouterune nouvelle entrée à la main.
I Vous pouvez aussi utiliser dch -i, qui ajoutera une entrée et ouvrira unéditeur
I On peut définir son nom et son adresse électronique via les variablesd’environnement DEBFULLNAME et DEBEMAIL
I Reconstruisez le paquet : une nouvelle version du paquet est construite
I Le système des versions est décrit à la section 5.6.12 de la Charte Debianhttp://www.debian.org/doc/debian-policy/ch-controlfields
Tutoriel : la construction de paquets Debian 70 / 87
2 Créez un paquet DebianI Installez les dépendances de construction du paquetI Vous obtenez un paquet de base fonctionnelI Terminez en complétant debian/control et d’autres fichiers
3 Profitez
Tutoriel : la construction de paquets Debian 73 / 87
gem2deb net-ssh :I Télécharge le gem depuis rubygems.orgI Crée une archive .orig.tar.gz adéquate, et la décompresseI Initialise un paquet source Debian basé sur les métadonnées du gem
I Nommé ruby-gemname
I Tente de construire le paquet binaire Debian (ceci peut échouer)
dh_ruby (inclus dans gem2deb) effectue les tâches spécifiques à Ruby :I Construction d’extentions C pour chaque version de RubyI Copie les fichiers dans leur répertoire de destinationI Mise à jour des interpréteurs à utiliser (« shebangs ») pour les scripts
exécutablesI Exécution des tests définis dans debian/ruby-tests.rb ou
debian/ruby-test-files.yaml ainsi que d’autres vérifications
Tutoriel : la construction de paquets Debian 81 / 87
Pas à pas. . . (2)
Améliorez le paquet créé :I Exécutez debclean pour nettoyer l’arborescence. Regardez debian/.
I changelog et compat devraient être corrects
I Éditez debian/control : décommentez Homepage, améliorez Description
I Écrivez un fichier copyright approprié se basant sur les fichiers amont
I ruby-net-ssh.docs : installez README.rdoc
I ruby-tests.rb : exécuter les tests. Dans ce cas, les lignes suivantessuffisent :$: << ’test’ << ’lib << ’.’
require ’test/test_all.rb’
Tutoriel : la construction de paquets Debian 82 / 87
Pas à pas. . . (3)Lancez la construction. Elle échoue pour deux raisons :
I Vous devez désactiver l’appel au gem dans la batterie de tests.Dans test/common.rb, supprimez la ligne gem "test-unit" :
I edit-patch desactiver-gem.patchI Éditez test/common.rb, supprimez la ligne contenant gem. Quittez le
sous-interpréteurI Décrivez les changements dans debian/changelogI Documentez le correctif dansdebian/patches/desactiver-gem.patch
I Une dépendance de construction ruby-mocha est manquante. Elle estutilisée par la batterie de test (vous pouvez avoir besoin de construirevotre paquet dans un environnement propre avec pbuilder pourreproduire ce problème)
I Ajoutez ruby-mocha au champ Build-Depends du paquetI gem2deb copie les dépendances documentées dans le gem sous
forme de commentaires dans debian/control, mais mocha n’est pasdans la liste des dépendances de développement du gem (c’est unbogue du gem)
Comparez votre paquet avec le paquet ruby-net-ssh présent dans l’archiveDebian Tutoriel : la construction de paquets Debian 83 / 87
Travaux pratiques no 5 : empaqueter un module Perl
1 Jetez un coup d’œil sur la documentation pour la construction de paquetsPerl :
I http://pkg-perl.alioth.debian.org/
I http://wiki.debian.org/Teams/DebianPerlGroup
I dh-make-perl(1), dpt(1) (in the pkg-perl-tools package)
2 Créez un paquet source Debian élémentaire à partir du module Acme deCPAN :dh-make-perl --cpan Acme
3 Améliorez-le pour qu’il devienne un paquet Debian à part entière
Tutoriel : la construction de paquets Debian 84 / 87
dh-make-perl --cpan Acme :I Télécharge l’archive de CPANI Crée une archive .orig.tar.gz adéquate, et la décompresseI Initialise un paquet source Debian basé sur les métadonnées de CPAN
I Named libdistname-perl
Tutoriel : la construction de paquets Debian 85 / 87
Pas à pas. . . (2)
Améliorez le paquet créé :I debian/changelog, debian/compat, debian/libacme-perl.docs, and
debian/watch devraient être corrects
I Éditez debian/control : améliorez Description, et enlevez le texte à la fin
I Éditez debian/copyright : enlevez le premier paragraphe en haut,ajoutez les années du copyright aux paragraphes Files: *
Tutoriel : la construction de paquets Debian 86 / 87
Traduction
Ce tutoriel a été traduit de l’anglais par Cédric Boutillier, Jean-PhilippeMengual et l’équipe francophone de traduction.
Veuillez signaler toute erreur de traduction ou adresser vos commentaires parcourrier électronique, à l’adresse <[email protected]>.
Tutoriel : la construction de paquets Debian 87 / 87