La qualité de Debian est principalement due à la charte Debian
qui
définit explicitement les obligations que tous les paquets doivent suivre.
Mais c'est également grâce à une histoire partagée d'expériences qui va au-delà
de la charte Debian, une accumulation d'années d'expérience pour la
construction des paquets ; des développeurs de grand talent ont créé de
bons outils qui vous aideront, vous, responsable Debian, à créer et maintenir
d'excellents paquets.
Ce chapitre fournit les meilleurs pratiques pour les développeurs Debian. Ce ne sont que des recommandations, non pas des obligations ou des règles. Ce sont seulement des astuces et conseils subjectifs et des liens collectés pour les développeurs Debian. Prenez et choisissez ce qui vous convient le mieux.
debian/rules
Les recommandations suivantes s'appliquent au fichier
debian/rules
. Comme ce fichier contrôle le processus de
compilation et qu'il sélectionne les fichiers inclus dans le paquet
(directement ou indirectement), il s'agit habituellement du fichier sur lequel
les responsables passent le plus de temps.
La raison sous-jacente à l'utilisation des scripts d'aide dans le fichier
debian/rules
est que cela permet aux responsables d'utiliser et de
partager une logique commune pour un grand nombre de paquets. Prenez, par
exemple, l'installation des entrées de menu : vous avez besoin de placer
un fichier dans /usr/lib/menu
et d'ajouter des commandes aux
scripts de maintenance pour enregistrer et désenregistrer ces entrées de menu.
Comme il s'agit d'une chose très commune, pourquoi chaque responsable
devrait-il écrire sa propre version, parfois avec des bogues ? Supposons
également que le répertoire de menu soit modifié, chaque paquet devrait être
modifié.
Les scripts d'aide peuvent résoudre ces problèmes. En supposant que vous vous conformiez aux conventions attendues par le script d'aide, celui-ci prend soin de tous les détails. Les changements dans la charte peuvent alors être faits dans le script d'aide, les paquets ont alors simplement besoin d'être reconstruits avec la nouvelle version du script et sans aucun changement supplémentaire.
L'Aperçu des outils du responsable Debian, Annexe
A contient plusieurs systèmes d'aide. Le plus courant et le meilleur (à
notre avis) système est debhelper
. Les précédents systèmes d'aide
comme debmake
étaient « monolithiques » : vous ne
pouviez pas choisir quelles parties intéressantes vous pouviez utiliser, mais
vous étiez obligé de choisir le système pour tout faire.
debhelper
, à l'inverse, consiste en un certain nombre de petits
programmes dh_*
. Par exemple, dh_installman
installe
et compacte les pages de manuel, dh_installmenu
installe les
fichiers de menu et ainsi de suite. Ainsi, il offre une flexibilité suffisante
pour pouvoir utiliser les scripts d'aide quand ils sont utiles, en complément
de commandes définies manuellement dans le fichier debian/rules
.
Vous pouvez débuter avec debhelper
en lisant
debhelper(1)
et en regardant les exemples fournis avec le paquet.
dh_make
du paquet dh-make
(voir dh-make
, Section A.3.3) peut
être utilisé pour convertir un paquet source « vierge » en une
version utilisant debhelper
. Ce raccourci ne devrait cependant
pas vous faire croire que vous n'avez pas besoin de comprendre les scripts
individuels dh_*
. Si vous comptez utiliser un système d'aide,
vous devez prendre le temps d'apprendre à utiliser ce système pour savoir ce
que vous pouvez en attendre ainsi que son comportement.
Plusieurs personnes pensent que des fichiers debian/rules
vierges
sont préférables car vous n'avez pas à apprendre les détails internes d'un
quelconque système d'aide. La décision vous appartient complètement. Utilisez
ce qui vous convient. Plusieurs exemples de fichiers debian/rules
sont disponibles à http://people.debian.org/~srivasta/rules/
.
Les gros paquets peuvent avoir plusieurs bogues que vous devez gérer. Si vous
corrigez sans faire attention les bogues dans les sources, vous ne pourrez pas
différencier facilement les nombreux correctifs que vous aurez appliqués. Cela
peut devenir trés compliqué de mettre à jour le paquet avec une nouvelle
version amont qui intègre certains correctifs (mais pas tous). Vous ne pouvez
pas prendre l'ensemble des correctifs (par exemple, dans les fichiers
.diff.gz
) et décider quels correctifs il vous faut enlever parce
que les bogues ont été corrigés en amont.
Malheureusement, le système de création des paquets tel qu'il est actuellement
ne fournit pas de moyen de séparer les correctifs en plusieurs fichiers.
Cependant, il existe des moyens de séparer les correctifs : les fichiers
correctifs sont livrés dans le fichier correctif Debian
(.diff.gz
), habituellement dans le répertoire
debian/
. La seule différence est qu'ils ne sont pas appliqués
immédiatement par dpkg-source, mais par la règle build du fichier
debian/rules
. Inversement, ils sont annulés par la règle
clean.
dbs
est l'une des approches les plus populaires pour cela. Il
fait ce qui est décrit ci-dessus et fournit la possibilité de créer de nouveaux
correctifs et de mettre à jour d'anciens correctifs. Veuillez vous reporter au
paquet dbs
pour plus d'informations et au paquet
hello-dbs
pour un exemple.
dpatch
fournit également ces fonctions, mais il est prévu pour
être encore plus facile d'utilisation. Veuillez voir le paquet
dpatch
pour la documentation et des exemples (dans
/usr/share/doc/dpatch
).
Un simple paquet source va souvent permettre de construire plusieurs paquets
binaires différents, que ce soit pour fournir plusieurs saveurs du même paquet
(par exemple, le paquet source vim
) ou pour créer plusieurs petits
paquets au lieu d'un seul gros (par exemple, si l'utilisateur peut n'installer
que la partie dont il a besoin et ainsi économiser de l'espace disque).
Le second cas peut facilement être géré dans le fichier
debian/rules
. Vous avez simplement besoin de déplacer les
fichiers appropriés du répertoire de construction dans les arborescence
temporaires du paquet. Vous pouvez le faire en utilisant install
ou dh_install
du paquet debhelper
. Assurez-vous de
vérifier les différentes permutations de paquets, en garantissant que vous avez
bien défini les dépendances entre les paquets dans le fichier
debian/control
.
Le premier cas est un peu plus diffile car il implique de multiples
recompilations du même logiciel, mais avec différentes options de
configuration. Le paquet source vim
est un exemple de la façon de
gérer cela avec un fichier rules
écrit à la main.
debian/control
Les pratiques suivantes sont relatives au fichier debian/control
.
Elles viennent en complément des règles
pour les descriptions des paquets
.
La description du paquet, telle qu'elle est définie par le champ correspondant
dans le fichier control
, contient à la fois le résumé du paquet et
la description longue pour le paquet. Les règles
générales pour les descriptions des paquets, Section 6.2.1 décrit des
lignes générales pour les deux parties de la description. Ensuite, Le résumé du paquet ou description courte, Section
6.2.2 fournit des principes spécifiques pour le résumé et La description longue, Section 6.2.3 contient des
principes spécifiques pour la description longue.
La description du paquet devrait être écrite pour l'utilisateur moyen, l'utilisateur qui va utiliser et bénéficier du paquet. Par exemple, les paquets de développement sont pour les développeurs et leur description peut utiliser un langage technique. Pour les applications à but plus général comme un éditeur, la description devrait être écrite pour un non-spécialiste.
Notre critique des descriptions des paquets nous amène à conclure que la plupart des descriptions des paquets sont techniques, c'est-à-dire, qu'elles ne sont pas écrites pour être comprises par les non-spécialistes. À moins que votre paquet ne soit que pour les techniciens, c'est un problème.
Comment écrire pour les non-spécialistes ? Évitez le jargon. Évitez de vous référer à d'autres applications et cadres de travail avec lesquels l'utilisateur n'est pas forcément familier — « GNOME » ou « KDE » sont corrects car les utilisateurs sont probablement familiers avec ces termes, mais « GTK+ » ne l'est probablement pas. Ne supposez aucune connaissance. Si vous devez utiliser des termes techniques, introduisez-les.
Soyez objectif. Les descriptions de paquet ne sont pas un endroit pour promouvoir votre paquet, quel que soit l'amour que vous lui portez. Rappelez-vous que le lecteur n'a pas forcément les mêmes priorités que vous.
Des références aux noms de tout autre paquet de logiciels, noms de protocoles, standards ou spécifications devraient utiliser leurs formes canoniques si elles existent. Par exemple, utilisez « X Window System », « X11 » ou « X » et non « X Windows », « X-Windows » ou « X Window ». Utilisez « GTK+ » et non « GTK » ou « gtk ». Utilisez « GNOME » et non « Gnome ». Utilisez « PostScript » et non « Postscript » ou « postscript ».
Si vous avez des problèmes pour écrire votre description, vous pouvez l'envoyer
à debian-l10n-english@lists.debian.org
et demander un retour d'informations.
La ligne de résumé (la description courte) devrait être concise. Elle ne doit pas répéter le nom du paquet (c'est une règle).
C'est une bonne idée de penser au résumé comme à une clause apposée et non une phrase complète. Une clause apposée est définie dans WordNet comme une relation grammaticale entre un mot et une phrase pronominale qui la suit, par exemple « Rudolph, le renne au nez rouge ». La clause apposée ici est « le renne au nez rouge ». Comme le résumé est une clause et non une phrase complète, nous recommandons de ne pas la commencer par une majuscule et de ne pas la finir par un point. Il ne doit pas non plus commencer avec un article, défini (« le ») ou indéfini (« un »).
Cela peut vous aider d'imaginer le résumé combiné avec le nom du paquet de la façon suivante :
nom-paquet est un résumé.
Sinon, il peut être plus compréhensible de le voir comme
nom-paquet est résumé.
ou, si le nom du paquet est lui-même un pluriel (comme « developer-tools »)
nom-paquet sont résumé.
Cette façon de former une phrase à partir du nom du paquet et du résumé devrait être considérée comme une heuristique et non comme une règle stricte. Il y a certains cas où cela n'a aucun sens de former une phrase.
La description longue du paquet est la première information dont dispose l'utilisateur avant d'installer un paquet. Aussi, elle devrait fournir toutes les informations nécessaires pour le laisser décider de l'installation du paquet. Vous pouvez supposer que l'utilisateur a déjà lu le résumé du paquet.
La description longue devrait toujours être constituée de phrases complètes.
Le premier paragraphe de la description longue devrait répondre aux questions suivantes : qu'est-ce que fait le paquet ? Quelle tâche aide-t-il l'utilisateur à accomplir ? Il est important de décrire ceci d'une manière non technique, à moins que le paquet ne s'adresse qu'à un auditoire de techniciens.
Les paragraphes suivants devraient répondre aux questions suivantes : Pourquoi, en tant qu'utilisateur, ai-je besoin de ce paquet ? Quelles sont les autres fonctionnalités dont dispose le paquet ? Quelles sont les fonctionnalités marquantes et les déficiences de ce paquet comparé à d'autres paquets (par exemple, « si vous avez besoin de X, utilisez Y à la place ») ? Est-ce que le paquet est lié à d'autres paquets d'une certaine façon qui n'est pas gérée par le gestionnaire de paquet (par exemple, « il s'agit d'un client pour le serveur foo ») ?
Soyez attentif à éviter les fautes d'orthographe et de grammaire. N'oubliez
pas votre vérificateur orthographique. ispell
possède une option
spéciale (-g) pour cela :
ispell -d american -g debian/control
Nous vous recommandons d'ajouter l'adresse de la page d'accueil du paquet à la
description du paquet dans le fichier debian/control
. Cette
information devrait être ajoutée à la fin de la description en utilisant le
format suivant :
. Homepage: http://some-project.some-place.org/
Veuillez noter les espaces au début de la ligne, ils servent à séparer les
lignes correctement. Pour voir un exemple de ce que cela affiche, veuillez
vous reporter à http://packages.debian.org/unstable/text/docbook-dsssl.html
.
Ne mettez rien s'il n'existe pas de page pour le logiciel.
Veuillez noter que nous espérons que ce champ sera remplacé par un vrai champ
de debian/control
que comprendraient dpkg
et
packages.debian.org. Si vous ne voulez pas vous embêter à
déplacer la page d'accueil depuis la description vers ce nouveau champ, vous
devriez probablement attendre qu'il soit disponible.
debian/changelog
Les pratiques suivantes viennent en complément de la directive
sur les fichiers changelog
.
L'entrée de changelog pour une révision de paquet documente les changements dans cette révision et seulement ceux-ci. Concentrez-vous sur la description des changements significatifs et visibles de l'utilisateur qui ont été effectués depuis la dernière version.
Ciblez ce qui a été changé — qui, comment et quand cela a été fait est généralement de moindre importance. Ceci dit, rappelez-vous de nommer poliment les personnes qui ont fourni une aide notable pour réaliser le paquet (par exemple, ceux qui ont envoyé des correctifs).
Vous n'avez pas besoin de détailler les changements triviaux et évidents. Vous
pouvez également regrouper plusieurs de ces changements dans une seule entrée.
D'un autre côté, ne soyez pas trop concis si vous avez entrepris un changement
majeur. Soyez tout spécialement clair s'il y a des changements qui modifient
le comportement du programme. Pour plus d'explications, utilisez le fichier
README.Debian
.
Utilisez un langage anglais commun pour que la majorité des lecteur puissent le comprendre. Évitez les abbréviations, le parler technique et le jargon quand vous expliquez des changements fermant un bogue, spécialement pour les rapports de bogue créés par des utilisateurs qui ne vous paraissent pas particulièrement à l'aise techniquement. Vous devez être poli et ne pas jurer.
Il est parfois désirable de préfixer les entrées de changelog avec le nom des fichiers qui ont été modifiés. Cependant, il n'est pas besoin de lister explicitement tous les fichiers modifiés, particulièrement si la modification est petite ou répétitive. Vous pouvez utiliser les caractères génériques.
Quand vous faites référence aux bogues, ne supposez rien a priori. Dites ce qu'était le problème, comment il a été résolu et ajoutez la chaîne de caractères « closes: #nnnnn ». Veuillez voir Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4 pour plus d'informations.
Les entrées de changelog ne devraient pas documenter des problèmes génériques d'empaquetage (« Hé, si vous cherchez foo.conf, il est dans /etc/blah/. ») car les administrateurs et utilisateurs sont supposés être au moins vaguement rompus à la façon dont les choses sont arrangées sur un système Debian. Mentionnez cependant tout changement d'emplacement d'un fichier de configuration.
Les seuls bogues fermés par une entrée de changelog devraient être ceux qui sont vraiment corrigés dans la même révision du paquet. Fermer des bogues non liés par le fichier changelog est considéré comme une très mauvaise pratique. Veuillez voir Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4.
Les entrées de changelog ne devraient pas être le lieu de discussions avec les émetteurs de bogues (« Je ne vois pas de segfaults lors du lancement de foo avec l'option bar ; envoyez-moi plus d'informations. »), ni celui de phrases génériques sur la vie, l'univers et tout le reste (« Désolé, cet envoi m'a pris du temps, mais j'avais attrapé la grippe ») ou celui de demandes d'aide (« La liste des bogues sur ce paquet est énorme, donnez-moi un coup de main »). Ceci ne sera généralement pas remarqué par les personnes ciblées, mais peut ennuyer les personnes qui désirent lire des informations sur les changements réels du paquet. Veuillez vous reporter à Répondre à des rapports de bogue, Section 5.8.2 pour plus d'informations sur la façon d'utiliser le système de suivi des bogues.
C'est une vieille tradition de valider les bogues fixés par une mise à jour indépendante dans la première entrée du changelog de l'envoi du vrai responsable, par exemple, dans une entrée de changelog comme ceci :
* Maintainer upload, closes: #42345, #44484, #42444.
Ceci fermera les bogues NMU marqués comme corrigé (« fixed ») quand le paquet arrivera dans l'archive. Le bogue pour le fait qu'une NMU a été faite peut être fermé de la même façon. Bien sûr, il est également parfaitement acceptable de fermer les bogues corrigés par NMU par d'autres moyens ; voir Répondre à des rapports de bogue, Section 5.8.2.
Les exemples suivants montrent des erreurs communes ou des exemples de mauvais style dans les entrées de changelog[28].
* Corrige tous les bogues restants.
Ceci n'indique visiblement rien d'utile au lecteur.
* Correctif de Jane Random appliqué.
Sur quoi portait le correctif ?
* Révision de cible d'installation la nuit dernière.
Qu'a accompli la révision ? Est-ce que la mention de la nuit dernière est supposée nous rappeler que nous ne devons pas faire confiance à ce code ?
* Corrige MRD vsync av. anciens CRTs.
Trop d'acronymes et il n'est pas très clair de ce qu'était vraiment cette... euh... merde (oups, un mot interdit !) ou comment cela a été corrigé.
* Ceci n'est pas un bogue. Closes: #nnnnnn.
Premièrement, il n'y a absolument pas besoin d'envoyer un paquet pour communiquer cette information ; à la place, utilisez le système de suivi des bogues. Deuxièmement, il n'y a aucune explication concernant la raison pour laquelle le rapport n'était pas un bogue.
* A été fixé il y a longtemps, mais j'ai oublié de le fermer. Closes: #54321.
Si, pour toute raison, vous n'aviez pas indiqué le numéro du bogue dans une précédente entrée de changelog, ceci n'est pas un problème, fermez simplement le bogue normalement dans le BTS. Il n'y a pas besoin de modifier le fichier changelog, en supposant que la description de la correction est déjà intégrée (ceci s'applique aux correctifs par les auteurs/responsables amont également, vous n'avez pas à suivre les bogues qui ont été corrigés il y a longtemps dans votre changelog).
* Closes: #12345, #12346, #15432.
Où est la description ?! Si vous n'arrivez pas à trouver un message descriptif, commencez par insérer le titre de chacun des différents bogues.
Les scripts de maintenance incluent les fichiers debian/postinst
,
debian/preinst
, debian/prerm
et
debian/postrm
. Ces scripts prennent soin de la configuration
d'installation ou de désinstallation des paquets, ce qui n'est pas simplement
créer ou supprimer des fichiers et des répertoires. Les instructions suivantes
complètent la charte
Debian
.
Les scripts de maintenance doivent être idempotents. Cela veut dire que vous devez vous assurer que rien de grave ne se produit si un script est appelé deux fois là où il ne devrait habituellement être appelé qu'une fois.
Les entrée et sortie standard peuvent être redirigées (par exemple, dans des tubes[29]) pour des besoins d'enregistrement d'activité, donc vous ne devez pas supposer que ce sont des tty.
Tous les affichages et les configurations interactives devraient être
minimisées. Quand cela est nécessaire, vous devriez utiliser le paquet
debconf
pour l'interface. Rappelez-vous que, dans tous les cas,
l'affichage ne doit se faire que dans l'étape de configuration,
configure du script de post-installation, postinst
.
Gardez les scripts de maintenance aussi simples que possible. Nous vous
suggérons d'utiliser des scripts shell POSIX purs. Rappelez-vous, que si vous
avez besoin d'une fonctionnalité de Bash, le script de maintenance doit
l'indiquer dans sa première ligne. Un shell POSIX ou Bash sont préférés à Perl
car ils permettent à debhelper
d'ajouter facilement des parties
aux scripts.
Si vous modifiez les scripts de maintenance, assurez-vous de tester la suppression du paquet, la double installation et la purge complète. Assurez-vous qu'il ne reste rien d'un paquet purgé, c'est-à-dire, que la purge doit enlever tout fichier créé, directement ou indirectement, par les scripts de maintenance.
Si vous avez besoin de vérifier l'existence d'une commande, vous devriez utiliser quelque chose comme :
if [ -x /usr/sbin/install-docs ]; then ...
Si vous ne désirez pas mettre en dur le chemin de la commande dans le script de maintenance, la fonction de shell suivante conforme à POSIX peut vous aider :
pathfind() { OLDIFS="$IFS" IFS=: for p in $PATH; do if [ -x "$p/$*" ]; then IFS="$OLDIFS" return 0 fi done IFS="$OLDIFS" return 1 }
Vous pouvez utiliser cette fonction pour rechercher le $PATH pour
un nom de commande passé en argument. Il renvoie vrai (zéro) si la commande a
été trouvée et faux sinon. Il s'agit réellement de la façon la plus portable
de faire car command -v, type
et which
ne sont pas POSIX.
Bien que which
soit une alternative acceptable car il est présent
dans le paquet classé required debianutils
, il n'est pas
présent dans la partition racine. Autrement dit, il est placé dans
/usr/bin
au lieu de /bin
, il n'est donc pas possible
de l'utiliser dans les scripts qui sont exécutés avant que la partition
/usr
soit montée. Cependant, la plupart des scripts n'auront pas
ce problème.
debconf
Debconf
est un système de gestion de configuration qui peut être
utilisé par les divers scripts de maintenance (principalement en
post-installation dans le fichier postinst
) pour demander à
l'utilisateur des informations concernant la configuration du paquet. Il faut
maintenant éviter les interactions directes avec l'utilisateur et préférer les
interactions utilisant debconf
. Ceci permettra à l'avenir des
installations non interactives.
Debconf est un bon outil, mais il est souvent mal utilisé. Plusieurs erreurs
communes sont référencées dans la page de manuel debconf-devel(7)
.
Vous devriez vraiment lire cette page si vous décidez d'utiliser debconf.
Comme les porteurs, les traducteurs ont une tâche difficile. Ils travaillent sur un grand nombre de paquets et doivent donc collaborer avec plusieurs responsables différents. De plus, la plupart du temps, l'anglais n'est pas leur langue maternelle, il se peut que vous deviez être particulièrement patient avec eux.
Le but de debconf
était de faciliter la configuration des paquets
aux responsables et aux utilisateurs. À l'origine, les traductions des
questionnaires debconf étaient gérées avec debconf-mergetemplate
.
Cependant, cette technique est maintenant déconseillée ; la meilleure
façon pour l'internationalisation de debconf
est d'utiliser le
paquet po-debconf
. Cette méthode est plus facile et pour le
responsable et pour les traducteurs ; des scripts de transition sont
fournis.
Lors de l'utilisation de po-debconf
, la traduction est stockée
dans des fichiers po
(à l'instar des techniques de traduction de
gettext
). Des fichiers modèles contiennent les messages d'origine
et indiquent quels sont les champs traduisibles. Quand vous modifiez l'état
d'un champ traduisible en appelant debconf-updatepo
, la traduction
est marquée comme ayant besoin de l'attention des traducteurs. Puis, lors de
la construction du paquet, le programme dh_installdebconf
prendra
soin de toute la magie nécessaire à l'ajout du modèle avec les traductions à
jour dans les paquets binaires. Veuillez vous reporter à la page de manuel
po-debconf(7)
pour les détails.
La traduction de la documentation est cruciale pour les utilisateurs, mais elle représente un important travail. Il n'existe aucun moyen d'éliminer ce travail, mais vous pouvez faciliter les choses pour les traducteurs.
Si vous êtes responsable d'une documentation quelle que soit sa taille, il est
plus facile pour les traducteurs d'avoir accès à un système de contrôle de
source. Ceci permet aux traducteurs de voir les différences entre deux
versions de la documentation, pour, par exemple, qu'ils puissent voir ce qui a
besoin d'être retraduit. Il est recommandé que le document traduit inclue une
note à propos de la révision de contrôle du source sur laquelle la traduction
est basée. Un système intéressant est fourni par doc-check
dans le paquet boot-floppies
qui donne un aperçu de l'état de la
traduction pour une langue donnée, en utilisant les commentaires structurés
pour une révision donnée du fichier à traduire et, pour un fichier traduit, la
révision du fichier d'origine sur laquelle la traduction est basée. Vous
pouvez vouloir adapter et fournir ceci dans votre référentiel CVS.
Si vous maintenez de la documentation au format XML ou SGML, nous vous suggérons d'isoler les informations indépendantes de la langue et de les définir comme des entités dans un fichier séparé qui sera inclus par les différentes traductions. Ceci aide, par exemple, à garder à jour les adresses pour plusieurs fichiers.
autoconf
/automake
Conserver à jour les fichiers d'autoconf
, config.sub
et config.guess
, est critique pour les porteurs, spécialement pour
les architectures plus changeantes. De très bonnes pratiques d'empaquetage
utilisant autoconf
et/ou automake
ont été regroupées
dans /usr/share/doc/autotools-dev/README.Debian.gz
du paquet
autotools-dev
. Vous êtes vivement encouragé à lire ce fichier et
à suivre les recommandations indiquées.
Pour diverses raisons, il a toujours été difficile d'empaqueter les bibliothèques. La charte impose plusieurs contraintes pour faciliter la maintenance et pour garantir que les mises à jour sont aussi simples que possible quand une nouvelle version amont est disponible. Une erreur dans une bibliothèque peut rendre défectueux une douzaine de paquets qui en dépendent.
Les bonnes pratiques d'empaquetage des bibliothèques ont été regroupées dans
le guide
d'empaquetage des bibliothèques
.
Assurez-vous de suivre les règles sur la
documentation
.
Si votre paquet contient de la documentation construite à partir de XML ou SGML, nous vous recommandons de ne pas fournir le source XML ou SGML dans le(s) paquet(s) binaire(s). Si les utilisateurs désirent avoir le source de la documentation, ils peuvent récupérer le paquet source.
La charte spécifie que la documentation doit être fournie au format HTML. Nous vous recommandons également de la fournir au format PDF et texte simple si c'est adapté et qu'une sortie de qualité est possible. Cependant, il n'est généralement pas approprié de fournir des versions en texte simple pour la documentation dont le format source est du HTML.
Les principaux manuels fournis devraient être enregistrés par le paquet
doc-base
à l'installation. Reportez-vous à la documentation du
paquet doc-base
pour plus d'information.
Plusieurs types spécifiques de paquets ont des sous-chartes spéciales et des règles et pratiques d'empaquetage correspondantes :
charte
Perl
, quelques exemples de paquets qui suivent cette charte sont
libdbd-pg-perl
(module perl binaire) ou libmldbm-perl
(module perl indépendant de l'architecture).
/usr/share/doc/python/python-policy.txt.gz
dans le paquet
python
.
charte
Emacs
.
charte
Java
.
/usr/share/doc/ocaml/ocaml_packaging_policy.gz
du paquet
ocaml
. Un bon exemple est le paquet source camlzip
.
sgml-base-doc
common-lisp-controller
pour lequel vous pouvez vous reporter au
fichier /usr/share/doc/common-lisp-controller/README.packaging
.
Il n'est pas rare d'avoir une grande quantité de données indépendantes de l'architecture fournie avec un programme. Par exemple, des fichiers audio, une collection d'icônes, des motifs de papiers peints ou autres fichiers graphiques. Si la taille des données est négligeable par rapport à la taille du reste du paquet, il est probablement mieux de tout garder dans le même paquet.
Cependant, si la taille des données est considérable, vous devez envisager de
les partager dans un paquet séparé et indépendant de l'architecture
(« _all.deb »). Ainsi, en faisant cela, vous évitez une duplication
inutile des mêmes données dans onze fichiers .debs pour chaque architecture.
Bien que ceci ajoute une surcharge supplémentaire aux fichiers
Packages
, ceci sauve beaucoup d'espace disque sur les miroirs
Debian. Séparer les données indépendantes de l'architecture réduit également
le temps de traitement de lintian
ou de linda
(voir
Outils du paquet lint, Section A.2)
quand ils sont exécutés sur l'ensemble de l'archive Debian.
Référence du développeur Debian
Version 3.3.4, 16 juin 2003 (version française 20030718).developers-reference@packages.debian.org
debian-l10n-french@lists.debian.org