Ce document essaye de décrire à l'utilisateur Debian courant (et au développeur en devenir) la construction d'un paquet Debian. Il utilise un langage assez courant, et est complété avec des exemples. Il y a un vieux proverbe romain, Longum iter est per preaecepta, breve et efficax per exempla! (C'est long par la règle, court et efficace par l'exemple !).
Une des choses qui font de Debian une distribution de si haut niveau est son système de paquets. Bien qu'il existe une grande quantité de logiciels dans le format Debian, parfois vous devrez installer un logiciel qui ne l'est pas. Vous pouvez vous demander comment faire vos propres paquets et peut-être pensez vous que c'est une tâche très difficile. Éh bien, si vous êtes vraiment un débutant sous Linux, c'est dur, mais si vous étiez un débutant, vous ne seriez pas en train de lire ce document maintenant. :-) Vous devez en savoir un peu sur la programmation Unix, mais vous n'avez certainement pas besoin d'être un magicien.
Une chose est certaine, cependant : pour correctement développer et maintenir des paquets Debian, vous aurez besoin de journées/homme. Ne vous faites pas d'illusion, pour que votre système fonctionne les responsables doivent à la fois être techniquement compétents et rapides.
Ce document va expliquer toutes les étapes les plus petites (et peut-être a priori insignifiantes), vous aider à créer ce premier paquet, et à gagner de l'expérience pour construire les révisions suivantes ainsi peut-être que d'autres paquets.
Les nouvelles versions de ce document devraient toujours être disponible
« online » sur http://www.debian.org/doc/maint-guide/
et dans le paquet « maint-guide
». La traduction en
français est également disponible dans le paquet
« maint-guide-fr
».
Avant de commencer quoi que ce soit, vous devriez vous assurer que vous avez correctement installé certains paquets supplémentaires nécessaires pour le développement. Notez que la liste ne contient aucun paquet marqué « essentiel » ou « requis » - nous supposons que vous avez déjà installé ceux-ci.
Cette version du document a été mise à jour pour les paquets de Debian 2.2 (« potato ») et 3.0 (« woody »).
Les paquets suivants sont fournis dans l'installation standard de Debian 2.1, de sorte que vous les avez probablement déjà (ainsi que les paquets supplémentaires dont ils dépendent). Néanmoins, vous devriez le vérifier avec « dpkg -s <paquet> ».
dpkg-dev
- ce paquet contient les outils nécessaires pour
dépaqueter, construire et télécharger les paquets sources Debian. (voir
dpkg-source(1)
)
file
- ce programme bien pratique peut déterminer la nature d'un
fichier. (voir file(1)
)
gcc
- Le compilateur C de GNU, nécessaire si votre programme,
comme la plupart, est écrit en C (voir gcc(1)
). Ce paquet va
aussi « attirer » plusieurs autres paquets tels que
binutils
qui inclut les programmes utilisés pour assembler et lier
des fichiers objets (voir « info binutils » dans le paquet
binutils-doc
) et cpp
, le préprocesseur C (voir
cpp(1)
).
g++
- le compilateur C++ de GNU, nécessaire si votre programme est
écrit en C++ (voir g++(1)
).
libc6-dev
- Les bibliothèques et fichiers d'en-tête C dont gcc a
besoin pour les lier aux fichiers objets créés (voir « info libc »
dans le paquet glibc-doc
).
make
- d'ordinaire, la création d'un programme prend plusieurs
étapes. Plutôt que d'avoir à taper les mêmes commandes encore et encore, vous
pouvez utiliser ce programme pour automatiser le processus, en créant des
fichiers « Makefile » (voir « info make »).
patch
- ce programme très utile prend un fichier contenant une
liste de différences (produite par le programme diff) et l'applique au fichier
original, produisant une version mise à jour. (voir patch(1)
)
perl
- Perl est un des langages de script les plus utilisés sur
les systèmes modernes similaires à Unix, souvent qualifié de
« tronçonneuse suisse d'Unix ». (voir perl(1)
)
Vous devrez probablement aussi installer les programmes suivants.
autoconf
et automake
- beaucoup de nouveaux
programmes utilisent des scripts de configuration et des fichiers Makefile
pré-traités à l'aide de programmes comme ceux-ci (voir « info
autoconf », « info automake »).
dh-make
et debhelper
- dh-make est nécessaire pour
créer le squelette de notre exemple de paquet et il utilise certains outils de
debhelper pour créer les paquets. Ils ne sont pas indispensables pour la
création des paquets, mais ils sont fortement recommandés pour
les nouveaux responsables. Ils rendent le processus complet bien plus facile à
démarrer, et à contrôler par après. (voir dh_make(1)
,
debhelper(1)
, /usr/share/doc/debhelper/README)
devscripts
- ce paquet contient de jolis scripts utiles qui
peuvent aider les responsables, mais ils ne sont pas indispensables pour la
création de paquets. (voir /usr/share/doc/devscripts/README.debian.gz)
fakeroot
- cet utilitaire vous laisse prétendre être root, ce qui
est nécessaire pour certaines parties du processus de construction. (voir
fakeroot(1)
)
gnupg
- un outil qui vous permet de signer numériquement
les paquets. Ceci est spécialement important si vous comptez les distribuer à
d'autres personnes, et c'est certainement ce que vous ferez quand votre travail
sera inclus dans la distribution Debian (voir gpg(1)
).
g77
- le compilateur FORTRAN de GNU, nécessaire si votre programme
est écrit en FORTRAN (voir g77(1)
).
gpc
- le compilateur Pascal de GNU, nécessaire si votre programme
est écrit en Pascal. Digne d'être mentionné ici, fp-compiler
, le
compilateur pascal libre, est également bon pour cette tâche (voir
gpc(1)
, ppc386(1)
).
xutils
- certains programmes, d'ordinaire ceux conçus pour X11,
utilisent aussi ces programmes pour générer les fichiers Makefile à partir d'un
ensemble de fonctions macros (voir imake(1)
,
xmkmf(1)
).
lintian
- c'est le vérificateur de paquet Debian, qui peut vous
indiquer de nombreuses erreurs courantes après que vous ayez construit le
paquet et expliquer les erreurs trouvées. (voir lintian(1)
,
diffstat(1)
, /usr/share/doc/lintian/lintian.html/index.html)
Enfin, ces paquets très importants doivent être lus en parallèle à ce document :
debian-policy
- les Normes incluent des explications sur la
structure et le contenu de l'archive Debian, plusieurs considérations sur
l'architecture du système d'exploitation, la Norme de hiérarchie des fichiers
(qui dit où chaque fichier et répertoire doit aller), etc. Le plus important
pour vous est qu'il décrit les critères que chaque paquet doit vérifier pour
être inclus dans la distribution. (voir
/usr/share/doc/debian-policy/policy.html/index.html)
developers-reference
- concerne tout ce qui n'est pas spécifique
aux détails techniques de la création de paquets, comme la structure des
archives, comment renommer, rendre orphelin, choisir un paquet, faire un NMU
(une version du paquet non faite par le responsable), comment gérer les bogues,
où et quand télécharger, etc. (voir
/usr/share/doc/developers-reference/developers-reference.fr.html/index.fr.html)
Les courtes descriptions qui sont données ci-dessus ne servent que d'introduction à ce que fait chaque paquet. Avant de continuer, veuillez lire attentivement la documentation de chaque programme, au moins l'usage standard. Cela peut vous sembler fastidieux maintenant, mais plus tard vous serez très content de l'avoir fait.
Remarque : debmake
est un paquet qui contient certains
programmes qui fonctionnent d'une manière similaire à dh-make, mais son usage
spécifique n'est pas couvert dans ce document, parce qu'il est
obsolète. Veuillez lire le Debmake manual
pour plus
d'information.
Vous pouvez faire deux types de paquets : source et binaire. Un paquet source contient le code que vous pouvez compiler en un programme. Un paquet binaire contient juste le programme fini. Ne mélangez pas les termes comme source du programme et le paquet source du programme ! Veuillez lire les autres manuels si vous avez besoin de plus de détails sur la terminologie.
Debian utilise le terme « responsable » pour la personne qui fait des paquets, « auteur » pour la personne qui a fait le programme, et « responsable amont » pour la personne qui maintient le programme actuellement. D'ordinaire l'auteur et le responsable amont sont une seule et même personne. Si vous avez écrit un programme, et que vous voulez qu'il soit dans Debian, vous pouvez remplir une demande pour devenir un responsable.
Après avoir construit votre paquet (ou pendant la création), vous devrez devenir responsable Debian officiel si vous souhaitez que votre programme soit dans la prochaine distribution (si le programme est utile, pourquoi pas ?) Ce processus est expliqué dans la Référence du développeur. Veuillez le lire.
Guide du nouveau responsable Debian
version 1.2, 6 avril 2002.joy-mg@debian.org
frederic.dumont@easynet.be