Table des matières
La réécriture de ce tutoriel avec des contenus à jour et des exemples pratiques supplémentaires est disponible sur Guide du responsable Debian. Veuillez utiliser ce nouveau tutoriel comme document principal.
Ce document essaie de décrire aux utilisateurs Debian moyens, et aux développeurs en devenir, la construction d'un paquet Debian. Il utilise un langage pas trop technique et est complété par des exemples, selon le vieux proverbe latin : « Longum iter est per praecepta, breve et efficax per exempla » (c'est long par la règle, court et efficace par l'exemple).
This document is made available for the Debian Buster
release since this offers many translations. This document will be dropped
in the following releases since contents are getting outdated. [1]
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 au format Debian, vous devrez parfois 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. Eh 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. :-) Vous devez en savoir un peu sur la programmation UNIX, mais vous n'avez certainement pas besoin d'être un magicien. [2]
Une chose est sûre, cependant : créer et maintenir correctement des paquets Debian prend beaucoup de temps. Ne vous faites pas d'illusion, pour que votre système fonctionne, les responsables doivent à la fois être techniquement compétents et consciencieux.
Si vous avez besoin d'aide sur l'empaquetage, veuillez consulter Section 1.4, « Où demander de l'aide ».
Les nouvelles versions de ce document devraient toujours être disponibles en ligne sur http://www.debian.org/doc/maint-guide/. La version de référence en anglais est disponible sur http://www.debian.org/doc/maint-guide/index.en.html et dans le paquet maint-guide. La traduction en français est également disponible dans le paquet maint-guide-fr.
Puisqu'il s'agit d'un tutoriel, il a été choisi d'expliquer de façon détaillée chaque étape pour certains sujets importants. Certains d'entre eux pourraient vous sembler hors sujet. Veuillez être patient. Certains cas particuliers ont été sautés, et seuls des liens ont été fournis pour conserver la simplicité de ce document.
Voici quelques observations sur la dynamique sociale de Debian, en espérant qu'elles puissent vous préparer à interagir avec Debian :
Nous sommes tous bénévoles.
Vous ne pouvez pas forcer les autres à faire quoi que ce soit.
Vous devriez être motivé à faire des choses vous-même.
La coopération amicale est la force motrice.
Vos contributions ne devraient pas surmener les autres.
Vos contributions n'ont de sens que si les autres les apprécient.
Debian n'est pas une école où vous attirez automatiquement l'attention des professeurs.
Vous devriez être capable d'apprendre la plupart des choses par vous-même.
L'attention des autres bénévoles est une ressource très rare.
Debian s'améliore sans cesse.
On s'attend à ce que vous fassiez des paquets de haute qualité.
Vous devrez vous adapter vous-même aux modifications.
Plusieurs sortes de personnes ont rapport à Debian avec différent rôles :
auteur amont : la personne qui a créé le programme à l'origine ;
responsable amont : la personne qui maintient actuellement le programme ;
responsable : la personne qui maintient le paquet Debian du programme ;
parrain : une personne qui aide les responsables à envoyer des paquets dans l'archive officielle de paquets Debian (après en avoir vérifié le contenu) ;
mentor : une personne qui aide les responsables débutants pour l'empaquetage, etc. ;
développeur Debian (DD) : un membre du projet Debian avec tous les droits d'envoi vers l'archive officielle de paquets Debian ;
responsable Debian (DM) : une personne avec des droits d'envoi limités vers l'archive officielle de paquets Debian.
Veuillez remarquer qu'il n'est pas possible de devenir développeur Debian (DD) en une nuit car il ne suffit pas de compétences techniques. Veuillez ne pas vous décourager. Si c'est utile à d'autres, vous pouvez toujours envoyer vos paquets, soit en tant que responsable à l’aide d’un parrain, soit comme un responsable Debian.
Remarquez qu'il n'est pas nécessaire de créer de nouveau paquet pour devenir un développeur Debian officiel. Contribuer aux paquets existants peut aussi fournir une voie pour devenir un développeur Debian. Beaucoup de paquets sont en attente de bons responsables (consultez Section 2.2, « Choix du programme »).
Puisque nous nous concentrons dans ce document exclusivement sur les aspects techniques de l'empaquetage, veuillez consulter les documents suivants pour apprendre comment Debian fonctionne et comment vous investir :
Debian : 17 ans de logiciel libre, « do-ocracy » et démocratie (diapositives introductives en anglais)
Comment pouvez-vous aider Debian ? (officiel)
La FAQ Debian GNU/Linux, Chapitre 13 — Participer au projet Debian (semi-officiel)
Wiki Debian, HelpDebian (supplémentaire)
Site du nouveau membre Debian (officiel)
FAQ de Debian Mentors (supplémentaire)
Avant de commencer quoi que ce soit, vous devriez vous assurer d'avoir
correctement installé certains paquets nécessaires au développement. Notez
que la liste ne contient aucun paquet marqué essential
ou
required
(essentiel ou requis) — nous supposons que
ceux-ci sont déjà installés.
Les paquets suivants sont fournis dans l'installation standard de Debian, 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 aptitude show
ou
avec paquet
dpkg -s
.
paquet
Le paquet le plus important à installer sur un système de développement est
build-essential
. Lors de son
installation, il tirera avec lui d'autres paquets
nécessaires à un environnement de compilation de base.
Pour certaines catégories de paquets, c'est tout ce dont vous aurez besoin. Cependant d'autres paquets, bien que non essentiels à toutes les constructions de paquet, sont utiles ou peuvent être nécessaires pour votre paquet :
autoconf
, automake
et autotools-dev
— beaucoup de nouveaux programmes
utilisent des scripts de configuration et des fichiers
Makefile
prétraités à l'aide de programmes comme
ceux-ci (consultez info autoconf
et info
automake
). autotools-dev
conserve les versions à jour de certains de ces fichiers automatiques et
fournit une documentation sur la meilleure façon d'utiliser ces fichiers ;
debhelper
et dh-make
— 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 cela, mais sont fortement
recommandés pour les nouveaux responsables. Ils rendent le processus complet
bien plus facile à démarrer et à contrôler par la suite (consultez
dh_make(8) et debhelper(1)) [3] ;
Le nouveau paquet debmake
peut être
utilisé comme alternative au paquet standard dh-make
. Il est plus puissant et fourni avec une
documentation HTML incluant des exemples complets d’empaquetage dans
debmake-doc
.
devscripts
— ce paquet contient des
scripts utiles pouvant aider les responsables, mais ils ne sont pas
indispensables pour la création de paquets. Les paquets recommandés et
suggérés par celui-ci valent le coup d'œil (consultez
/usr/share/doc/devscripts/README.gz
) ;
fakeroot
— cet utilitaire vous
laisse prétendre être le superutilisateur, ce qui est nécessaire pour
certaines parties du processus de construction (consultez fakeroot(1)) ;
file
— ce programme pratique peut
déterminer la nature d'un fichier (consultez file(1)) ;
gfortran
— le compilateur Fortran 95
de GNU, nécessaire si votre programme est écrit en Fortran (consultez
gfortran(1)) ;
git
— ce paquet fournit un système
populaire de gestion de versions conçu pour manipuler de très gros projets
rapidement et efficacement ; il est utilisé pour des projets libres de
grande envergure, en particulier le noyau Linux (consultez git(1)
et le manuel de Git, /usr/share/doc/git-doc/index.html
).
gnupg
— un outil qui vous permet de
signer numériquement les paquets. Cela 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 (consultez gpg(1)) ;
gpc
— le compilateur Pascal de GNU,
nécessaire si votre programme est écrit en Pascal. Méritant d'être mentionné
ici, fp-compiler
, le compilateur
Pascal libre, convient également (consultez gpc(1),
ppc386(1)) ;
lintian
— c'est le vérificateur de
paquet Debian, qui peut indiquer de nombreuses erreurs courantes après la
construction du paquet et expliquer les erreurs trouvées (consultez
lintian(1) et le manuel utilisateur de Lintian) ;
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 modifiée (consultez patch(1)) ;
patchutils
— ce paquet contient
certains utilitaires pour travailler avec les correctifs comme les commandes
lsdiff, interdiff et
filterdiff ;
pbuilder
— ce paquet contient des
programmes utilisés pour créer et maintenir un environnement
« chrooté ». Construire un paquet Debian dans cet
environnement permet de vérifier les dépendances correctes de construction
et évite les bogues FTBFS (« Fails To Build From Source » pour les échecs de
construction à partir du paquet source) (consultez pbuilder(8) et pdebuild(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 » (consultez perl(1)) ;
python
— Python fait aussi partie
des langages de script les plus utilisés sur le système Debian, combinant
une remarquable puissance et une syntaxe très claire (consultez
python(1)) ;
quilt
— ce paquet aide à gérer un
grand nombre de correctifs en gardant une trace du rôle de chacun. Les
correctifs peuvent être appliqués, enlevés, rafraîchis, etc. (consultez
quilt(1) et /usr/share/doc/quilt/quilt.pdf.gz
) ;
xutils-dev
— 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 (consultez imake(1), xmkmf(1)) ;
Les courtes descriptions données ci-dessus ne servent qu’à vous présenter ce que fait chaque paquet. Avant de continuer, veuillez lire la documentation de chaque programme pertinent, y compris ceux installés par les dépendances du paquet comme make, au moins celle concernant l'utilisation standard. Cela peut vous sembler fastidieux maintenant, mais plus tard vous serez très content de l'avoir fait. Si vous avez des questions particulières par la suite, vous devriez relire les documents mentionnés ci-dessus.
Les documents suivants sont très importants et doivent être lus en parallèle à ce document :
debian-policy
— la Charte Debian inclut 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 (« Filesystem Hierarchy Standard » ou
FHS, qui définit où chaque fichier et répertoire doivent se
trouver), etc. Le plus important pour vous est qu'elle décrive les critères
que chaque paquet doit vérifier pour être inclus dans la distribution
(consultez les copies locales de /usr/share/doc/debian-policy/policy.pdf.gz
et
/usr/share/doc/debian-policy/fhs/fhs-3.0.pdf.gz
) ;
developers-reference
— la Référence du développeur Debian
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,
abandonner, adopter les paquets, faire une NMU (« Non-Maintainer Uploads »
ou mise à jour indépendante), comment gérer les bogues, les meilleures
pratiques d'empaquetage, où et quand faire des envois de
paquets, etc. (consultez la copie locale de
/usr/share/doc/developers-reference-fr/developers-reference.pdf
) ;
Les documents suivants sont importants et doivent être lus en parallèle à ce document :
Le tutoriel des Autotools fournit un très bon tutoriel pour le système de construction GNU connu sous le nom de GNU Autotools dont les composants les plus importants sont Autoconf, Automake, Libtool et gettext ;
gnu-standards
— ce paquet contient
deux documentations issues du projet GNU : les normes GNU de codage, et les informations pour les responsables de programme
GNU. Bien que Debian n'exige pas que ces recommandations soient
suivies, elles sont néanmoins utiles en tant que lignes directrices et bon
sens (consultez les copies locales de
/usr/share/doc/gnu-standards/standards.pdf.gz
et
/usr/share/doc/gnu-standards/maintain.pdf.gz
).
Si ce document contredit n'importe quelle documentation précédente, celle-ci
est prioritaire. Veuillez signaler un bogue sur le paquet maint-guide
avec reportbug.
Voici un autre tutoriel qui peut être lu en parallèle de ce document :
Avant de vous décider à poser publiquement une question, veuillez lire ces excellentes documentations :
fichiers de
/usr/share/doc/
pour
tous les paquets appropriés ;
paquet
contenu de man
pour tous les paquets
appropriés ;
commande
contenu de info
pour tous les paquets
appropriés ;
commande
contenu des archives de la liste de diffusion debian-mentors@lists.debian.org ;
contenu des archives de la liste de diffusion debian-devel@lists.debian.org.
Vous pouvez utiliser les moteurs de recherche web plus efficacement en
indiquant des chaînes de recherche comme
site:lists.debian.org
pour limiter le domaine.
Faire un petit paquet de test est une bonne façon d'apprendre les particularités de l'empaquetage. Examiner les paquets bien maintenus est le meilleur moyen d'apprendre comment les autres font leurs paquets.
Si vous avez encore des questions sur la création de paquets pour lesquelles vous n'avez pas pu trouver de réponse dans la documentation disponible ou sur la toile, vous pouvez les poser de façon interactive :
liste de diffusion debian-mentors@lists.debian.org (cette liste est pour les débutants) ;
liste de diffusion debian-devel@lists.debian.org (cette liste est pour les spécialistes) ;
IRC, par exemple
#debian-mentors
;
équipes se concentrant sur un ensemble particulier de paquets (liste complète à https://wiki.debian.org/Teams) ;
listes de diffusion de certaines langues comme debian-devel-{french,italian,portuguese,spanish}@lists.debian.org ou debian-devel@debian.or.jp (liste complète à https://lists.debian.org/devel.html et https://lists.debian.org/users.html).
Les responsables Debian les plus expérimentés seront heureux de vous aider, si vous demandez correctement après avoir fait les efforts nécessaires.
Quand vous recevrez un rapport de bogue (oui, un vrai rapport de bogue !), vous saurez qu'il est temps de vous plonger dans le système de suivi de bogues Debian et de lire la documentation, pour être à même de gérer les rapports efficacement. La lecture de la référence du développeur Debian, chapitre 5.8. « Manipulation des bogues » est fortement recommandée.
Même si tout fonctionne bien, il est temps de commencer à prier. Pourquoi ? Parce que dans quelques heures (ou jours) les utilisateurs du monde entier vont commencer à utiliser votre paquet, et si vous avez fait des erreurs critiques, vous serez bombardé par les courriers électroniques d'utilisateurs Debian furieux… :-)
Relaxez-vous et soyez prêt pour les rapports de bogues, parce qu'il y aura beaucoup plus de travail à faire avant que votre paquet ne soit parfaitement conforme aux règles Debian (une fois encore, lisez la vraie documentation pour les détails). Bonne chance !
[1] Ce document suppose que vous utilisez un système
Jessie
ou plus récent. Si vous avez l'intention
de suivre ce texte avec un système plus ancien (y compris un ancien système
Ubuntu par exemple), vous devez au moins installer les paquets dpkg
et debhelper
rétroportés.
[2] Vous pouvez apprendre les bases du système Debian à partir de la Référence Debian. Elle contient aussi quelques liens pour apprendre la programmation UNIX.
[3] D'autres paquets plus spécialisés mais similaires existent aussi comme
dh-make-perl
, dh-make-php
, etc.