6. 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.
6.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.
Si vous n’avez pas les outils de compilation, assurez-vous de les obtenir au préalable. De même, si vous n’avez pas les dépendances requises, installez-les également.
Installez les outils de compilation :
$ sudo apt-get install build-essential
Téléchargez le paquet principal :
$ wget -O hello-2.7.tar.gz "http://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz"
Maintenant, décompressez le paquet principal :
$ tar xf hello-2.7.tar.gz
$ cd hello-2.7
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
6.2. Commencer un paquet¶
bzr-builddeb inclut un greffon pour créer un nouveau paquet à partir d’un modèle. Ce greffon est une surcouche de la commande dh_make. Ces programmes devraient déjà être présents si vous avez installé packaging-dev. Exécutez la commande fournissant le nom du paquet, le numéro de version et le chemin vers l’archive de l’amont :
$ sudo apt-get install dh-make
$ cd ..
$ bzr dh-make hello 2.7 hello-2.7.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.7-0ubuntu1 (upstream version 2.7, 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 commit -m "Initial commit of Debian packaging."
6.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.7-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.7-0ubuntu1_amd64.deb
You can also install all packages at once using:
$ sudo debi
6.4. Étapes suivantes¶
Même si votre paquet binaire .deb est construit, l’empaquetage peut contenir des bogues. De nombreuses erreurs peuvent être détectées automatiquement par notre outil lintian pouvant être exécuté soit sur le fichier source de métadonnées .dsc, soit sur le paquet binaire .deb :
$ lintian hello_2.7-0ubuntu1.dsc
$ lintian hello_2.7-0ubuntu1_amd64.deb
Une description de chacun des problèmes rapportés est disponible sur le site Internet lintian.
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.7-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.7-0ubuntu1.changes
Voir téléchargement pour plus d’informations.
Vous pouvez demander des relectures sur le canal IRC #ubuntu-motu, ou sur la liste de diffusion MOTU. Vous pourriez également interroger une équipe plus spécifique, comme l’équipe de GNU pour des questions plus pointues.
6.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 :
La foire aux questions Debian Mentors FAQ des tuteurs Debian existe pour le tutorat des nouveaux et futurs développeurs Debian. C’est là que vous trouverez un parrain pour télécharger votre paquet vers l’archive.
Paquets en devenir ou en cours de travail - Renseignements sur la façon de déposer des « intentions de Paquets » et des « Requêtes pour les bogues de Paquet » mais aussi la liste de ces Intentions et Requêtes actuellement ouvertes.
Référence du développeur Debian, 5.1. Les nouveaux paquets - L’ensemble du document est inestimable tout autant pour les empaqueteurs Ubuntu ou Debian. Cette section documente les processus de soumission de nouveaux paquets.
Dans certains cas, il peut être judicieux d’aller directement dans Ubuntu en premier. Par exemple, Debian peut se trouver en phase de gel rendant peu probable le fait que votre paquet fasse partie d’Ubuntu à temps pour la prochaine version. Ce processus est documenté dans la section « Nouveaux paquets » du wiki d’Ubuntu.
6.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.