4. L’empaquetage de nouveaux logiciels¶
Bien qu’il existe des milliers de paquets dans l’archive d’Ubuntu, il y en reste encore beaucoup que personne n’a pu obtenir jusqu’à maintenant. S’il existe une nouvelle et passionnante partie de logiciel pour laquelle vous sentez le besoin d’une exposition plus large, peut-être voudriez-vous vous essayer à la création d’un paquet pour Ubuntu ou d’un PPA. Ce guide vous mènera à travers les étapes d’empaquetage de nouveaux logiciels.
Vous aurez envie en premier lieu de lire l’article Mise en route afin de préparer votre environnement de développement.
4.1. Vérification du programme¶
La première étape de l’empaquetage est d’obtenir le fichier .tar issu de l’amont (nous appelons les auteurs d’applications « l’amont ») et de vérifier qu’il se compile et s’exécute.
Ce guide vous mènera à travers l’empaquetage d’une application simple, appelée GNU Bonjour, postée sur GNU.org.
Download GNU Hello:
$ wget -O hello-2.10.tar.gz "http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz"
Now uncompress it:
$ tar xf hello-2.10.tar.gz
$ cd hello-2.10
Cette application utilise le système de construction autoconf, nous exécuterons donc ./configure
pour préparer la compilation.
Cela vérifiera les dépendances de construction nécessaires. Comme bonjour
est un exemple simple, build-essential
doit fournir tout ce dont nous avons besoin. Pour les programmes plus complexes, la commande échouera si vous n’avez pas les bibliothèques et les fichiers de développement nécessaires. Installez les paquets nécessaires et recommencez jusqu’à ce que la commande s’exécute avec succès.:
$ ./configure
Maintenant vous pouvez compiler la source :
$ make
Si la compilation se termine avec succès, vous pouvez installer et exécuter le programme :
$ sudo make install
$ hello
4.2. Commencer un paquet¶
bzr-builddeb
includes a plugin to create a new package from a template. The
plugin is a wrapper around the dh_make
command. Run the command providing
the package name, version number, and path to the upstream tarball:
$ sudo apt-get install dh-make bzr-builddeb
$ cd ..
$ bzr dh-make hello 2.10 hello-2.10.tar.gz
Lorsqu’il vous est demandé le type de paquet, entrez s
pour binaire unique. Ceci importera le code dans une branche et ajoutera le répertoire d’empaquetage debian/
. Jetez un œil sur son contenu. La plupart des fichiers ajoutés ne sont nécessaires que pour les paquets spécialisés (tels que les modules d’Emacs) de sorte que vous pouvez commencer par supprimer les fichiers optionnels d’exemple :
$ cd hello/debian
$ rm *ex *EX
Vous devriez maintenant personnaliser chacun des fichiers.
In debian/changelog
change the
version number to an Ubuntu version: 2.10-0ubuntu1
(upstream version 2.10,
Debian version 0, Ubuntu version 1). Also change unstable
to the current
development Ubuntu release such as trusty
.
Le gros du travail de construction de paquet est réalisé par une série de scripts appelée debhelper
. Le comportement exact de debhelper
change avec les nouvelles versions majeures, le fichier compat indique à debhelper
à quelle version se conformer. Vous souhaiterez généralement régler ce paramètre à la version la plus récente qui est 9
.
control
contient toutes les métadonnées du paquet. Le premier paragraphe décrit le paquet source. Les paragraphes suivants décrivent les paquets binaires à construire. Nous aurons besoin d’ajouter à Build-Depends:
les paquets nécessaires pour compiler l’application. Pour bonjour
, assurez-vous qu’il comprend au moins :
Build-Depends: debhelper (>= 9)
Vous devrez également remplir une description du programme dans le champ Description:
.
Le copyright
doit être rempli pour suivre la licence de la source en amont. Selon le fichier bonjour/COPYING, il s’agit de la licence GNU GPL 3 ou ultérieure.
docs
contient les fichiers de documentation de l’amont qui, selon vous, devraient être inclus dans le paquet final.
README.source
et README.Debian
ne sont nécessaires que si votre paquet possède une caractéristique non standard, ce qui n’est pas le cas donc vous pouvez les supprimer.
source/format
peut être laissé tel quel, il décrit le format de version du paquet source et devrait être 3.0 (quilt)
.
rules
est le fichier le plus complexe. Il s’agit d’un Makefile qui compile le code et le transforme en un paquet binaire. Heureusement, le gros du travail se fait de nos jours automatiquement à l’aide de debhelper 7
de telle sorte que la cible universelle %
du Makefile lance uniquement le script dh
qui exécute toutes les opérations nécessaires.
Tous ces fichiers sont expliqués plus en détail dans l’article aperçu du répertoire Debian.
Enfin, soumettez le code à votre branche d’empaquetage :
$ bzr add debian/source/format
$ bzr commit -m "Initial commit of Debian packaging."
4.3. Construisez le paquet¶
Maintenant, nous devons vérifier que notre empaquetage compile le paquet correctement et construit le paquet binaire .deb :
$ bzr builddeb -- -us -uc
$ cd ../../
bzr builddeb
est une commande pour construire le paquet dans son emplacement actuel. Le -us -uc
indique que GPG n’a pas besoin de signer le paquet. Le résultat sera placé dans le dossier ..
.
Vous pouvez afficher le contenu du paquet avec :
$ lesspipe hello_2.10-0ubuntu1_amd64.deb
Install the package and check it works (later you will be able to uninstall it
using sudo apt-get remove hello
if you want):
$ sudo dpkg --install hello_2.10-0ubuntu1_amd64.deb
You can also install all packages at once using:
$ sudo debi
4.4. Étapes suivantes¶
Even if it builds the .deb binary package, your packaging may have
bugs. Many errors can be automatically detected by our tool
lintian
which can be run on the source .dsc metadata file, .deb
binary packages or .changes file:
$ lintian hello_2.10-0ubuntu1.dsc
$ lintian hello_2.10-0ubuntu1_amd64.deb
To see verbose description of the problems use --info
lintian flag
or lintian-info
command.
For Python packages, there is also a lintian4python
tool that provides
some additional lintian checks.
Après avoir établi un correctif pour l’empaquetage, vous pouvez le reconstruire en utilisant -nc
pour « no clean » afin d’éviter d’avoir à le reconstruire à partir de zéro :
$ bzr builddeb -- -nc -us -uc
Après avoir vérifié que le paquet est construit localement, vous devez vous assurer qu’il peut se compiler sur un système propre à l’aide de pbuilder
. Puisque nous allons bientôt l’ajouter à un PPA (Personal Package Archives), ce téléchargement doit être signé pour permettre à Launchpad de vérifier que le téléchargement émane de vous (vous pouvez dire que le téléchargement sera signé car les options -us
et -uc
ne sont pas transmises à bzr builddeb
comme auparavant). Pour que la signature fonctionne, vous devez avoir configuré GPG. Si vous n’avez pas encore configuré pbuilder-dist
ou GPG, faites le maintenant :
$ bzr builddeb -S
$ cd ../build-area
$ pbuilder-dist trusty build hello_2.10-0ubuntu1.dsc
Lorsque vous serez satisfait de votre paquet, vous souhaiterez en obtenir la relecture par d’autres. Vous pouvez télécharger la branche vers Launchpad pour la relecture :
$ bzr push lp:~<lp-username>/+junk/hello-package
Le télécharger vers un PPA assurera qu’il se construit et donnera un moyen aisé pour vous et les autres de tester les paquets binaires. Vous avez besoin de configurer un PPA dans Launchpad puis de télécharger avec dput
:
$ dput ppa:<lp-username>/<ppa-name> hello_2.10-0ubuntu1.changes
You can ask for reviews in #ubuntu-motu
IRC channel, or on the
MOTU mailing list. There might also be a more specific
team you could ask such as the GNU team for more specific questions.
4.5. Soumettez pour inclusion¶
Il existe nombre de chemins que peut emprunter un paquet pour entrer dans Ubuntu. Dans la plupart des cas, passer par Debian en premier peut s’avérer la meilleure voie. Cette façon vous assure que votre paquet atteindra le plus grand nombre d’utilisateurs, car il sera disponible non seulement dans Debian et Ubuntu, mais également dans l’ensemble de leurs dérivés. Voici quelques liens utiles pour soumettre de nouveaux paquets à Debian :
Debian Mentors FAQ - debian-mentors is for the mentoring of new and prospective Debian Developers. It is where you can find a sponsor to upload your package to the archive.
Work-Needing and Prospective Packages - Information on how to file « Intent to Package » and « Request for Package » bugs as well as list of open ITPs and RFPs.
Debian Developer’s Reference, 5.1. New packages - The entire document is invaluable for both Ubuntu and Debian packagers. This section documents processes for submitting new packages.
In some cases, it might make sense to go directly into Ubuntu first. For instance, Debian might be in a freeze making it unlikely that your package will make it into Ubuntu in time for the next release. This process is documented on the « New Packages » section of the Ubuntu wiki.
4.6. Captures d’écran¶
Une fois que vous avez téléversé un paquet vers debian, vous devez ajouter des captures d’écran pour permettre aux utilisateurs potentiels de voir à quoi le programme ressemble. Elles doivent être téléversées sur http://screenshots.debian.net/upload.