Projet

Général

Profil

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 que dh_make a créé)
  • il n'est plus nécessaire de gérer des fichiers debian/postinst ni debian/prerm, les scripts automatiques de debhelper 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 fichier debian/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
Redmine Appliance - Powered by TurnKey Linux