Créer un paquet deb en 2024¶
En quinze ans, les développeurs Debian ont créé de nouveaux outils de développement et de vérification. Ce début d'article reprend en grande partie ce qui avait été rédigé dans la passé, et qui reste ci-dessous.
Installer le minimum vital¶
sudo apt install devscripts debhelper fakeroot lintian quilt
Créer l'arborescence debian¶
- faites en sorte que le nom de répertoire de votre application se termine par un numéro de version, comme : « machin-2.0.1 »
cd <répertoire de votre application>
(par exemple :cd machin-2.0.1
)dh_make -s -c gpl3 --createorig
La commande dh_make
crée l'arborescence debian ; avec l'option --createorig, une archive des sources amont est créée, sous un nom de fichier comme machin_2.0.1.orig.tar.xz; tous les fichiers sous le nouveau répertoire debian/
sont pré-remplis avec des données par défaut raisonnables, et des commentaires donnant des conseils.
Pour les logiciels « ordinaires », il est possible de supprimer plusieurs des fichiers créés par dh_make
: machin-docs.docs, postinst.ex, README.source, watch.ex, manpage.1.ex, postrm.ex, manpage.md.ex, preinst.ex, salsa-ci.yml.ex, machin.cron.d.ex, manpage.sgml.ex, prerm.ex, machin.doc-base.ex, manpage.xml.ex, README.Debian
Il faut par contre conserver les fichiers changelog, control, copyright, rules, et les dossiers source, upstream
Tester la compilation et l'empaquetage¶
Lancer la commande
$ debuild
Si votre ordinateur possède tous les paquets dont dépend la compilation (par exemple les bibliothèques de développement de Qt4 ou Qt5 ou Qt6), la compilation peut être réussie du premier coup ; ensuite, debuild
continue à travailler en réalisant le paquet debian.
Si tout se passe bien, à la fin, debuild
lance la commande lintian
, qui vérifie scrupuleusement si tout va bien dans les sources et dans le système d'empaquetage en général. La première fois, lintian
se comporte de façon très malpolie et dit beaucoup de mal du paquet ... par exemple, ça râle parce que le fichier debian/copyright n'est pas correct, que le fichier debian/control
n'a pas une description qui va bien, et encore d'autres vertes et des pas mûres.
En général, c'est bien de lire les messages de lintian
et d'essayer d'y remédier.
S'assurer que le paquet debian installe tout au bon endroit¶
Parmi les messages de lintian
, il se peut que soit mentionné que le « paquet généré ne contient rien du tout » !
Dans ce cas, le plus simple c'est de voir, en fin de compilation, où se trouvent dans l'arborescence les fichiers importants à installer. Puis on crée un fichier deb/machin.install (remplacer machin par le vrai nom du paquet), avec un contenu qui ressemble à ceci :
machin usr/bin data usr/share/machin images usr/share/machin machin.desktop usr/share/applications
Si on regarde les lignes ci-dessus, on voit que le fichier exécutable machin
doit être copié dans un répertoire /usr/bin
, que les répertoires data
et images
iront sous un répertoire /usr/share/machin
et que le fichier de description d'application (aussi nommé lanceur d'application) machin.desktop
ser installé sous le répertoire /usr/share/applications
*N.B.* : tous les répertoires de la deuxième colonne sont créés automatiquement au besoin, inutile de préciser les droits des fichiers installés sous /usr/bin, le droit d'exécution sera ajouté automatiquement, inutile de créer « manuellement » un script de post-installation pour que le lanceur d'application soit signalé dans les menus ... tout ça, debuild
le prend en charge, grâce à l'invocation d'une série de scripts du paquet debhelper.
autres fichiers comme machin.install
que debuild
sait exploiter¶
De même que debuild
prend en considération un fichier debian/machin.install
pour tout ce qui est de mettre en place des fichiers, cette commande prend aussi en considération debian/machin.manpages
(une simple liste de fichiers au format de manuel), debian/machin.links
(un texte en deux colonnes : nom du lien ... cible du lien symbolique), pour créer respectivement des installations de pages de manuel (et la post-installation qui va avec) et des mises en places de liens symboliques.
Méthode précédente (valide en 2011)¶
La lecture de cette partie reste pertinente : une bonne part des structures présentées sont valides, comme par exemple la structure des fichiers debian/control
, debian/leterrier-calc-cap.desktop
Cependant, ...
- le format du fichier
debian/copyright
obéit à de nouveaux standards (expliqués dans le modèle quedh_make
a créé) - il n'est plus nécessaire de gérer des fichiers
debian/postinst
nidebian/prerm
, les scripts automatiques dedebhelper
prennent ça en charge - le fichier
debian/rules
ainsi que les appel àcdbs
qui y sont présents sont dorénavant considérés comme obsolètes (et ne font plus l'objet de mises à jour ou de développements) ;dh_make
met en place un fichierdebian/rules
extrêmement simple qui est suffisant dans la plupart des cas - il est déconseillé de produire des paquets debian « natifs », particulièrement pour des paquets abuledu ou leterrier : en effet ceux-ci n'ont rien de natif en ce sens qu'on doit aussi pouvoir les empaqueter pour d'autres distributions que Debian. « Natif », ça veut dire spécifique à la distribution Debian et aucune autre.
Installer le minimum vital¶
sudo apt-get install devscripts cdbs debhelper bzr-builddeb
Créer l'arborescence debian¶
- cd <répertoire de votre application>
- mkdir debian: crée un répertoire debian ;)
- dch --create: crée un fichier debian/changelog dont le contenu doit ressembler à ceci:
leterrier-calc-cap (0.1) jaunty; urgency=low * premiere version, premier package debian * reste a ajouter les en-tetes GPL dans le code -- Eric Seigne <eric.seigne@ryxeo.com> Sat, 26 Jun 2010 00:08:24 +0200
- gedit debian/control:
Source: leterrier-calc-cap Section: misc Priority: extra Maintainer: Eric Seigne <eric.seigne@ryxeo.com> Build-Depends: cdbs, qt4-qmake, libqt4-dev Standards-Version: 3.8.3 Homepage: http://www.abuledu.org/leterrier/ Package: leterrier-calc-cap Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libqt4-xml Description: Calculette capricieuse (Le Terrier d'AbulEdu) Une calculette tres speciale a decouvrir ... ce logiciel fait partie du Terrier d'AbulEdu
- gedit debian/copyright:
Copyright (C) 2010 Fahim Idri <fahim.idri@ryxeo.com> Copyright (C) 2010 Eric Seigne <eric.seigne@ryxeo.com> 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; version 2 of the License. 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 along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. see /usr/share/common-licenses/GPL-2 for the complete text of the license.
- gedit debian/leterrier-calc-cap.desktop
[Desktop Entry] Name=AbulEdu Calculette capricieuse Comment=Une calculette spéciale ... TryExec=calculette-v2 Exec=calculette-v2 %U Icon=leterrier-calc-cap.png StartupNotify=true NoDisplay=true Terminal=false Type=Application Categories=GNOME;Qt;Education;
- gedit debian/postinst
#!/bin/bash xdg-desktop-menu install --novendor /usr/share/applications/leterrier-calc-cap.desktop #DEBHELPER#
- gedit debian/prerm
#!/bin/bash xdg-desktop-menu uninstall /usr/share/applications/leterrier-calc-cap.desktop #DEBHELPER#
- gedit debian/rules
#!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/qmake.mk # Add here any variable or target overrides you need. QMAKE=qmake-qt4 CFLAGS=-O3 CXXFLAGS=-O3 install/leterrier-calc-calc:: mkdir -p $(CURDIR)/debian/leterrier-calc-cap/usr/bin/ mkdir -p $(CURDIR)/debian/leterrier-calc-cap/usr/share/leterrier-calc-cap/{lang,conf,data} mkdir -p $(CURDIR)/debian/leterrier-calc-cap/usr/share/applications install -D --mode=0644 $(CURDIR)/calculette-v2 $(CURDIR)/debian/leterrier-calc-cap/usr/bin/calculette-v2 install -D --mode=0644 $(CURDIR)/debian/*.desktop $(CURDIR)/debian/leterrier-calc-cap/usr/share/applications/ install -D --mode=0644 $(CURDIR)/lang/*.qm $(CURDIR)/debian/leterrier-calc-cap/usr/share/leterrier-calc-cap/lang install -D --mode=0644 $(CURDIR)/conf/* $(CURDIR)/debian/leterrier-calc-cap/usr/share/leterrier-calc-cap/conf install -D --mode=0644 $(CURDIR)/data/* $(CURDIR)/debian/leterrier-calc-cap/usr/share/leterrier-calc-cap/data
Créer le paquet deb¶
- Si vous partez des sources issues d'un dépôt bzr pensez à ne pas inclure le .bzr dans votre paquet ... la commande ci-dessous fait tout à votre place :)
bzr builddeb --native --export-upstream=. --build-dir=/tmp/build
- Si vous partez des sources issues n'ayant pas de .bzr
debuild