Construction et maintenance des paquets Debian, 1/ mise en place de l’environnement de compilation.
Je commence enfin le tuto sur la construction de paquets pour un OS de type Debian-like. C’est un gros morceau et j’espère ne pas me perdre en route. Un bon début est de lire le Guide du nouveau responsable Debian, d’autres sources peuvent être facilement trouvé comme la documentation de Debian-Facile, la Référence du développeur Debian, Le coin du développeur Debian et d’autres. C’est en grande partie sur celle de Debain-facile que je m’appuierais puisque c’est celle que j’ai utilisé pour moi-même avec quelques adaptations piochés ici ou là.
Pour commencer, je ne vais pas le cacher, c’est compliqué, c’est un format (le .deb) bien foutu mais compliqué par rapport aux formats venu après lui comme le RPM ou les paquets de Archlinux. Le maître mot est patience et persévérance. Patience il va en falloir, car si on va jusqu’au bout de ce raisonnement de la construction de paquets, c’est pour en soi le proposer dans le projet, là va falloir attendre, reprendre les points qui seront pointés, etc…
Ça c’est pour partir sur un paquet depuis zéro, si c’est seulement un rétro portage, ça va vraiment très vite et simplement, bien plus que le RPM pour le coup.
Le truc qui sauve, c’est les outils, ils sont de qualités, ils sont éprouvés, fiables, bien pensés.
Installation des outils de compilation. #
Une documentation claire et compréhensible est disponible, on y voit un exemple concret utilisant les devscripts
, debuild
, apt-utils
… Comme j’ai toujours dit, sous Debian il y a au moins deux façons de faire et c’est la force de cette distribution. Dans notre cas, nous utiliserons les outils mentionnés en plus de dput
, gnupg
, pbuilder
, uscan
, mini-dinstall
et debsign
…
On commence donc par installer ce que l’on aura besoin:
apt install fakeroot devscripts build-essential mini-dinstall gnupg pbuilder
J’explique un minimum ce qui va être installé:
- devscripts est un ensemble d’outils facilitant la vie des développeurs Debian, on y retrouve
uscan
,debsign
dget
,debuild
,uscan
,debi
…(la liste est longue). On verra par la suite l’utilité de chacun; - build-essential est une liste de paquets de construction essentiels;
- mini-dinstall est un démon pour téléverser les paquets Debian venant d’être fait dans un répertoire reconnu et exploitable par les outils APT.
- pbuilder qui permet d’effectuer la compilation dans un chroot, ce qui permet de ne pas “polluer” son système personnel par les dépendances de construction.
Comme je l’ai dis plus haut, avec Debian on a toujours au minimum deux façons de faire, pour exemple au lieu d’utiliser mini-dinstall, j’aurai pu utiliser apt-ftparchive qui fait partie d’apt-utils.
Configuration de son fichier .bashrc #
Nom et adresse électronique du mainteneur #
La plupart des programmes qui recherchent vos nom et adresse électronique de responsable de paquet utilisent les valeurs contenues dans les variables d’environnement DEBFULLNAME et DEBEMAIL ou EMAIL. En les définissant une fois pour toutes, vous vous éviterez de devoir les saisir à de multiples reprises. Si votre shell habituel est bash, il suffit pour cela d’ajouter les deux lignes suivantes dans votre fichier ~/.bashrc (en remplaçant évidemment ces valeurs par celles qui vous correspondent !) :
export EMAIL="monadresse-mail@mail.truc"
export DEBFULLNAME="Sebastien C"
export EDITOR=gedit
Création de sa propre clef #
Avant d’aller plus en avant et de se confronter à une absence de clefs, ce qui n’est pas bien grave pour le moment mais qui peut devenir encombrant si on veut proposer notre paquet au projet, nous allons créer notre clef personnel. Je vais simplement reprendre la doc de Debian-facile parlant de l’utilisation de GnuPG et debsign.
Générer une paire de clés GPG #
Utilisés pour signer (ou chiffrer) les courriels et les paquets Debian.
Installation #
apt-get install gnupg
Génération #
Génération de la clé privée GPG #
gpg --gen-key
Génération du certificat de révocation #
Remplacer XXXXXXXX par l’ID de la clé :
gpg --output revoke.asc --gen-revoke XXXXXXXX
Génération de la clé publique #
gpg --output ~/votre-login.gpg --export votre@adresse-email.org
Génération de la clé publique version ASCII #
gpg --armor --export votre@adresse-email.org
En savoir plus #
GPG Agent #
Pour ne pas avoir à retaper la passphrase à chaque signature, on peut utiliser gpg-agent
, qui fonctionne de la même manière que ssh-agent
. Pour ce faire, il faut rajouter au fichier ~/.gnupg/gpg.conf
le code suivant:
-
use-agent
Signer un paquet avec debsign #
Installation #
apt-get install devscripts
Configuration #
Dans son dossier personnel, ajouter au fichier ~/.devscripts
(à créer s’il n’existe pas) la ligne suivante :
DEBSIGN_KEYID=0xXXXXXXXX
En remplaçant 0xXXXXXXXX par l’id de votre clé GPG.
Utilisation #
debsign nom-du-paquet_version-revision_arch.changes
Je pense avoir fini ce premier point, j’espère en tout cas ne rien avoir oublié, dans le cas contraire, je compléterais.
Commencer la discussion: Venez écrire un commentaire dans le forum.