Logo Debian

Reconstruction d’un paquet Debian

Debian
Shotwell


Vous souhaitez modifier un logiciel empaqueté afin de corriger un bogue, une nouvelle fonctionnalité ou encore pour en analyser les sources ou changer les options de compilation. Je vais ici vous expliquer comment récupérer les sources d’un paquet empaqueter pour Debian, comment le construire puis comment l’installer. Dans cet article, je prendrais Shotwell en exemple.

Préparons le terrain

Avant toute chose, la compilation de paquet et la création d’un .deb nécessite des outils essentiels que nous installons via la commande suivante :

# apt-get install build-essential devscripts fakeroot
  • build-essential apporte les paquets nécessaires à la compilation make, gcc.
  • devscripts apporte notamment mk-build-deps qui nous servira à créer le paquet de dépendance lié aux sources.
  • fakeroot permettra de mettre des droits root sur certains fichiers de l’archive sans utiliser root

Ensuite vous devez avoir spécifié dans votre sources.list les dépôts source, les deb-src. Voici un exemple :

deb http://ftp.fr.debian.org/debian/ jessie main contrib
deb-src http://ftp.fr.debian.org/debian/ jessie main contrib

Si vous n’avez que la première ligne, copier la et changer le deb en deb-src. Cela permettra de récupérer les sources des paquets et pas uniquement le binaire pré-compilé.

Récupération des sources

La commande apt-get permet de récupérer les sources très simplement dans la version disponible sur vos dépôts. Elle va récupérer les sources et les placer dans votre dossier courant. Dans mon cas, je me suis placé dans /tmp/build/shotwell.

$ apt-get source shotwell

Cette commande télécharge les sources dans le dossier courant. Si vous voulez construire le paquet immédiatement vous devez ajouter l’option -b. Cependant si les dépendances, nécessaires à la compilation de votre paquet, ne sont pas installées alors la construction échouera.

Installation des dépendances requises

Afin de pouvoir effectuer la construction du paquet, il est nécessaire que les dépendances requises par la compilation du paquet soit installées. Pour cela, nous avons 2 solutions apt-get ou mk-build-deps.

Via apt-get

Apt-get peut, via l’option build-dep, nous installer l’ensemble des dépendances requises à la compilation de notre paquet.

# apt-get build-deps shotwell

L’avantage de cette solution est qu’elle est simple et rapide. Son désavantage est que la désinstallation de l’ensemble des dépendances installées n’est pas possible de manière automatique.

Via mk-build-deps

mk-build-deps nous créé un méta-paquet ayant pour dépendances tous les paquets nécessaires à la construction de shotwell. Cela a l’avantage de pouvoir installer ou désinstaller toutes les dépendances de manière très simple. Pour construire ce méta-paquet, exécutez la commande suivante :

$ mk-build-deps shotwell

Le méta-paquet se trouve dans le dossier courant sous le nom shotwell-build-deps_0.20.1-1_all.deb. Le nom du méta-paquet dépend du paquet (shotwell), de sa version (0.20.1-1) et de l’architecture pour laquelle est fait le paquet (all).

Pour l’installer, nous utilisons dpkg suivi de apt-get car dpkg ne gère pas les dépendances et je ne sais pas comment dire à apt-get d’installer une archive Debian locale (si quelqu’un peut m’éclairer …).

# dpkg -i shotwell-build-deps_0.20.1-1_all.deb

Les dépendances n’étant pas installé, dpkg s’arrête car les dépendances ne sont pas installées.

Nous utilisons donc maintenant apt-get pour installer les dépendances requises par le paquet shotwell-build-deps

# apt-get -f install

Apt-get va installer les dépendances demandées par l’installation du paquet shotwell-build-deps. L’avantage de cette méthode est que lorsque vous voudrez supprimer l’ensemble des dépendances, vous n’aurez qu’à demander la suppression du paquet shotwell-build-deps.

# apt-get remove shotwell-build-deps
# apt-get autoremove

Passons à la compilation

Les paquets sont livrés avec des règles de compilation du mainteneur pour constituer les paquets Debian. Ces règles se situent dans le fichier debian/rules contenu dans les sources. Nous allons exécuter ces règles afin d’obtenir un .deb.

$ cd shotwell-0.20.1
$ fakeroot debian/rules binary
...
dpkg-deb : construction du paquet « shotwell » dans « ../shotwell_0.20.1-1_amd64.deb ».
dpkg-deb : construction du paquet « shotwell-common » dans « ../shotwell-common_0.20.1-1_all.deb ».
dpkg-deb : construction du paquet « shotwell-dbg » dans « ../shotwell-dbg_0.20.1-1_amd64.deb ».

fakeroot nous créé 3 paquets : shotwell, shotwell-common et shotwell-dbg qu’il place dans le répertoire parent.

Installation du paquet

L’installation de shotwell réclame l’installation de shotwell-common, nous allons donc demander à dpkg de nous installer ces 2 paquets.

# dpkg -i shotwell-common_0.20.1-1_all.deb shotwell_0.20.1-1_amd64.deb

Conclusion

Vous voila avec votre paquet recompiler et installer, vous pouvez maintenant en profiter pour aider les corrections de bogues en reproduisant ceux-ci et en essayant de les corriger. Dans ce cas, l’installation de la version avec les informations de débogage pourra vous servir shotwell-dbg.

Sources:
https://www.debian.org/doc/manuals/maint-guide/build.fr.html
https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.fr.html

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.