Table des matières
Compilation paquet source Debian
Prérequis pour la compilation des sources
Pour compiler les sources d'un paquet Debian, il vous faut les paquets Debian suivants:
- build essential
# apt-get install build-essential
apporte tout ce qu'il faut pour la compilation.
Compilation des sources provenant d'un paquet Debian
Le but est de construire un fichier binaire exécutable (ou plusieurs suivant les applications) à partir des fichiers sources provenant d'un paquet Debian.
L'exemple qui sera utilisé se trouve dans les dépôts source de Debian. Il s'agit du fameux exemple Hello World
:
$ cd travail $ apt-cache search hello $ apt-get source hello
Plusieurs fichiers et répertoire sont apparus dans le répertoire de travail
:
- fichier
hello_x.y.orig.tar.gz
qui est le fichier qui contient les sources duHello World
provenant du site GNU (voir article précédent), - fichier
hello_x.y-revision_debian.debian.tar.gz
qui contient les fichiers pour produire un paquet Debian à partir des sources, - fichier
hello_x.y-revision_debian.dsc
qui contient la description du paquet en (sous forme de texte), - et un répertoire
hello-x.y
qui contient le tout (source originale + information Debian) pour produire un paquet binaire Debian.
Production du paquet binaire à partir des sources:
$ cd hello-x.y # n'oublier pas de remplacer x.y par les bons chiffres/nombres $ dpkg-buildpackage -b
Dans le répertoire parent, on obtient deux fichiers:
- fichier
hello_x.y-revision_debian_i386.changes
qui contient la description du paquet et les changements intervenus dans cette version, - fichier
hello_x.y-revision_debian_i386.deb
qui contient le binaire et les données nécessaires au fonctionnement du binaire.
La commande suivante permet d'extraire les fichiers qui seront installés sur le système:
$ dpkg -x hello_x.y-revision_debian_i386.deb .
Pour juste afficher le contenu, utiliser la commande:
$ dpkg -c hello_x.y-revision_debian_i386.deb
Pour extraire tous les fichiers (binaire et les fichiers Debian de gestion de ce paquet), il faut utiliser la commande:
$ dpkg-deb -R hello_x.y-revision_debian_i386.deb hello
Et enfin pour installer notre paquet Debian fraichement reconstruit:
$ sudo dpkg -i hello_x.y-revision_debian_i386.deb
Création d'un paquet source Debian
Prérequis pour la compilation des sources
Pour créer une paquet Debian, il vous faut les paquets Debian suivants:
- dh-make
# apt-get install dh-make
.
A partir des sources du projet GNU Hello
, nous allons construire un paquet source Debian.
Récupération des sources:
$ wget http://ftp.gnu.org/gnu/hello/hello-2.9.tar.gz
Renommer l'archive des sources pour s'adapter aux règles Debian:
$ mv hello-2.9.tar.gz hello_2.9.orig.tar.gz # faites attention au _
Extraire les fichiers de l'archive:
$ tar xf hello_2.9.orig.tar.gz $ cd hello-2.9
Lancer l'outil Debian de transformation:
$ dh_make # choisir s comme single binary # entrée pour confirmer les champs suivants
Un répertoire debian
a été créé. Les fichiers dans ce répertoire doivent être remplis ou adaptés aux besoins, et notamment les fichiers suivants:
- control: données sur le paquet, description, dépendances
- changelog: données sur les modifications apportées aux sources
- rules: règles de construction du paquet
- copyright: information sur la license
Configurer l'application:
$ ./configure # choisir les options si besoin
Création du paquet source:
$ dpkg-buildpackage -S -us -uc
Cela nous génère les fichiers suivants dans le répertoire parent:
- hello_2.9-1.debian.tar.gz, les sources à la sauce Debian,
- hello_2.9-1.dsc, le fichier de description du paquet,
- hello_2.9-1_source.changes, les modifications apportées à ce paquet.
Pour construire les binaires à partir des sources (si on n'a pas besoin du paquet source, ):
$ dpkg-buildpackage -us -uc # utilise -b : construire un binaire
Ce qui nous génère les fichiers suivants dans le répertoire parent:
- hello_2.9-1_i386.deb, le paquet binaire à installer sur le système,
- hello_2.9-1_i386.changes,
- hello_2.9-1.dsc.
Il ne reste plus qu'à installer ce nouveau paquet binaire:
$ sudo dpkg -i hello_2.9-1_i386.deb