Creer un paquet Debian

Voici la méthode que j'utilise pour créer un paquet Debian en utilisant qmake, dh_make et dpkg-buildpackage.

Installation des paquets nécessaires

Les outils pour la génération de paquets Debian sont :

apt-get install cdbs dh-make fakeroot devscripts

Préparation des sources

  • Nettoyer au maximum l'arbre des sources pour n'avoir que le minimum.
  • Placer les sources dans un répertoire qui porte le nom -

Mon programme utilise Qt, donc j'utilise qmake pour générer un Makefile. Le fichier programme.pro ressemble à cela :

INCLUDEPATH += . /usr/include/sigc++-2.0 TEMPLATE = app TARGET = programme target.path = /usr/bin INSTALLS += target OBJECTS_DIR = tmp CONFIG += qt warn_on unix:LIBS += -lpar2 HEADERS += mainwindow.h FORMS += mainwindow.ui SOURCES += mainwindow.cpp main.cpp

Pour générer le Makefile :

cd <programme>-<version>
qmake programme.pro

Préparation du paquet

La commande dh_make produit un squelette qui va servir à générer le paquet.

DEBFULLNAME="toto" dh_make -e mail@du.responsable -n -s -c gpl

Le paramètre : * -e contient l'email du responsable du paquet * -n produit un paquet natif (paquet fait pour Debian) * -s indique que le programme est un simple executable * -c gpl donne la licence du programme * DEBFULLNAME donne le nom du responsable du paquet

Ensuite on efface les fichiers qui ne servent pas :

rm debian/*.ex debian/*.EX debian/docs debian/dirs

Par défaut dh_make construit un fichier debian/rules générique, on va le remplacer par un script qui utilise cdbs :

#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/qmake.mk
QMAKE=qmake-qt4

Génération du paquet

Il faut indiquer les changements apportés par la nouvelles version :

dch -a
# pour ajouter de nouvelles remarques à la version courante
dch -i
# pour incrementer le numéro de version

Pour générer le paquet :

dpkg-buildpackage -rfakeroot

Le paquet .deb sera généré dan le répertoire parent.

Littérature

  • Le guide du dev Debian : http://www.debian.org/doc/developers-reference/ particulierement le chapitre 6 sur les paquets.
  • Utilisation de cdbs : https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml
  • http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.7
  • http://www.mail-archive.com/debian-med@lists.debian.org/msg01376.html
  • http://wiki.ubuntu.com/MOTU/Packages/DesktopFiles