Table des matières

Comment recompiler un paquet Debian

Variables d'environnement

On doit définir 3 variables d'environnement (si le shell est bash, voici les lignes à rajouter) :

.bashrc
[...]

# For build .deb
DEBEMAIL=""
DEBFULLNAME=""
export DEBEMAIL DEBFULLNAME

export QUILT_PATCHES=debian/patches

Il faut définir DEBEMAIL et DEBFULLNAME.

Les sources

Dans le(s) dépôt(s) officiel(s)

Si le paquet existe déjà, on peut récupérer les sources amonts à partir du dépôt, il faut « décommenter » la ligne deb-src dans le fichier /etc/apt/sources.list.

apt source nom-du-paquet

Parfois les « sources » contiennent des patches, mais l'on ne souhaite pas les appliquer dans l'immédiat. Voici la démarche à suivre.

1. On télécharge les sources sans effectuer la décompression de l'archive

apt-get --download-only source nom-du-paquet

2. On extrait l'archive

dpkg-source --skip-patches -x nom-du-paquet.dsc

À partir du dossier debian/

Ce dossier contient plusieurs fichiers, notamment changelog et watch. On peut utiliser l'utilitaire uscan (paquet devscript) pour télécharger les sources.

La commande uscan ne doit pas être lancée dans le dossier debian/.

uscan « lit » la première ligne (cela correspond à la dernière version) du fichier changelog. Il va ensuite créer un lien symbolique.

uscan --force-download

Si il n'existe pas de fichier watch, on télécharge les sources de manière classique.

Gérer les patches

Consultez la page dédiée à cette partie.

Mettre à jour debian/changelog

Une fois que l'on a fait les modifications souhaitées on peut mettre à jour le fichier debian/changelog.

dch --local pseudo

pseudo est un suffixe qui sera rajouté au paquet pour indiquer que le paquet a été reconstruit.

Recompiler

dpkg-buildpackage -us -uc -tc

Les options -us -uc évite une erreur lors de la signature du paquet (c'est pas indispensable dans notre cas).

Installation

Pour installer le (ou les) .deb.

dpkg -i *.deb

Conclusion

On peut conserver l'archive qui correspond au dossier debian/ pour une mise à jour ultérieure.