Préparation d'une source pour la création d'un paquet "Debian/Ubuntu"
Nous allons voir ici comment faire pour préparer la création d'un paquet Debian/Ubuntu “propre” (ou presque) à partir de zéro.
Pour comprendre les étapes nécessaires à la création de ce nouveau paquet, prenons l'exemple de ce logiciel simple AVE.
Exemple du logiciel AVE non compilé et très simple
1. Télécharger les sources du logiciel ave-1.0.tar.gz
2. Décompressez-le dans votre répertoire de travail
3. Analyser ce logiciel pour trouver ce dont il a besoin pour fonctionner, c'est la recherche des dépendances, quels autres paquets Debian ce logiciel nécessite … par exemple dans notre cas il faut
- python
- python-gtk2
Définir le nom du paquet à construire
Dans l'exemple ci-dessus nous voulons construire un paquet deb qui s'appelera :
abuledu-ave_1.0-ryxeo1.deb
Pour obtenir ce résultat, les fichiers suivant doivent contenir
- dans control : abuledu-ave
- dans changelog : abuledu-ave (1.0-ryxeo1)
En regardant après installation dans synaptic, on retrouve les informations, dans l'exemple ci-dessous, le nom déclaré était ave à la place de abuledu-ave et la version était 1.0-lprod1 au lieu de 1.0-ryxeo1.
La description du logiciel provient de la section description du fichier control.
Création des fichiers nécessaires au paquet debian/ubuntu
Un paquet debian/ubuntu doit normalement contenir 8 fichiers de références, control, changelog, copyright, rules, menu, postinst, postrm, prerm.
Pour commencer votre travail de création de paquet, commencez par créer un répertoire “debian” dans vos fichiers sources dans lequel vous mettrez les 8 fichiers suivants.
debian/control
Source: abuledu-ave Section: universe/x11 Priority: extra Maintainer: Eric Seigne <eric.seigne@ryxeo.com> Build-Depends: debhelper Standards-Version: 3.6.2.1 Package: abuledu-ave Architecture: all Depends: python, python-gtk2 Description: ave, petit logiciel pour apprendre a faire un paquet Ce logiciel affiche une boite "hello world" en version romaine
Remplacez les informations et adaptez à votre logiciel en prenant comme modèle l'exemple ci-dessus :
- Source : Le nom de la source du logiciel
- Section : la liste des sections possibles se trouve ici sur le site Debian (anglais)
- Priority : Il existe 5 solutions pour renseigner cette ligne, choisissez celle qui convient le mieux à votre paquet
Niveau | signification |
required | indispensable |
important | doit être dans tout système GNU/Linux |
standard | peut être dans tout système GNU/Linux |
optional | paquets intéressants suivant l'installation réalisée |
extra | paquets optionnels qui simplifient GNU/Linux |
Plus de détails ici : Guide du mainteneur Debian
- Maintainer : Mettez votre prénom, votre nom et votre adresse email valide où l'on peut vous contacter en respectant la structure <adresse_email@fai>
- Architecture:
type d'ordinateur | conditions nécessaires | ce qu'il faut mettre |
Toutes plateformes | Les scripts qui marchent sur toutes les architectures du monde | all ou any |
i386 | Les scripts ne marchent que sur intel386 | i386 |
- Depends (valable aussi pour Build-Depends) : Vous complétez la liste des dépendances du logiciel, par exemple il a besoin de Mencoder, vous mettez mencoder. Si vous souhaitez en plus un contrôle de version, rajoutez (>= 4.0.0), ce qui donne mencoder (>= 4.0.0).
debian/changelog
abuledu-ave (1.0-ryxeo1) dapper; urgency=low * nouvelle version du logiciel * avec la liste des choses qui sont arrivees dans cette version -- Eric Seigne <eric.seigne@ryxeo.com> Wed, 11 Apr 2007 11:03:26 +0200
- Pour ce fichier le nom déclaré, ici abuledu-ave doit parfaitement correspondre à celui déclaré dans le fichier control
- La version du logiciel sera indiquée entre les parenthèses.
debian/copyright
This package was debianized by Eric Seigne <eric.seigne@ryxeo.com> on Wed, 11 Apr 2007 It was downloaded from http://docs.abuledu.org Upstream Author: Autre Développeur <adresse.email@domaine.ext> Copyright: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License with the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
debian/rules
C'est ce fichier qui embarque réellement “l'intelligence” de la création du paquet …
#!/usr/bin/make -f # -*- mode: makefile; coding: utf-8 -*- # # Copyright (c) 2007 Eric Seigne <eric.seigne@ryxeo.com> DEB=debian/abuledu-ave DEST=usr/share/abuledu-ave include /usr/share/cdbs/1/rules/debhelper.mk common-install-indep:: mkdir -p $(DEB)/$(DEST) mkdir -p $(DEB)/usr/bin cp abuledu-ave $(DEB)/usr/bin mkdir -p $(DEB)/usr/share/pixmaps cp debian/abuledu-ave.xpm $(DEB)/usr/share/pixmaps chmod 755 $(DEB)/usr/bin/abuledu-ave chown -R root:root $(DEB)
Remarquez le fichier abuledu-ave.xpm qui est dans le repertoire debian/ en effet le développeur n'a pas distribué d'icone pour son application, le mainteneur de paquet l'ajoute donc, c'est à vous de créer une image d'icone ! Inspirez vous des icones systèmes … ou réutilisez-en une !
debian/menu
C'est le fichier qui détermine le menu qui sera utilisé dans gnome/kde/et autres applications compatibles
?package(abuledu-ave):needs="X11"\ section="XShells"\ hints="AVE"\ title="AbulEdu AVE"\ icon="/usr/share/pixmaps/abuledu-ave.xpm"\ command="/usr/bin/abuledu-ave"
debian/postinst
Si vous avez besoin de lancer une commande spéciale après l'installation du paquet, c'est dans ce fichier que ça se passe
debian/preinst
Si vous avez besoin de lancer une commande spéciale avant l'installation du paquet, c'est dans ce fichier que ça se passe
debian/postrm
Si vous avez besoin de lancer une commande spéciale après la suppression du paquet, c'est dans ce fichier que ça se passe
debian/prerm
Si vous avez besoin de lancer une commande spéciale avant la suppression du paquet, c'est dans ce fichier que ça se passe
Lancer la création du paquet
Vous êtes maintenant dans la situation d'un mainteneur de paquet existant, vous pouvez donc passer à la l'étape suivante …
Pour en savoir plus sur Internet
- Guide officiel Debian du mainteneur de paquet
Revenir au menu Mainteneur