+ Nous préférons la syntaxe <tt>closes: #<var>XXX</var></tt>, car c'est
+ l'entrée la plus concise et la plus facile à intégrer dans le texte du
+ fichier <file>changelog</file>.
+ </p>
+ <p>
+ À moins que cela soit spécifié différemment par l'option <var>-v</var> de
+ <prgn>dpkg-buildpackage</prgn>, seuls les bogues fermés dans l'entrée de
+ changelog la plus récente sont fermés (fondamentalement, seuls les
+ bogues mentionnés dans la partie de changelog du fichier
+ <file>.changes</file> sont fermés).
+ </p>
+ <p>
+ <!-- les bogues des envois ... ? -->
+ Historiquement, les envois identifiés comme <qref id="nmu">Mise à jour
+ indépendante</qref> (« Non-maintainer upload » ou NMU) étaient
+ marqués comme <tt>fixed</tt> au lieu d'être fermés, mais cette pratique
+ a cassé avec l'ajout du suivi des versions. Le même raisonnement
+ s'applique à l'étiquette <tt>fixed-in-experimental</tt>.
+ </p>
+ <p>
+ Si vous entrez un numéro de bogue incorrect ou si vous oubliez un
+ bogue dans les entrées du fichier <file>changelog</file>, n'hésitez
+ pas à annuler tout dommage que l'erreur a entraîné. Pour rouvrir un
+ bogue fermé par erreur, envoyez une commande <tt>reopen
+ <var>XXX</var></tt> à l'adresse de contrôle du système de suivi des
+ bogues, &email-bts-control;. Pour fermer tous les bogues restants qui
+ ont été corrigés par votre envoi, envoyez le fichier
+ <file>.changes</file> à <email>XXX-done@&bugs-host;</email> où
+ <var>XXX</var> est le numéro du bogue et placez « Version:
+ YYY » et une ligne vide dans les deux premières lignes du corps du
+ courrier où <var>YYY</var> est la première version dans laquelle le
+ bogue a été corrigé.
+ </p>
+ <p>
+ Rappelez-vous qu'il n'est pas obligatoire de fermer les bogues en
+ utilisant le <file>changelog</file> tel que décrit ci-dessus. Si vous
+ désirez simplement fermer les bogues qui n'ont rien à voir avec l'un
+ de vos envois, faites-le simplement en envoyant une explication à
+ <email>XXX-done@&bugs-host;</email>. Vous <strong>ne devez
+ pas</strong> pas fermer des bogues dans une entrée de changelog d'une
+ version si les changements dans cette version n'ont rien à voir avec
+ le bogue.
+ </p>
+ <p>
+ Pour une information plus générale sur ce qu'il faut mettre dans les
+ entrées de changelog, veuillez vous reporter aux <ref
+ id="bpp-debian-changelog">.
+ </p>
+ </sect1>
+ <sect1 id="bug-security">
+ <heading>
+ Gérer les bogues de sécurité
+ </heading>
+ <p>
+ À cause de leur nature sensible, les bogues liés à la sécurité doivent
+ être soigneusement traités. L'équipe de sécurité de Debian est là pour
+ coordonner cette activité, pour faire le suivi des problèmes de
+ sécurité en cours, pour aider les responsables ayant des problèmes de
+ sécurité ou pour les corriger elle-même, pour envoyer les annonces de
+ sécurité et pour maintenir le site security.debian.org.
+ </p>
+ <p>
+ Si vous prenez connaissance d'un bogue lié à un problème de sécurité
+ sur un paquet Debian, que vous soyez ou non le responsable, regroupez
+ les informations pertinentes sur le problème et contactez rapidement
+ l'équipe de sécurité à &email-security-team; dès que
+ possible. <strong>N'ENVOYEZ PAS</strong> de paquet pour
+ <em>stable</em> ; l'équipe de sécurité le fera. Les informations
+ utiles incluent, par exemple :
+ <list compact="compact">
+ <item>
+ <p>
+ les versions du paquet connues pour être affectées par le
+ bogue. Vérifiez chaque version présente dans les distributions
+ maintenues par Debian ainsi que dans <em>testing</em> et dans
+ <em>unstable</em>,
+ </p>
+ </item>
+ <item>
+ <p>
+ la nature d'une solution si elle est disponible (les correctifs
+ sont particulièrement utiles),
+ </p>
+ </item>
+ <item>
+ <p>
+ tout paquet corrigé que vous avez vous-même préparé (envoyez
+ seulement les fichiers <file>.diff.gz</file> et <file>.dsc</file>
+ et lisez d'abord <ref id="bug-security-building">),
+ </p>
+ </item>
+ <item>
+ <p>
+ toute assistance que vous pouvez fournir pour aider les tests
+ (exploits, tests de régression, etc.),
+ </p>
+ </item>
+ <item>
+ <p>
+ toute information nécessaire pour l'annonce de sécurité (voir <ref
+ id="bug-security-advisories">).
+ </p>
+ </item>
+ </list>
+ </p>
+ <sect2 id="bug-security-confidentiality">
+ <heading>
+ Confidentialité
+ </heading>
+ <p>
+ À la différence de la plupart des autres activités au sein de Debian,
+ les informations sur les problèmes de sécurité doivent parfois être
+ gardées en privé pour un certain temps. Ceci permet aux distributeurs
+ de logiciels de coordonner leur dévoilement afin de minimiser
+ l'exposition de leurs utilisateurs. Cette décision dépend de la
+ nature du problème et de l'existence d'une solution correspondante et
+ également s'il s'agit d'un fait connu publiquement.
+ </p>
+ <p>
+ Il existe plusieurs façons pour un développeur de prendre
+ connaissance d'un problème de sécurité :
+ <list compact="compact">
+ <item>
+ <p>
+ il le remarque sur un forum public (liste de diffusion, site web,
+ etc.),
+ </p>
+ </item>
+ <item>
+ <p>
+ quelqu'un remplit un rapport de bogue,
+ </p>
+ </item>
+ <item>
+ <p>
+ quelqu'un l'informe par courrier privé.
+ </p>
+ </item>
+ </list>
+ Dans les deux premiers cas, l'information est publique et il est
+ important d'avoir une solution le plus vite possible. Dans le dernier
+ cas, cependant, ce n'est peut-être pas une information publique. Dans
+ ce cas, il existe quelques options possibles pour traiter le
+ problème :
+ <list>
+ <item>
+ <p>
+ si l'exposition de sécurité est mineure, il n'y a parfois pas
+ besoin de garder le secret sur le problème et une correction
+ devrait être effectuée et diffusée,
+ </p>
+ </item>
+ <item>
+ <p>
+ si le problème est grave, il est préférable de partager cette
+ information avec d'autres vendeurs et de coordonner une
+ publication. L'équipe de sécurité reste en contact avec les
+ différentes organisations et individus et peut prendre soin des
+ actions à mener.
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ Dans tous les cas, si la personne qui indique le problème demande à
+ ce que l'information ne soit pas diffusée, cela devrait être respecté
+ avec l'évidente exception d'informer l'équipe de sécurité pour qu'une
+ correction puisse être effectuée pour la version stable de
+ Debian. Quand vous envoyez des informations confidentielles à
+ l'équipe de sécurité, assurez-vous de bien mentionner ce fait.
+ </p>
+ <p>
+ Veuillez noter que si le secret est nécessaire, vous ne pourrez pas
+ envoyer un correctif vers <em>unstable</em> (ou ailleurs) puisque les
+ informations de changelog et de diff sont publiques pour
+ <em>unstable</em>.
+ </p>
+ <p>
+ Il existe deux raisons pour diffuser l'information même si le secret
+ est demandé : le problème est connu depuis un certain temps ou
+ le problème ou son exploitation est devenu public.
+ </p>
+ </sect2>
+ <sect2 id="bug-security-advisories">
+ <heading>
+ Annonces de sécurité
+ </heading>
+ <p>
+ Les annonces de sécurité ne sont émises que pour la distribution
+ actuelle diffusée <em>stable</em>, <em>PAS</em> pour <em>testing</em>
+ ou <em>unstable</em>. Quand elle est diffusée, l'annonce est envoyée
+ à la liste de diffusion &email-debian-security-announce; et elle est
+ postée sur <url id="&url-debian-security-advisories;" name="la page
+ de sécurité">. Les annonces de sécurité sont écrites et postées par
+ les membres de l'équipe de sécurité. Cependant, ils ne verront aucun
+ inconvénient à ce qu'un responsable leur apporte des informations ou
+ écrive une partie du texte. Les informations qui devraient être
+ présentes dans une annonce incluent :
+ <list compact="compact">
+ <item>
+ <p>
+ une description du problème et de sa portée, y compris :
+ <list>
+ <item>
+ <p>
+ le type du problème (usurpation de privilège, déni de service,
+ etc.),
+ </p>
+ </item>
+ <item>
+ <p>
+ quels sont les privilèges obtenus et par quels utilisateurs (si
+ c'est le cas)
+ </p>
+ </item>
+ <item>
+ <p>
+ comment il peut être exploité,
+ </p>
+ </item>
+ <item>
+ <p>
+ si le problème peut être exploité à distance ou localement,
+ </p>
+ </item>
+ <item>
+ <p>
+ comment le problème a été corrigé,
+ </p>
+ </item>
+ </list>
+ Ces informations permettent aux utilisateurs d'estimer la menace
+ pesant sur leurs systèmes.
+ </p>
+ </item>
+ <item>
+ <p>
+ les numéros de version des paquets affectés,
+ </p>
+ </item>
+ <item>
+ <p>
+ les numéros de version des paquets corrigés,
+ </p>
+ </item>
+ <item>
+ <p>
+ une information sur la façon de récupérer les paquets mis à jour
+ (habituellement l'archive de sécurité Debian),
+ </p>
+ </item>
+ <item>
+ <p>
+ des références à des annonces amont, des identifiants <url
+ id="http://cve.mitre.org" name="CVE"> et toute autre information
+ utile pour recouper les références de la vulnérabilité.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect2>
+ <sect2 id="bug-security-building">
+ <heading>
+ Préparer les paquets pour corriger des problèmes de sécurité
+ </heading>
+ <p>
+ Une façon d'aider l'équipe de sécurité dans ses travaux est de lui
+ fournir des paquets corrigés convenables pour une annonce de sécurité
+ pour la version <em>stable</em> de Debian
+ </p>
+ <p>
+ Quand une mise à jour de la version <em>stable</em> est effectuée, un
+ soin particulier doit être apporté pour éviter de modifier le
+ comportement du système ou d'introduire de nouveaux bogues. Pour
+ cela, faites le moins de changements possibles pour corriger le
+ bogue. Les utilisateurs et les administrateurs s'attendent à un
+ comportement identique dans une version lorsque celle-ci est
+ diffusée, donc tout changement qui est fait est susceptible de casser
+ le système de quelqu'un. Ceci est spécialement vrai pour les
+ bibliothèques : assurez-vous ne de jamais changer l'API ou
+ l'ABI, aussi minimal que soit le changement.
+ </p>
+ <p>
+ Cela veut dire que passer à une version amont supérieure n'est pas
+ une bonne solution. À la place, les changements pertinents devraient
+ être rétroportés vers la version présente dans la distribution
+ <em>stable</em> de Debian. Habituellement, les développeurs amont
+ veulent bien aider. Sinon, l'équipe de sécurité Debian peut le faire.
+ </p>
+ <p>
+ Dans certains cas, il n'est pas possible de rétroporter un correctif
+ de sécurité, par exemple, quand de grandes quantités de code source
+ doivent être modifiées ou récrites. Si cela se produit, il peut être
+ nécessaire de passer à une nouvelle version amont. Cependant, ceci
+ n'est fait que dans des situations extrêmes et vous devez toujours
+ coordonner cela avec l'équipe de sécurité au préalable.
+ </p>
+ <p>
+ Il existe une autre règle de conduite liée à cela : testez
+ toujours vos changements. Si une exploitation du problème existe,
+ essayez-la et vérifiez qu'elle réussit sur le paquet non corrigé et
+ échoue sur le paquet corrigé. Testez aussi les autres actions
+ normales car parfois un correctif de sécurité peut casser de manière
+ subtile des fonctionnalités qui ne semblent pas liées.
+ </p>
+ <p>
+ N'incluez <strong>PAS</strong> de changements dans votre paquet qui
+ ne soient pas liés directement à la correction de la
+ vulnérabilité. Ceux-ci devraient être ensuite enlevés et cela perd du
+ temps. S'il y a d'autres bogues dans votre paquet que vous aimeriez
+ corriger, faites un envoi vers proposed-updates de la façon
+ habituelle, après l'envoi de l'alerte de sécurité. Le mécanisme de
+ mise à jour de sécurité n'est pas un moyen d'introduire des
+ changements dans votre paquet qui seraient sinon rejetés de la
+ distribution stable, n'essayez donc pas de faire cela, s'il vous
+ plaît.
+ </p>
+ <p>
+ Examinez et testez autant que possible vos changements. Vérifiez les
+ différences avec la version précédente de manière répétée
+ (<prgn>interdiff</prgn> du paquet <package>patchutils</package> et
+ <prgn>debdiff</prgn> du paquet <package>devscripts</package> sont des
+ outils utiles pour cela, voir <ref id="debdiff">).
+ </p>
+ <p>
+ Assurez-vous de conserver les points suivants à l'esprit :
+ <list>
+ <item>
+ <p>
+ Ciblez la bonne distribution dans votre fichier
+ <file>debian/changelog</file>. Pour <em>stable</em>, il s'agit de
+ <tt>stable-security</tt> et pour <em>testing</em>, c'est
+ <tt>testing-security</tt> et pour l'ancienne distribution stable,
+ c'est <tt>oldstable-security</tt>. Ne ciblez ni
+ <var>distribution</var>-proposed-updates, ni
+ <tt>stable</tt> !
+ </p>
+ </item>
+ <item>
+ <p>
+ L'envoi devra avoir « urgency=high ».
+ </p>
+ </item>
+ <item>
+ <p>
+ Fournissez des entrées de changelog descriptives et
+ complètes. D'autres personnes se baseront dessus pour déterminer
+ si un bogue particulier a été corrigé. Incluez toujours une
+ référence externe, de préférence un identifiant CVE, pour qu'elle
+ puisse être recoupée. Incluez la même information dans le
+ changelog pour <em>unstable</em> pour qu'il soit clair que le même
+ bogue a été corrigé car cela est très utile pour vérifier que le
+ bogue a été corrigé pour la prochaine version stable. Si aucun
+ identifiant CVE n'a encore été assigné, l'équipe de sécurité en
+ demandera un pour qu'il puisse être inclus dans le paquet et dans
+ le changelog.
+ </p>
+ </item>
+ <item>
+ <p>
+ Assurez-vous que le numéro de version est correct. Il doit être
+ plus élevé que celui du paquet actuel, mais moins que ceux des
+ paquets des versions des distributions suivantes. En cas de doute,
+ testez-le avec <tt>dpkg --compare-versions</tt>. Soyez attentif à
+ ne pas ré-utiliser un numéro de version que vous auriez déjà
+ utilisé pour un précédent envoi. Pour <em>testing</em>, il doit y
+ avoir un numéro de version supérieur dans <em>unstable</em>. S'il
+ n'y en a pas encore (par exemple, si <em>testing</em> et
+ <em>unstable</em> ont la même version), vous devez envoyer une
+ nouvelle version vers <em>unstable</em> en premier.
+ </p>
+ </item>
+ <item>
+ <p>
+ Ne faites pas d'envoi de source seul si votre paquet possède un ou
+ plusieurs paquets binary-all (n'utilisez pas l'option <tt>-S</tt>
+ de <prgn>dpkg-buildpackage</prgn>). L'infrastructure
+ <prgn>buildd</prgn> ne construira pas ceux-ci. Ce point s'applique
+ aux envois de paquets normaux également.
+ </p>
+ </item>
+ <item>
+ <p>
+ Sauf si la source amont a été envoyée auparavant à
+ security.debian.org (par une précédente mise à jour de sécurité),
+ construisez le paquet avec la source amont complète
+ (<tt>dpkg-buildpackage -sa</tt>). S'il y a déjà eu un précédent
+ envoi à security.debian.org, vous pouvez faire un envoi sans le
+ paquet source (<tt>dpkg-buildpackage -sd</tt>).
+ </p>
+ </item>
+ <item>
+ <p>
+ Assurez-vous d'utiliser exactement le même nom
+ <file>*.orig.tar.gz</file> que celui utilisé dans l'archive
+ normale, sinon il ne sera pas possible de déplacer plus tard le
+ correctif de sécurité dans l'archive principale.
+ </p>
+ </item>
+ <item>
+ <p>
+ Compilez le paquet sur un système propre, dont tous les paquets
+ appartiennent à la distribution pour laquelle vous construisez le
+ paquet. Si vous n'avez pas un tel système, vous pouvez utiliser
+ l'une des machines de debian.org (voir <ref id="server-machines">)
+ ou mettez en place un chroot (voir <ref id="pbuilder"> et <ref
+ id="debootstrap">).
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect2>
+ <sect2 id="bug-security-upload">
+ <heading>
+ Mettre à jour le paquet corrigé
+ </heading>
+ <p>
+ Vous <em>NE</em> devez <em>PAS</em> envoyer un paquet dans la file
+ d'attente des envois de sécurité (oldstable-security,
+ stable-security, etc.) sans l'accord préalable de l'équipe de
+ sécurité. Si le paquet ne remplit pas exactement les exigences de
+ l'équipe, il causera beaucoup de problèmes, ainsi que des délais dans
+ la gestion de l'envoi indésirable.
+ </p>
+ <p>
+ Vous <em>NE</em> devez <em>PAS</em> envoyer votre correction dans
+ <em>proposed-updates</em> sans vous coordonner avec l'équipe de
+ sécurité. Les paquets seront copiés de security.debian.org dans le
+ répertoire <file>proposed-updates</file> automatiquement. Si un
+ paquet avec le même numéro de version ou un numéro plus grand est
+ déjà installé dans l'archive, la mise à jour de sécurité sera rejetée
+ par le système d'archive. Ainsi, la distribution <em>stable</em> se
+ retrouvera à la place sans la mise à jour de sécurité de ce paquet.
+ </p>
+ <p>
+ Une fois que vous avez créé et testé le nouveau paquet et qu'il a été
+ approuvé par l'équipe de sécurité, il doit être envoyé pour être
+ installé dans les archives. Pour les envois de sécurité, l'adresse
+ d'envoi est
+ <tt>ftp://security-master.debian.org/pub/SecurityUploadQueue/</tt>.
+ </p>
+ <p>
+ Une fois que l'envoi vers la file d'attente de sécurité a été
+ accepté, le paquet sera automatiquement recompilé pour toutes les
+ architectures et stocké pour vérification par l'équipe de sécurité.
+ </p>
+ <p>
+ Les envois en attente d'acceptation ou de vérification ne sont
+ accessibles que par l'équipe de sécurité. C'est nécessaire car il
+ pourrait y avoir des correctifs pour des problèmes de sécurité qui ne
+ peuvent pas encore être diffusés.
+ </p>
+ <p>
+ Si une personne de l'équipe de sécurité accepte un paquet, il sera
+ installé sur security.debian.org et proposé pour le répertoire
+ <var>distribution</var>-proposed-updates qui convient sur ftp-master.
+ </p>
+ </sect2>
+ </sect1>
+ </sect>
+ <sect id="archive-manip">
+ <heading>
+ Déplacer, effacer, changer le nom, adopter et abandonner des paquets
+ </heading>
+ <p>
+ Certaines manipulations de l'archive ne sont pas possibles avec le
+ processus de mise à jour automatisé. Elles sont appliquées manuellement
+ par les développeurs. Ce chapitre décrit ce qu'il faut faire dans ces
+ situations.
+ </p>
+ <sect1 id="moving-pkgs">
+ <heading>
+ Déplacer des paquets
+ </heading>
+ <p>
+ Il se peut qu'un paquet puisse changer de section. Une nouvelle
+ version d'un paquet de la section <tt>non-free</tt> pourrait, par
+ exemple, être distribuée sous licence GNU GPL ; dans ce cas, le
+ paquet doit être déplacé dans la section <tt>main</tt> ou
+ <tt>contrib</tt><footnote><p>Reportez-vous à la <url
+ id="&url-debian-policy;" name="charte Debian"> pour savoir dans quelle
+ section un paquet doit être classé.</p></footnote>.
+ </p>
+ <p>
+ Si vous avez besoin de modifier la section de l'un de vos paquets,
+ modifiez les informations de contrôle du paquet pour le placer dans la
+ section désirée et téléchargez à nouveau votre paquet dans
+ l'archive. Reportez-vous à la <url id="&url-debian-policy;"
+ name="charte Debian"> pour en savoir plus. Vous devez vous assurer
+ d'inclure le fichier <file>.orig.tar.gz</file> dans votre envoi (même si
+ vous n'envoyez pas de nouvelle version amon) ou il n'apparaîtra pas dans
+ la nouvelle section avec le reste du paquet. Si votre nouvelle section
+ est valide, il sera déplacé automatiquement. Si ce n'est pas le cas,
+ contactez les responsables ftp pour comprendre ce qui s'est passé.
+ </p>
+ <p>
+ Si vous avez besoin de modifier la sous-section de l'un de vos paquets
+ (<tt>devel</tt> ou <tt>admin</tt> par exemple), la procédure est
+ légèrement différente. Modifiez la sous-section dans le fichier de
+ contrôle de votre paquet et téléchargez-le. Il vous faudra ensuite
+ demander la modification du fichier <em>override</em> comme décrit
+ dans la section <ref id="override-file">.
+ </p>
+ </sect1>
+ <sect1 id="removing-pkgs">
+ <heading>
+ Supprimer des paquets
+ </heading>
+ <p>
+ Si, pour une raison ou une autre, vous avez besoin de supprimer
+ complètement un paquet de l'archive (disons qu'il s'agit d'une vieille
+ bibliothèque devenue inutile que l'on conservait pour des raisons de
+ compatibilité), il vous faudra envoyer un rapport de bogue concernant
+ le pseudo-paquet <tt>ftp.debian.org</tt> et demander sa
+ suppression ; comme pour tous les bogues, ce bogue devrait être
+ de gravité normale. N'oubliez pas de préciser de quelle distribution
+ le paquet doit être supprimé. Normalement, vous ne devriez avoir à
+ supprimer que des paquets d'<em>unstable</em> ou
+ d'<em>experimental</em>. Les paquets de <em>testing</em> ne sont pas
+ supprimés directement. Ils sont plutôt enlevés automatiquement après
+ que le paquet a été supprimé d'<em>unstable</em> et si aucun paquet de
+ <em>testing</em> n'en dépend.
+ </p>
+ <p>
+ Il existe une exception pour laquelle il n'est pas nécessaire de faire
+ une demande explicite de suppression : si un paquet (source ou
+ binaire) est orphelin, il sera supprimé de façon semi-automatique. Pour
+ un paquet binaire, cela veut dire s'il n'y a plus de paquet source
+ produisant le paquet binaire ; si le paquet binaire n'est
+ simplement plus produit pour certaines architectures, une demande de
+ suppression est toujours nécessaire. Pour un paquet source, cela veut
+ dire que tous les paquets binaires auxquels il se réfère ont été
+ récupérés par un autre paquet source.
+ </p>
+ <p>
+ Vous devez détailler dans votre demande de suppressions les raisons
+ justifiant cette
+ demande. Ceci a pour but d'éviter les suppressions non désirées et de
+ garder une trace de la raison pour laquelle un paquet a été
+ supprimé. Par exemple, vous pouvez fournir le nom du paquet qui
+ remplace celui à supprimer.
+ </p>
+ <p>
+ Vous ne pouvez demander la suppression d'un paquet que si vous en êtes
+ le responsable. Si vous voulez supprimer un autre paquet, vous devez
+ obtenir l'accord de son responsable.
+ </p>
+ <p>
+ Si vous ne savez pas bien si un paquet peut être supprimé, demandez
+ l'avis des autres développeurs sur la liste &email-debian-devel;. Le
+ programme <prgn>apt-cache</prgn> du paquet <package>apt</package>
+ pourra aussi vous être utile. La commande <tt>apt-cache showpkg
+ <var>paquet</var> </tt> vous indiquera, entre autres, les paquets qui
+ dépendent de <var>paquet</var>.
+ Parmi d'autres programmes utiles, citons <tt>apt-cache rdepends</tt>,
+ <prgn>apt-rdepends</prgn> et <prgn>grep-dctrl</prgn>.
+ Le retrait de paquets orphelins est discuté sur &email-debian-qa;.
+ </p>
+ <p>
+ Une fois que le paquet a été supprimé, les bogues du paquet doivent
+ être gérés. Soit ils sont réattribués à un autre paquet dans le cas où
+ le code actuel a évolué en un autre paquet (par exemple,
+ <tt>libfoo12</tt> a été supprimé parce que <tt>libfoo13</tt> le
+ remplace) ou ils sont fermés si le logiciel ne fait simplement plus
+ partie de Debian.
+ </p>
+ <sect2>
+ <heading>
+ Supprimer des paquets dans <tt>Incoming</tt>
+ </heading>
+ <p>
+ Par le passé, il était possible de supprimer un paquet de
+ <file>Incoming</file>. Cependant, ce n'est plus possible depuis la
+ mise en place du nouveau système de file d'attente. Il vous faudra
+ télécharger une nouvelle version de votre paquet avec un numéro de
+ version plus élevé que celui que vous voulez remplacer. Les deux
+ versions seront installées dans l'archive mais seule la plus récente
+ sera accessible dans <em>unstable</em> car la précédente sera
+ immédiatement remplacée par la nouvelle. Toutefois, si vous testez
+ correctement vos paquets, le besoin d'en remplacer un ne devrait pas
+ être trop fréquent.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1>
+ <heading>
+ Remplacer un paquet ou changer son nom
+ </heading>
+ <p>
+ Si vous vous trompez en nommant un paquet, vous devrez intervenir en
+ deux étapes pour changer son nom. D'abord, modifiez votre fichier
+ <file>debian/control</file> pour que votre nouveau paquet remplace et
+ entre en conflit avec l'ancien paquet que vous voulez remplacer
+ (reportez-vous à la <url id="&url-debian-policy;" name="charte
+ Debian"> pour les détails). Une fois que votre paquet est installé
+ dans l'archive, faites un rapport de bogue concernant le pseudo-paquet
+ <tt>ftp.debian.org</tt> et demandez la suppression du paquet mal
+ nommé. N'oubliez pas de réattribuer correctement les bogues du paquet
+ en même temps.
+ </p>
+ <p>
+ D'autres fois, vous pouvez commettre une erreur en construisant le
+ paquet et vous désirez le remplacer. La seule façon de faire est
+ d'incrémenter le numéro de version et d'envoyer une nouvelle
+ version. L'ancienne version expirera de la façon habituelle. Notez que
+ ceci s'applique à chaque partie de votre paquet, y compris les
+ sources : si vous désirez remplacer l'archive source amont de
+ votre paquet, vous devez l'envoyer avec un numéro de version
+ différent. Une possibilité simple est de remplacer
+ <file>foo_1.00.orig.tar.gz</file> par
+ <file>foo_1.00+0.orig.tar.gz</file>. Cette restriction donne à chaque
+ fichier du site ftp un nom unique, ce qui aide à garantir la
+ consistance dans le réseau des miroirs.
+ </p>
+ </sect1>
+ <sect1 id="orphaning">
+ <heading>
+ Abandonner un paquet
+ </heading>
+ <p>
+ Si vous ne pouvez plus maintenir un paquet, vous devez en informer les
+ autres et faire le nécessaire pour qu'il soit marqué
+ <em>abandonné</em> (i.e. <em>orphaned</em>). Vous devriez aussi
+ remplacer votre nom par <tt>Debian QA Group &orphan-address;</tt> dans
+ le champ <tt>maintainer</tt> du paquet et faire un rapport de bogue
+ sur le pseudo-paquet <package>wnpp</package>. Le titre de votre
+ rapport de bogue devrait être
+ « <tt>O<footnote><p><em>Orphaned</em> :
+ abandonné.</p></footnote>: <var>paquet</var> — <var>courte
+ description</var></tt> » pour indiquer que le paquet est
+ abandonné. La gravité du bogue sera <em>normale</em> ; si le
+ paquet a une priorité standard ou supérieure, elle devrait être
+ <em>importante</em>. Si vous le jugez nécessaire, envoyez une copie à
+ &email-debian-devel; en mettant cette adresse dans le champ
+ X-Debbugs-CC: de l'en-tête du message. N'utilisez pas le champ CC: car
+ de cette manière le sujet du message ne contiendra pas le numéro du
+ bogue.
+ </p>
+ <p>
+ Si vous avez simplement l'intention de donner le paquet, mais que vous
+ pouvez conserver sa maintenance pour le moment, vous devriez à la
+ place soumettre un rapport de bogue sur <package>wnpp</package> et
+ l'intituler <tt>RFA: <var>paquet</var> -- <var>description
+ courte</var></tt>. <tt>RFA</tt> veut dire <em>Request For
+ Adoption</em> (demande d'adoption).
+ </p>
+ <p>
+ Vous pouvez trouver plus d'informations sur les <url id="&url-wnpp;"
+ name="pages web WNPP"><footnote><p><em>Work-needing and prospective
+ packages</em> : paquets en souffrance et paquets
+ souhaités.</p></footnote>.
+ </p>
+ </sect1>
+ <sect1 id="adopting">
+ <heading>
+ Adopter un paquet
+ </heading>
+ <p>
+ Une liste des paquets en attente de nouveau responsable est disponible
+ à la page <url id="&url-wnpp;" name="paquets en souffrance et paquets
+ souhaités">. Si vous voulez prendre en charge un paquet de cette
+ liste, reportez-vous à la page mentionnée ci-dessus pour connaître la
+ procédure à suivre.
+ </p>
+ <p>
+ Prendre un paquet parce qu'il vous semble que celui-ci est négligé
+ n'est pas correct — ce serait un détournement de
+ paquet. Vous pouvez prendre contact avec le responsable actuel et lui
+ demander si vous pouvez prendre en charge ce paquet. Si vous avez le
+ sentiment qu'un responsable est parti sans prévenir depuis un moment,
+ veuillez vous reporter à <ref id="mia-qa">).
+ </p>
+ <p>
+ Généralement, vous ne pouvez pas adopter un paquet sans l'accord du
+ responsable actuel. Même s'il vous ignore, ce n'est pas une raison
+ pour le faire. Les plaintes à propos des responsables devraient être
+ portées sur la liste de diffusion des développeurs. Si la discussion
+ ne se termine pas par une conclusion positive et que le problème est
+ de nature technique, envisagez de porter le cas à l'attention du
+ comité technique (voir la <url id="&url-tech-ctte;" name="page web du
+ comité technique"> pour plus d'information).
+ </p>
+ <p>
+ Si vous reprenez un vieux paquet, vous voudrez sûrement que le système
+ de suivi des bogues indique que vous êtes le responsable du
+ paquet. Cela se produira automatiquement une fois que vous aurez
+ installé une nouvelle version du paquet dans l'archive avec le champ
+ <tt>Maintainer</tt> à jour. Cela peut prendre quelques heures après le
+ téléchargement. Si vous pensez ne pas avoir de mise à jour à faire
+ pour un moment, vous pouvez utiliser le <ref id="pkg-tracking-system">
+ pour recevoir les rapports de bogue. Cependant, assurez-vous que cela
+ ne pose aucun problème à l'ancien responsable de continuer à recevoir
+ les bogues durant ce temps.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="porting">
+ <heading>
+ Le portage
+ </heading>
+ <p>
+ Debian accepte un nombre croissant d'architectures. Même si vous n'êtes
+ pas un porteur et même si vous n'utilisez qu'une architecture, il est
+ de votre responsabilité de développeur d'être attentif aux questions de
+ portabilité. C'est pourquoi il est important que vous lisiez ce
+ chapitre même si vous n'êtes pas un porteur.
+ </p>
+ <p>
+ Porter un paquet consiste à faire un paquet binaire pour des
+ architectures différentes de celle du paquet binaire fait par le
+ responsable du paquet. C'est une activité remarquable et
+ essentielle. En fait, les porteurs sont à l'origine de la plupart des
+ compilations de paquets Debian. Pour un paquet binaire <em>i386</em>,
+ par exemple, il faut compter une recompilation pour chaque autre
+ architecture, soit un total de &number-of-arches; recompilations.
+ </p>
+ <sect1 id="kind-to-porters">
+ <heading>
+ Être courtois avec les porteurs
+ </heading>
+ <p>
+ Les porteurs ont une tâche remarquable et difficile car ils doivent
+ gérer un grand nombre de paquets. Idéalement, tout paquet source
+ devrait compiler sans modification. Malheureusement, c'est rarement le
+ cas. Cette section contient une liste d'erreurs commises régulièrement
+ par les responsables Debian — problèmes courants qui bloquent
+ souvent les porteurs et compliquent inutilement leur travail.
+ </p>
+ <p>
+ Ici, la première et la plus importante chose est de répondre
+ rapidement aux rapports de bogues et remarques soulevées par les
+ porteurs. Traitez-les courtoisement, comme s'ils étaient
+ co-responsables de vos paquets (ce qu'ils sont d'une certaine
+ manière). Merci pour votre indulgence envers des rapports de bogue
+ succincts ou peu clairs ; faites de votre mieux pour éliminer le
+ problème.
+ </p>
+ <p>
+ Les problèmes les plus couramment rencontrés par les porteurs sont
+ causés par des erreurs de mise en paquet dans le paquet source. Voici
+ un pense-bête pour les choses auxquelles vous devez être
+ attentif :
+ <enumlist numeration="arabic">
+ <item>
+ <p>
+ Vérifiez que les champs <tt>Build-Depends</tt> et
+ <tt>Build-Depends-Indep</tt> du fichier <file>debian/control</file>
+ sont corrects. Le meilleur moyen de le vérifier est d'utiliser le
+ paquet <package>debootstrap</package> pour créer un environnement
+ <em>unstable</em> <em>chrooté</em> (voir <ref
+ id="debootstrap">). Dans cet environnement <em>chrooté</em>, il
+ faudra installer le paquet <package>build-essential</package> et
+ tous les paquets mentionnés dans les champs <tt>Build-Depends</tt>
+ et <tt>Build-Depends-Indep</tt>. Ensuite, vous essayerez de
+ fabriquer votre paquet dans cet environnement. Ces étapes peuvent
+ être automatisées en utilisant le programme <prgn>pbuilder</prgn>
+ qui est fourni par le paquet de même nom (voir <ref
+ id="pbuilder">).
+ </p>
+ <p>
+ Si vous n'arrivez pas à installer un environnement
+ <em>chrooté</em>, <prgn>dpkg-depcheck</prgn> pourra peut-être vous
+ aider (voir <ref id="dpkg-depcheck">).
+ </p>
+ <p>
+ Consultez la <url id="&url-debian-policy;" name="charte Debian">
+ pour en savoir plus sur les dépendances de fabrication.
+ </p>
+ </item>
+ <item>
+ <p>
+ Ne choisissez pas d'autres valeurs que <em>all</em> ou <em>any</em>
+ pour le champ architecture sans avoir de bonnes raisons pour le
+ faire. Trop souvent, les développeurs ne respectent pas les
+ instructions de la <url id="&url-debian-policy;" name="charte
+ Debian">. Choisir la valeur « i386 » est la plupart du
+ temps incorrect.
+ </p>
+ </item>
+ <item>
+ <p>
+ Vérifiez que votre paquet source est bon. Faites <tt>dpkg-source -x
+ <var>paquet</var>.dsc</tt> pour vous assurer que le paquet se
+ décompresse correctement. En utilisant le résultat de ce test,
+ construisez votre paquet binaire à l'aide de la commande
+ <prgn>dpkg-buildpackage</prgn>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Vérifiez que les fichiers <file>debian/files</file> et
+ <file>debian/substvars</file> ne sont pas dans votre paquet
+ source. Ils doivent être effacés par la cible <em>clean</em> de
+ <file>debian/rules</file>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Assurez-vous que vous ne vous appuyez pas sur des éléments de
+ configuration ou des logiciels installés ou modifiés
+ localement. Par exemple, vous ne devriez jamais appeler des
+ programmes du répertoire <file>/usr/local/bin</file> ou de
+ répertoires équivalents. Essayez de ne pas vous appuyer sur des
+ logiciels configurés de manière spéciale. Essayez de construire
+ votre paquet sur une autre machine, même s'il s'agit de la même
+ architecture.
+ </p>
+ </item>
+ <item>
+ <p>
+ Ne vous appuyez pas sur une installation préexistante de votre
+ paquet (un sous-cas de la remarque précédente).
+ </p>
+ </item>
+ <item>
+ <p>
+ Si possible, ne vous appuyez pas sur une particularité présente
+ dans un compilateur précis ou dans une certaine version d'un
+ compilateur. Si vous ne pouvez pas faire autrement, assurez-vous
+ que les dépendances de fabrication reflètent bien cette
+ restriction. Dans ce cas, vous cherchez sûrement les problèmes car
+ quelques architectures pourraient choisir un compilateur différent.
+ </p>
+ </item>
+ <item>
+ <p>
+ Vérifiez que votre fichier <file>debian/rules</file> distingue les
+ cibles <em>binary-arch</em> et <em>binary-indep</em> comme l'exige
+ la charte Debian. Vérifiez que ces cibles sont indépendantes l'une
+ de l'autre, c'est-à-dire, qu'il n'est pas nécessaire d'invoquer
+ l'une de ces cibles avant d'invoquer l'autre. Pour vérifier cela,
+ essayez d'exécuter <tt>dpkg-buildpackage -B</tt>.
+ </p>
+ </item>
+ </enumlist>
+ </p>
+ </sect1>
+ <sect1 id="porter-guidelines">
+ <heading>
+ Instructions pour les mises à jour des porteurs
+ </heading>
+ <p>
+ Si le paquet se construit tel quel sur l'architecture que vous visez,
+ vous avez de la chance et votre travail est facile. Cette section
+ s'applique dans ce cas ; elle décrit comment construire et
+ installer correctement votre paquet binaire dans l'archive Debian. Si
+ vous devez modifier le paquet pour le rendre compilable sur votre
+ architecture cible vous devez faire une mise à jour des sources,
+ consultez la section <ref id="nmu-guidelines">.
+ </p>
+ <p>
+ Pour un envoi de portage, ne faites pas de changement dans les
+ sources. Vous n'avez pas besoin de modifier les fichiers du paquet
+ source (cela inclut le fichier <file>debian/changelog</file>).
+ </p>
+ <p>
+ La manière d'invoquer <prgn>dpkg-buildpackage</prgn> est la
+ suivante : <tt>dpkg-buildpackage -B
+ -m<var>adresse-porteur</var></tt>. Bien sûr, remplacez
+ <var>adresse-porteur</var> par votre adresse électronique. Cette
+ commande construira les parties du paquet qui dépendent de
+ l'architecture, en utilisant la cible <em>binary-arch</em> de
+ <file>debian/rules</file>.
+ </p>
+ <p>
+ Si vous travaillez sur une machine Debian pour vos efforts de portage
+ et que vous devez signer votre envoi localement pour son acceptation
+ dans l'archive, vous pouvez exécuter <prgn>debsign</prgn> sur votre
+ fichier <file>.changes</file> pour qu'il soit signé de manière commode
+ ou utilisez le mode de signature à distance de <prgn>dpkg-sig</prgn>.
+ </p>
+ <sect2 id="binary-only-nmu">
+ <heading>
+ Mises à jour indépendantes binaires ou recompilations
+ </heading>
+ <p>
+ Parfois, l'envoi du portage initial pose problème car l'environnement
+ dans lequel le paquet a été construit n'était pas bon (bibliothèques
+ plus à jour ou obsolètes, mauvais compilateur, etc.). Il se peut que
+ vous ayez à le recompiler dans un environnement mis à
+ jour. Cependant, dans ce cas, vous devez changer le numéro de version
+ pour que les mauvais anciens paquets soient remplacés dans l'archive
+ Debian (<prgn>katie</prgn> refuse d'installer de nouveaux paquets
+ s'ils n'ont pas un numéro de version supérieur à celui actuellement
+ disponible).
+ </p>
+ <p>
+ Vous devez vous assurer que votre mise à jour indépendante binaire ne
+ rend pas le paquet non installable. Cela peut arriver si un paquet
+ source génère des paquets dépendants et indépendants de
+ l'architecture qui dépendent les uns des autres <em>via</em>
+ $(Source-Version).
+ </p>
+ <p>
+ Malgré les modifications nécessaires du changelog, ce type de mise à
+ jour reste une mise à jour indépendante binaire — il n'est
+ pas nécessaire de reconsidérer le statut des paquets binaires des
+ autres architectures pour les marquer périmés ou à recompiler.
+ </p>
+ <p>
+ Ces recompilations nécessitent des numéros de version
+ « magiques » pour que le système de maintenance de
+ l'archive comprenne que, bien qu'il y ait une nouvelle version, il
+ n'y a pas eu de modification des sources. Si vous ne faites pas cela
+ correctement, les administrateurs de l'archive rejetteront votre mise
+ à jour (car il n'y aura pas de code source associé).
+ </p>
+ <p>
+ La « magie » d'une mise à jour indépendante par
+ recompilation uniquement est déclenchée par l'utilisation d'un
+ suffixe ajouté au numéro de version du paquet de la forme
+ b<numéro>. Par exemple, si la dernière version que vous avez
+ recompilée était la version 2.9.3, votre mise à jour indépendante
+ aura le numéro de version 2.9-3+b1. Si la dernière version était
+ 3.4+b1 (i.e. un paquet natif avec une précédente mise à jour
+ indépendante par recompilation), votre mise à jour indépendant aura
+ le numéro de version 3.4+b2. <footnote><p>Par le passé, de telles
+ mises à jour indépendantes utilisaient le numéro de troisième niveau
+ de la partie Debian de la révision pour dénoter l'état de
+ recompilation uniquement ; cependant, cette syntaxe était
+ ambigüe pour les paquets natifs et ne permettait pas un ordre correct
+ des mises à jour indépendantes par recompilation uniquement, des
+ mises à jour indépendantes de source et des mises à jour
+ indépendantes de sécurité sur le même paquet et elle a donc été
+ abandonnée en faveur de cette nouvelle syntaxe.</p></footnote>
+ </p>
+ <p>
+ De manière similaire aux envois du porteur initial, la façon correcte
+ d'invoquer <prgn>dpkg-buildpackage</prgn> est <tt>dpkg-buildpackage
+ -B</tt> pour ne construire que les parties dépendant de
+ l'architecture du paquet.
+ </p>
+ </sect2>
+ <sect2 id="source-nmu-when-porter">
+ <heading>
+ Quand faire une mise à jour indépendante source pour un
+ portage ?
+ </heading>
+ <p>
+ Les porteurs qui font des mises à jour indépendantes sources suivent
+ généralement les instructions de la section <ref id="nmu"> tout comme
+ les non-porteurs. Les délais d'attente sont cependant plus courts car
+ les porteurs doivent manipuler un grand nombre de paquets. À nouveau,
+ la situation diffère selon la distribution visée. Elle varie
+ également selon que l'architecture est candidate pour inclusion dans
+ la prochaine version stable ; les responsables de publication
+ décident et annoncent quelles architectures sont candidates.
+ </p>
+ <p>
+ Si vous êtes porteur et faites une mise à jour pour
+ <em>unstable</em>, les instructions précédentes sont applicables à
+ deux différences près. Tout d'abord, le temps d'attente raisonnable
+ — délai entre le moment où vous envoyez un rapport au
+ système de suivi des bogues et le moment où vous pouvez faire une
+ mise à jour indépendante <em>(NMU)</em> — est de sept
+ jours. Ce délai peut être raccourci si le problème est crucial et met
+ l'effort de portage en difficulté : c'est à la discrétion de l'équipe
+ de portage. (Souvenez-vous, il ne s'agit pas d'un règlement, mais de
+ recommandations communément acceptées). Pour les envois de
+ <em>stable</em> ou <em>testing</em>, veuillez tout d'abord vous
+ coordonner avec l'équipe de publication appropriée.
+ </p>
+ <p>
+ Deuxième différence, les porteurs qui font des mises à jour
+ indépendantes sources doivent choisir une gravité <em>sérieuse</em>
+ (i.e. <em>serious</em>) ou supérieure quand ils envoient leur rapport
+ au système de suivi des bogues. Ceci assure qu'un paquet source
+ unique permet de produire un paquet binaire pour chaque architecture
+ supportée au moment de la sortie de la distribution. Il est très
+ important d'avoir un paquet source et un paquet binaire pour toutes
+ les architectures pour être conforme à plusieurs licences.
+ </p>
+ <p>
+ Les porteurs doivent éviter d'implémenter des contournements pour des
+ bogues de l'environnement de compilation, du noyau ou de la
+ libc. Quelques fois, ces contournements sont inévitables. Si vous
+ devez faire quelque chose de ce genre, marquez proprement vos
+ modifications avec des <tt>#ifdef</tt> et documentez votre
+ contournement pour que l'on sache le retirer une fois que le problème
+ aura disparu.
+ </p>
+ <p>
+ Les porteurs peuvent aussi avoir une adresse où ils publient le
+ résultat de leur travail pendant le délai d'attente. Ainsi, d'autres
+ personnes peuvent bénéficier du travail du porteur même pendant ce
+ délai. Bien sûr, ces adresses n'ont rien d'officiel, alors soyez sur
+ vos gardes si vous les utilisez.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1 id="porter-automation">
+ <heading>
+ Infrastructure de portage et automatisation
+ </heading>
+ <p>
+ Il existe une infrastructure et plusieurs outils pour faciliter
+ l'automatisation du portage des paquets. Cette section contient un
+ bref aperçu de cette automatisation et du portage de ces outils ;
+ veuillez vous reporter à la documentation des paquets ou les
+ références pour une information complète.
+ </p>
+ <sect2>
+ <heading>
+ Listes de diffusion et pages web
+ </heading>
+ <p>
+ Les pages web contenant l'état de chaque portage peuvent être
+ trouvées à <url id="&url-debian-ports;">.
+ </p>
+ <p>
+ Chaque portage de Debian possède sa propre liste de diffusion. La
+ liste des listes de diffusion de portage peut être trouvée à <url
+ id="&url-debian-port-lists;">. Ces listes sont utilisées pour
+ coordonner les porteurs et pour mettre en relation les utilisateurs
+ d'un portage donné avec les porteurs.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Outils pour les porteurs
+ </heading>
+ <p>
+ Les descriptions de plusieurs outils de portage peuvent être trouvées
+ dans les <ref id="tools-porting">.
+ </p>
+ </sect2>
+ <sect2 id="buildd">
+ <heading>
+ <package>buildd</package>
+ </heading>
+ <p>
+ Le système <package>buildd</package> est un système distribué pour la
+ compilation d'une distribution. Il est habituellement utilisé en
+ conjonction avec des automates de compilation ; ce sont des
+ machines « esclaves » qui récupèrent des paquets sources et
+ tentent de les compiler. Il est aussi possible d'interagir par
+ courrier électronique avec ce système. Cette interface est utilisée
+ par les porteurs pour récupérer un paquet source (en général, un
+ paquet qui ne peut être compilé automatiquement) et travailler
+ dessus.
+ </p>
+ <p>
+ <package>buildd</package> n'est pas disponible sous forme de
+ paquet ; pourtant, la plupart des équipes de porteurs
+ l'utilisent aujourd'hui ou ont prévu de l'utiliser bientôt. L'outil
+ de construction automatisé réel est dans le paquet
+ <package>sbuild</package>, voir la description dans <ref
+ id="sbuild">. Le système <package>buildd</package> regroupe également
+ un ensemble de composants très utiles, continuellement utilisés, mais
+ non encore mis en paquet, tels que <prgn>andrea</prgn> et
+ <prgn>wanna-build</prgn>.
+ </p>
+ <p>
+ Une partie des informations produites par <package>buildd</package>
+ — utiles pour les porteurs — est disponible sur
+ la toile à l'adresse <url id="&url-buildd;">. Ces informations
+ incluent les résultats produits toutes les nuits par
+ <prgn>andrea</prgn> (dépendances des sources) et
+ <prgn>quinn-diff</prgn> (paquets à recompiler).
+ </p>
+ <p>
+ Nous sommes très fiers de ce système car il a de nombreux usages
+ potentiels. Des groupes de développeurs indépendants peuvent utiliser
+ ce système pour créer différentes saveurs de Debian — qui
+ peuvent être ou ne pas être intéressantes pour tous (par exemple, une
+ version de Debian compilée avec des vérifications relatives à
+ <prgn>gcc</prgn>). Ce système nous permettra aussi de recompiler
+ rapidement toute une distribution.
+ </p>
+ <p>
+ Les administrateurs des buildds pour chaque architecture peuvent être
+ contactés à l'adresse électronique $arch@buildd.debian.org.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1 id="packages-arch-specific">
+ <heading>
+ Quand votre paquet <em>n'est pas</em> portable
+ </heading>
+ <p>
+ Certains paquets ont encore des problèmes pour être construits et/ou
+ pour fonctionner sur certaines des architectures prises en charge par
+ Debian et ne peuvent pas du tout être portés, ou pas dans un laps de
+ temps raisonnable. Un exemple est un paquet qui est spécifique SGVA
+ (i386 seulement) ou qui utilise des fonctionnalités spécifiques au
+ matériel qui ne sont pas gérées sur toutes les architectures.
+ </p>
+ <p>
+ Pour éviter que des paquets cassés soient envoyés dans l'archive et
+ qu'ils fassent perdre du temps des buildd, vous devez faire plusieurs
+ choses :
+ </p>
+ <p>
+ <list>
+ <item>
+ <p>
+ Tout d'abord, assurez-vous que votre paquet <em>échoue</em> à la
+ compilation sur les architectures qu'il ne gère pas. Il y a
+ plusieurs moyens de faire cela. Le moyen préféré est d'avoir une
+ petite suite de tests pendant la construction qui testera la
+ fonctionnalité et qui échouera si cela ne fonctionne pas. C'est de
+ toute façon une bonne idée et empêchera des (certains) envois
+ cassés pour toutes les architectures, et cela permettra également
+ au paquet d'être construit dès que la fonctionnalité nécessaire est
+ disponible.
+ </p>
+ <p>
+ De plus, si vous croyez que la liste des architectures gérées est
+ plutôt constante, vous devriez changer « any » en une
+ liste des architectures gérées dans le fichier
+ <file>debian/control</file>. Ainsi, la construction échouera
+ également et l'indiquera à un lecteur humain sans vraiment essayer.
+ </p>
+ </item>
+ <item>
+ <p>
+ Pour empêcher les compilateurs automatiques de tenter sans raison
+ de construire votre paquet, il doit être inclus dans
+ <file>packages-arch-specific</file>, une liste utilisée par le
+ script <prgn>wanna-build</prgn>. La version actuelle est disponible
+ à <url
+ id="http://cvs.debian.org/srcdep/Packages-arch-specific?cvsroot=dak"> ;
+ veuillez consulter le début du fichier pour savoir qui contacter
+ pour le modifier.
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ Veuillez noter qu'il est insuffisant de simplement ajouter votre
+ paquet à Packages-arch-specific sans le faire également échouer lors
+ de compilation sur les architectures non gérées : un porteur ou
+ toute autre personne essayant de construire votre paquet peut
+ accidentellement l'envoyer sans remarquer qu'il ne fonctionne pas. Si
+ dans le passé, certains paquets binaires ont été envoyés pour des
+ architectures non gérées, demandez leur suppression en remplissant un
+ bogue sur <package>ftp.debian.org</package>.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="nmu">
+ <heading>
+ Mise à jour indépendante
+ </heading>
+ <p>
+ Dans certaines circonstances, il est nécessaire qu'une personne autre
+ que le responsable d'un paquet fasse une mise à jour de ce paquet. Ce
+ type de mise à jour est désigné en anglais par l'expression
+ <em>non-maintainer upload (NMU)</em>. Dans le présent document, nous
+ traduisons librement cette expression par « mise à jour
+ indépendante ».
+ </p>
+ <p>
+ Cette section ne traite que des mises à jour indépendantes de source,
+ c.-à-d., les mises à jour qui envoient une nouvelle version d'un
+ paquet. Pour les mises à jour indépendantes par des porteurs ou des
+ membres de la QA, veuillez consulter <ref id="binary-only-nmu">. Si un
+ buildd construit et envoie un paquet, cela est également à strictement
+ parler une NMU binaire. Veuillez consulter <ref id="buildd"> pour plus
+ d'informations.
+ </p>
+ <p>
+ La raison principale pour laquelle une mise à jour indépendante est
+ réalisée est quand un développeur a besoin de corriger le paquet d'un
+ autre développeur pour résoudre des problèmes sérieux ou des bogues
+ paralysants ou quand le responsable d'un paquet ne peut pas fournir une
+ correction dans un délai raisonnable.
+ </p>
+ <p>
+ Tout d'abord, il est capital que ces mises à jour indépendantes soient
+ aussi peu intrusives que possible. Ne faites pas de ménage, ne modifiez
+ pas le nom des modules ou des fichiers, ne déplacez pas les
+ répertoires ; plus généralement, ne corrigez pas ce qui n'est pas
+ cassé. Faites un correctif aussi petit que possible. Si certaines
+ choses froissent votre sens de l'esthétique, parlez-en au responsable
+ du paquet, au responsable amont ou soumettez un rapport de
+ bogue. Quoiqu'il en soit, les changements esthétiques <em>ne doivent
+ pas</em> être effectués lors d'une mise à jour indépendante.
+ </p>
+ <p>
+ Et souvenez-vous du Serment d'Hippocrate « Par dessus tout,
+ ne pas faire de mal ». Il est préférable de laisser un paquet avec
+ un bogue ouvert grave plutôt qu'appliquer un correctif non fonctionnel
+ ou un correctif qui cache le bogue sans le résoudre.
+ </p>
+ <sect1 id="nmu-guidelines">
+ <heading>
+ Comment faire une mise à jour indépendante ?
+ </heading>
+ <p>
+ Les mises à jour indépendantes qui corrigent des bogues de gravité
+ importante, sérieuse et plus élevée sont encouragées et
+ acceptées. Vous devriez vous efforcer de contacter le responsable
+ actuel du paquet : il est peut-être sur le point d'envoyer un
+ correctif pour le problème ou il a peut-être une meilleure solution.
+ </p>
+ <p>
+ Les mises à jour indépendantes doivent être réalisées pour assister un
+ responsable de paquet à résoudre des bogues. Les responsables
+ devraient être reconnaissants pour cette aide et les personnes faisant
+ la mise à jour indépendante devraient respecter les décisions du
+ responsable et tenter d'aider personnellement le responsable dans son
+ travail.
+ </p>
+ <p>
+ Une mise à jour indépendante devrait suivre toutes les conventions
+ décrites dans cette section. Pour un envoi vers <em>testing</em> ou
+ <em>unstable</em>, l'ordre suivant des étapes est recommandé :
+ </p>
+ <p>
+ <list>
+ <item>
+ <p>
+ Vérifiez que les bogues du paquet qui devraient être corrigés par
+ la mise à jour indépendante sont bien référencés dans le système de
+ suivi des bogues. S'ils n'y sont pas, faites des rapports de bogue
+ immédiatement.
+ </p>
+ </item>
+ <item>
+ <p>
+ Attendez la réponse du responsable quelques jours. Si vous
+ n'obtenez aucune réponse, vous pouvez l'aider en lui envoyant le
+ correctif qui corrige le bogue. N'oubliez pas de marquer le bogue
+ avec le mot-clé « patch ».
+ </p>
+ </item>
+ <item>
+ <p>
+ Patientez quelques jours. Si vous n'avez toujours aucune réponse du
+ responsable, envoyez-lui un courrier annonçant votre intention
+ d'effectuer une mise à jour indépendante du paquet. Préparez la NMU
+ comme décrit dans cette section et testez-la soigneusement sur
+ votre machine (cf. <ref id="sanitycheck">). Re-vérifiez que votre
+ correctif n'a aucun effet de bord inattendu. Assurez-vous que votre
+ correctif est aussi minimaliste et non intrusif que possible.
+ </p>
+ </item>
+ <item>
+ <p>
+ Envoyez votre paquet à incoming dans <file>DELAYED/7-day</file>
+ (cf. <ref id="delayed-incoming">), envoyez le correctif final au
+ responsable par le BTS et expliquez-lui qu'il a 7 jours pour réagir
+ s'il veut annuler la NMU.
+ </p>
+ </item>
+ <item>
+ <p>
+ Suivez ce qui se passe, vous êtes responsable pour tout bogue que
+ vous auriez introduit avec votre NMU. Vous devriez probablement
+ utiliser le <ref id="pkg-tracking-system"> (PTS) pour vous tenir
+ informé de l'état du paquet après votre NMU.
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ Parfois, le responsable de version ou un groupe organisé de
+ développeurs peut annoncer une certaine période de temps au cours de
+ laquelle les règles de mise à jour indépendante seront plus
+ souples. Ceci implique habituellement une période plus courte
+ d'attente avant d'envoyer des correctifs et une période de délai plus
+ courte. Il est important de noter que, même au cours de ces
+ « chasses aux bogues », la personne désirant faire la mise à
+ jour indépendante doit remplir des bogues et contacter en premier le
+ développeur, et ensuite seulement passer à l'action. Veuillez vous
+ reporter à <ref id="qa-bsp"> pour des détails.
+ </p>
+ <p>
+ Pour la distribution <em>testing</em>, les règles peuvent être
+ changées par les responsables de publication. Veuillez porter une
+ attention spéciale au fait que le moyen habituel pour un paquet
+ d'entrer dans <em>testing</em> est de passer par <em>unstable</em>.
+ </p>
+ <p>
+ Pour la distribution <em>stable</em>, veuillez y apporter une
+ attention supplémentaire. Bien sûr, les responsables de publication
+ peuvent également modifier les règles ici. Veuillez vérifier avant
+ votre envoi que tous vos changements sont acceptables pour inclusion
+ dans la prochaine version stable par le responsable de publication.
+ </p>
+ <p>
+ Quand un bogue de sécurité est détecté, l'équipe de sécurité peut
+ effectuer une mise à jour indépendante en utilisant ses propres
+ règles. Veuillez vous référer à <ref id="bug-security"> pour plus
+ d'informations.
+ </p>
+ <p>
+ Pour les différences concernant les mises à jour indépendantes par les
+ porteurs, veuillez voir <ref id="source-nmu-when-porter">.
+ </p>
+ <p>
+ Bien sûr, il est toujours possible de s'accorder avec un responsable
+ pour des règles spéciales (comme quand le responsable demande
+ « merci d'envoyer le correctif directement pour moi et pas de
+ diff nécessaire »).
+ </p>
+ </sect1>
+ <sect1 id="nmu-version">
+ <heading>
+ Numéro de version pour les mises à jour indépendantes
+ </heading>
+ <p>
+ Chaque fois que vous modifiez un paquet, le numéro de version de ce
+ paquet doit changer, même pour la plus triviale des
+ modifications. Notre système de gestion de paquets s'appuie sur ces
+ numéros de version.
+ </p>
+ <p>
+ Si vous faites une mise à jour indépendante <em>(NMU)</em>, vous devez
+ ajouter un numéro de version mineur à la partie
+ <var>révision-debian</var> du numéro de version (la partie qui suit le
+ dernier trait d'union). Ce numéro supplémentaire débutera à
+ « 1 ». Prenons pour exemple le paquet « foo » qui
+ porte le numéro de version 1.1-3. Dans l'archive, le fichier de
+ contrôle du paquet source serait <file>foo_1.1-3.dsc</file>. La
+ version amont est « 1.1 » et la révision Debian est
+ « 3 ». La mise à jour indépendante suivante ajouterait le
+ numéro de version mineur « .1 » au numéro de révision
+ Debian ; le nouveau fichier de contrôle du paquet source serait
+ alors <file>foo_1.1-3.1.dsc</file>.
+ </p>
+ <p>
+ Le numéro de révision mineur est nécessaire pour éviter de prendre un
+ numéro de version au responsable officiel du paquet, ce qui pourrait
+ perturber son travail. Cela a aussi l'avantage de montrer clairement
+ que le paquet n'a pas été livré par le responsable officiel.
+ </p>
+ <p>
+ S'il n'y a pas de partie <var>révision-debian</var> dans le numéro de
+ version du paquet, il faut en créer une en démarrant à
+ « 0.1 ». S'il est absolument nécessaire qu'une personne qui
+ n'est pas responsable d'un paquet fasse une livraison basée sur une
+ nouvelle version amont, cette personne doit choisir « 0.1 »
+ comme numéro de révision Debian. Le responsable du paquet doit, lui,
+ démarrer sa numérotation à « 1 ».
+ </p>
+ <p>
+ Si vous envoyez un paquet vers <em>testing</em> ou <em>stable</em>,
+ vous devrez parfois créer une branche (« fork ») dans
+ l'arbre de numéro des version. Pour cela, vous pouvez utiliser des
+ numéros de version comme 1.1-3sarge0.1.
+ </p>
+ </sect1>
+ <sect1 id="nmu-changelog">
+ <heading>
+ Les mises à jour indépendantes sources doivent être mentionnées dans
+ le fichier changelog
+ </heading>
+ <p>
+ Une personne qui fait une mise à jour indépendante source doit ajouter
+ une entrée dans le fichier <file>changelog</file> qui indique les
+ bogues corrigés et qui précise pourquoi cette mise à jour était
+ nécessaire. Cette entrée comportera l'adresse de la personne ayant
+ fait l'envoi ainsi que la version livrée.
+ </p>
+ <p>
+ Par convention, dans le cas d'une mise à jour indépendante source
+ <em>(NMU)</em>, l'entrée du fichier changelog débute par la
+ ligne :
+ <example>
+ * Non-maintainer upload
+</example>
+ </p>
+ </sect1>
+ <sect1 id="nmu-patch">
+ <heading>
+ Mise à jour indépendante source et système de suivi des bogues
+ </heading>
+ <p>
+ Un développeur qui n'est pas responsable d'un paquet doit faire aussi
+ peu de modifications que possible et doit toujours envoyer ses
+ modifications au système de suivi des bogues au format diff unifié
+ (<tt>diff -u</tt>).
+ </p>
+ <p>
+ Et si vous recompilez simplement le paquet ? Si vous avez
+ simplement besoin de recompiler le paquet pour une seule architecture,
+ vous pouvez faire une NMU binaire seulement comme décrit dans <ref
+ id="binary-only-nmu"> qui ne nécessite pas qu'un correctif soit
+ envoyé. Si vous désirez que le paquet soit recompilé pour toutes les
+ architectures, vous devez alors faire une NMU source et vous devrez
+ envoyer un correctif.
+ </p>
+ <p>
+ Si la mise à jour indépendante source (<em>source NMU</em>) corrige
+ des bogues, ceux-ci doivent être marqués <em>fixed</em> (corrigé) dans
+ le système de suivi des bogues plutôt que clos. Par convention, seul
+ le responsable du paquet et la personne qui a ouvert le rapport de
+ bogue ferment les rapports. Heureusement, le système d'archivage
+ Debian reconnaît les mises à jours indépendantes et positionne
+ correctement le statut des bogues à <em>fixed</em> si la personne qui
+ fait la mise à jour a listé tous les bogues dans le fichier changelog
+ en utilisant la syntaxe <tt>Closes: bug#<var>nnnnn</var></tt> (voir
+ <ref id="upload-bugfix"> pour en savoir plus sur la fermeture de bogue
+ par le fichier <file>changelog</file>). Ce passage au statut
+ <em>fixed</em> assure que chacun sait que le bogue est corrigé par une
+ mise à jour indépendante tout en laissant le rapport de bogue ouvert
+ jusqu'à ce que le responsable du paquet incorpore les modifications de
+ cette mise à jour dans la version officielle du paquet.
+ </p>
+ <p>
+ Après avoir fait une mise à jour indépendante, il vous faudra aussi
+ envoyer l'information aux bogues existants que vous avez corrigés
+ par votre NMU en incluant le diff unifié. Historiquement, c'était une
+ habitude de créer un
+ nouveau rapport de bogue et inclure un correctif comprenant toutes les
+ modifications que vous avez réalisées. Le responsable officiel pourra
+ choisir d'appliquer le correctif, il pourra aussi employer une autre
+ méthode pour régler le problème. Certains bogues sont corrigés dans la
+ version amont, ce qui est une bonne raison pour annuler les
+ modifications d'une mise à jour indépendante. Si le responsable
+ choisit de mettre à jour le paquet plutôt que d'utiliser les
+ correctifs de la mise à jour indépendante, il devra s'assurer que
+ cette nouvelle version corrige effectivement chacun des bogues
+ corrigés dans la mise à jour indépendante.
+ </p>
+ <p>
+ De plus, le responsable officiel devrait <em>toujours</em> conserver
+ les entrées documentant une mise à jour indépendante dans le fichier
+ <file>changelog</file> — et bien sûr, également conserver les
+ modifications. Si vous annulez certaines des modifications, veuillez
+ réouvrir les rapports de bogue correspondants.
+ </p>
+ </sect1>
+ <sect1 id="nmu-build">
+ <heading>
+ Fabriquer une mise à jour indépendante source
+ </heading>
+ <p>
+ Les paquets faisant l'objet d'une mise à jour indépendante source sont
+ construits comme les autres. Sélectionnez une distribution en
+ utilisant les règles décrites dans la section <ref id="distribution">
+ en suivant toutes les instructions de la section <ref id="upload">.
+ </p>
+ <p>
+ Vérifiez que vous n'avez pas modifié la valeur du champ
+ <tt>maintainer</tt> dans le fichier <file>debian/control</file>. Votre
+ nom, mentionné dans l'entrée du fichier <file>debian/changelog</file>
+ concernant la mise à jour, sera utilisé pour signer le fichier
+ <file>.changes</file>.
+ </p>
+ </sect1>
+ <sect1 id="ack-nmu">
+ <heading>
+ Valider une mise à jour indépendante
+ </heading>
+ <p>
+ Si l'un de vos paquets a subi une mise à jour indépendante, vous devez
+ récupérer les changements dans votre copie des sources. Ceci est aisé,
+ vous avez simplement à appliquer le correctif qui vous a été
+ envoyé. Une fois ceci fait, vous devez fermer les bogues qui ont été
+ marqués comme fixés par la mise à jour. Le moyen le plus simple est
+ d'utiliser l'option <tt>-v</tt> de <prgn>dpkg-buildpackage</prgn> car
+ cela vous permet d'inclure tous les changements depuis votre dernier
+ envoi de responsable. Sinon, vous pouvez soit les fermer manuellement
+ en envoyant les courriers nécessaires au BTS soit ajouter les
+ <tt>closes: #nnnn</tt> nécessaires dans l'entrée du changelog de votre
+ prochain envoi.
+ </p>
+ <p>
+ Dans tous les cas, vous ne devriez pas être perturbé par la NMU. Une
+ NMU n'est pas une attaque personnelle contre le responsable. C'est une
+ preuve que le paquet est important pour quelqu'un et qu'il est
+ désireux de vous aider dans votre travail, vous devriez donc lui être
+ reconnaissant. Vous pouvez également lui demander s'il serait
+ intéressé pour vous aider sur une base plus régulière comme
+ co-responsable ou responsable de secours (cf. <ref
+ id="collaborative-maint">).
+ </p>
+ </sect1>
+ <sect1 id="nmu-vs-qa">
+ <heading>
+ Mise à jour indépendante ou envoi de QA ?
+ </heading>
+ <p>
+ Sauf si vous savez que le responsable est toujours actif, il est sage
+ de vérifier le paquet pour voir s'il n'a pas été abandonné. La liste
+ actuelle des paquets orphelins pour lesquels le champ responsable n'a
+ pas été positionné correctement est disponible à <url
+ id="&url-debian-qa-orphaned;">. Si vous effectuez une mise à jour
+ indépendante sur un paquet incorrectement orphelin, veuillez
+ positionner le responsable à « Debian QA Group
+ <packages@qa.debian.org> ».
+ </p>
+ </sect1>
+ <sect1 id="nmu-who">
+ <heading>
+ Qui peut faire une mise à jour indépendante ?
+ </heading>
+ <p>
+ Seuls les responsables Debian officiels peuvent faire des mises à jour
+ indépendantes binaire ou source. Un responsable officiel est une
+ personne dont la clé est dans le porte-clés Debian. Tout autre
+ personne est toutefois invitée à télécharger les paquets sources pour
+ corriger des bogues ; au lieu de faire des mises à jour
+ indépendantes, ils pourront soumettre les correctifs qui le méritent
+ au système de suivi des bogues. Les responsables apprécient presque
+ toujours les correctifs et les rapports de bogue soignés.
+ </p>
+ </sect1>
+ <sect1 id="nmu-terms">
+ <heading>
+ Terminologie
+ </heading>
+ <p>
+ Deux nouvelles expressions sont introduites dans cette section :
+ « mise à jour indépendante source » et « mise à jour
+ indépendante binaire ». Ces deux expressions ont une
+ signification technique précise dans ce document. Elles correspondent
+ toutes deux au même type d'activité ; elles impliquent toutes
+ deux qu'une personne fait une mise à jour d'un paquet alors qu'elle
+ n'est pas officiellement responsable de ce paquet. C'est pourquoi nous
+ qualifions ces mises à jours
+ d'<em>indépendantes</em><footnote><p>Contrairement à ce que pourrait
+ laisser entendre cette traduction de <em>non-maintainer upload</em>,
+ il n'est pas question d'agir sans prévenir le responsable au préalable
+ (voir <ref id="nmu-guidelines">).</p></footnote>.
+ </p>
+ <p>
+ Une mise à jour indépendante source est une livraison de paquet faite
+ par une personne qui n'est pas le responsable officiel de ce paquet
+ avec pour objectif de corriger un bogue dans le paquet. Une mise à
+ jour indépendante source implique toujours une modification des
+ sources du paquet, même s'il ne s'agit que d'un changement dans le
+ fichier <file>debian/changelog</file>. Ce changement peut tout aussi
+ bien concerner la partie amont du source que la partie spécifique à
+ Debian. Une mise à jour indépendante source peut aussi inclure des
+ paquets spécifiques à une architecture tout comme un fichier
+ <em>diff</em> modifié.
+ </p>
+ <p>
+ Une mise à jour indépendante binaire est constituée par la
+ recompilation et l'archivage d'un paquet pour une architecture
+ donnée. Il s'agit souvent du résultat d'un effort de portage. Une mise
+ à jour indépendante binaire est la livraison d'un paquet compilé
+ (souvent pour une autre architecture) à condition que cette
+ compilation n'ait pas nécessité de modifications des sources. Dans de
+ nombreux cas, les porteurs sont obligés de modifier les sources pour
+ les rendre compilables sur leur architecture cible ; il s'agira
+ alors d'une mise à jour indépendante source et non d'une mise à jour
+ indépendante binaire. Comme vous pouvez le remarquer, nous ne faisons
+ pas de distinction entre les mises à jour indépendantes faites par des
+ porteurs et les autres mises à jour indépendantes.
+ </p>
+ <p>
+ Les mises à jour indépendantes sources et binaires sont toutes deux
+ couvertes par l'expression « mise à jour indépendante »
+ (NMU<footnote><p>Non-maintainer upload</p></footnote>). Pourtant, cela
+ conduit souvent à des confusions car beaucoup associent « mise à
+ jour indépendante » et « mise à jour indépendante
+ source ». Il faut donc rester vigilant : utilisez toujours
+ « mise à jour indépendante binaire » ou «NMU binaire »
+ pour les mises à jour indépendantes de binaires seuls.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="collaborative-maint">
+ <heading>
+ Maintenance collective
+ </heading>
+ <p>
+ « Maintenance collective » est un terme décrivant le partage
+ des devoirs de la maintenance d'un paquet Debian par plusieurs
+ personnes. Cette collaboration est presque toujours une bonne idée car
+ il en résulte généralement une meilleure qualité et un temps de
+ correction de bogues plus petit. Il est fortement recommandé que les
+ paquets de priorité <tt>Standard</tt> ou qui font partie de la base
+ aient des co-responsables.
+ </p>
+ <p>
+ Habituellement, il y a un responsable principal et un ou plusieurs
+ co-responsables. Le responsable principal est la personne dont le nom
+ est indiqué dans le champ <tt>Maintainer</tt> du fichier
+ <file>debian/control</file>. Les co-responsables sont tous les autres
+ responsables.
+ </p>
+ <p>
+ Dans sa forme la plus simple, ajouter un nouveau co-responsable est
+ assez simple :
+ <list>
+ <item>
+ <p>
+ Donner au co-responsable un accès aux sources à partir desquelles
+ vous construisez le paquet. Habituellement, cela implique que vous
+ utilisiez un système de contrôle de version comme <prgn>CVS</prgn>
+ ou <prgn>Subversion</prgn>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Ajouter les nom et adresse correctes du co-responsable au champ
+ <tt>Uploaders</tt> dans la partie globale du fichier
+ <file>debian/control</file>.
+ <example>
+Uploaders: John Buzz <jbuzz@debian.org>, Adam Rex <arex@debian.org>
+</example>
+ </p>
+ </item>
+ <item>
+ <p>
+ En utilisant le PTS (<ref id="pkg-tracking-system">), les
+ co-responsables devraient s'inscrire eux-mêmes aux paquets sources
+ appropriés.
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ La maintenance collective peut souvent être facilitée par l'utilisation
+ d'outils sur Alioth (voir <ref id="alioth">).
+ </p>
+ </sect>
+ <sect id="testing">
+ <heading>
+ La distribution <em>testing</em>
+ </heading>
+ <p>
+ </p>
+ <sect1 id="testing-basics">
+ <heading>
+ Bases
+ </heading>
+ <p>
+ Les paquets sont habituellement installés dans la distribution
+ <em>testing</em> après avoir atteint un certain degré de test dans
+ <em>unstable</em>.
+ </p>
+ <p>
+ Ils doivent être en synchronisation pour toutes les architectures et
+ ne doivent pas avoir de dépendances qui les rendraient non
+ installables ; ils doivent également n'avoir aucun bogue bloquant
+ l'inclusion du paquet dans une version stable
+ (« release-critical ») au moment où ils sont installés dans
+ <em>testing</em>. Ainsi, <em>testing</em> devrait toujours être prête
+ pour être une version candidate stable. Veuillez voir ci-dessous pour
+ les détails.
+ </p>
+ </sect1>
+ <sect1 id="testing-unstable">
+ <heading>
+ Mises à jour depuis <em>unstable</em>
+ </heading>
+ <p>
+ Les scripts qui mettent à jour la distribution <em>testing</em> sont
+ exécutés chaque jour après l'installation des paquets mis à
+ jour ; ces scripts sont appelés <em>britney</em>. Ils fabriquent
+ les fichiers <file>Packages</file> pour la distribution
+ <em>testing</em>, mais ils le font d'une manière intelligente pour
+ éviter toute incohérence et essayer de n'utiliser que des paquets sans
+ bogue.
+ </p>
+ <p>
+ L'inclusion d'un paquet d'<em>unstable</em> est soumise aux conditions
+ suivantes :
+ <list>
+ <item>
+ <p>
+ Le paquet doit avoir été disponible dans <em>unstable</em> depuis
+ 2, 5 ou 10 jours selon le champ d'urgence de l'envoi (élevée,
+ moyenne ou basse). Veuillez noter que cette urgence est
+ « collante » (« sticky »), ce qui veut dire que
+ l'envoi avec l'urgence la plus élevée depuis la précédente
+ transition dans <em>testing</em> est prise en compte. Ces délais
+ peuvent être doublés lors d'un gel de distribution, ou les
+ transitions dans <em>testing</em> peuvent être complètement
+ désactivées ;
+ </p>
+ </item>
+ <item>
+ <p>
+ Il doit avoir autant ou moins de bogues empêchant l'intégration
+ dans la distribution que la version actuellement disponible dans
+ <em>testing</em> ;
+ </p>
+ </item>
+ <item>
+ <p>
+ Il doit être disponible pour toutes les architectures pour
+ lesquelles il a été auparavant construit. <ref id="madison"> peut
+ être intéressant pour vérifier cette information ;
+ </p>
+ </item>
+ <item>
+ <p>
+ Il ne doit pas casser les dépendances d'un paquet qui est déjà
+ disponible dans <em>testing</em> ;
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets dont il dépend doivent soit être déjà disponibles dans
+ <em>testing</em> soit être acceptés dans <em>testing</em> au même
+ moment (et ils doivent remplir tous les critères nécessaires).
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ Pour savoir si un paquet a progressé ou non dans <em>testing</em>,
+ veuillez voir la sortie du script de <em>testing</em> sur la <url
+ id="&url-testing-maint;" name="page web de la distribution testing">
+ ou utilisez le programme <prgn>grep-excuses</prgn> inclus dans le
+ paquet <package>devscripts</package>. Si vous voulez rester informé de
+ la progression de vos paquets dans <em>testing</em>, vous pouvez
+ facilement le mettre dans la <manref section="5" name="crontab">.
+ </p>
+ <p>
+ Le fichier <file>update_excuses</file> ne donne pas toujours la raison
+ précise pour laquelle un paquet est refusé ; on peut avoir à la
+ chercher soi-même en regardant ce qui serait cassé avec l'inclusion du
+ paquet. La <url id="&url-testing-maint;" name="page web de la
+ distribution testing"> donne plus d'informations à propos des
+ problèmes courants qui peuvent occasionner cela.
+ </p>
+ <p>
+ Parfois, certains paquets n'entrent jamais dans <em>testing</em> parce
+ que le jeu des inter-relations est trop compliqué et ne peut être
+ résolu par le script. Voir ci-dessous pour des détails.
+ </p>
+ <p>
+ Des analyses de dépendances plus avancées sont présentées sur <url
+ id="http://bjorn.haxx.se/debian/"> — mais, attention, cette page
+ affiche également les dépendances de construction qui ne sont pas
+ considérées par britney.
+ </p>
+ <sect2 id="outdated">
+ <heading>
+ Désynchronisation
+ </heading>
+ <p>
+ Pour le script de migration dans <em>testing</em>,
+ « désynchronisé » (<em>outdated</em> veut dire ceci :
+ il y a différentes versions dans <em>unstable</em> pour les
+ architectures de version (à l'exception des architectures dans
+ fuckedarches ; fuckedarches est une liste des architectures qui
+ ne suivent pas le rythme (dans update_out.py), mais actuellement
+ cette liste est vide). « Désynchronisé » n'a rien à voir
+ avec les architectures que le paquet fournit pour <em>testing</em>.
+ </p>
+ <p>
+ Considérons cet exemple :
+ </p>
+ <p>
+ <example>
+foo | alpha | arm
+---------+-------+----
+testing | 1 | -
+unstable | 1 | 2
+</example>
+ </p>
+ <p>
+ Le paquet est désynchronisé pour alpha dans <em>unstable</em> et
+ n'entrera pas dans <em>testing</em>. Supprimer foo de
+ <em>testing</em> n'aiderait en rien, le paquet serait toujours
+ désynchronisé pour alpha et ne se propagerait pas dans
+ <em>testing</em>.
+ </p>
+ <p>
+ Cependant, si ftp-master supprime un paquet d'<em>unstable</em> (ici
+ pour arm) :
+ </p>
+ <p>
+ <example>
+foo | alpha | arm | hurd-i386
+---------+-------+-----+----------
+testing | 1 | 1 | -
+unstable | 2 | - | 1
+ </example>
+ </p>
+ <p>
+ Dans ce cas, le paquet est synchronisé pour toutes les architectures
+ de version dans <em>unstable</em> (et l'architecture supplémentaire
+ hurd-i386 ne compte pas car ce n'est pas une architecture de
+ version).
+ </p>
+ <p>
+ Quelquefois, la question est soulevée pour savoir s'il est possible
+ de permettre à des paquets de passer dans <em>testing</em> qui ne
+ sont pas encore construits pour toutes les architectures :
+ non. Simplement non. (Excepté si vous êtes responsable de glibc ou
+ équivalent).
+ </p>
+ </sect2>
+ <sect2 id="removals">
+ <heading>
+ Suppressions de <em>testing</em>
+ </heading>
+ <p>
+ Parfois, un paquet est supprimé pour permettre l'inclusion d'un autre
+ paquet : ceci ne se produit que pour permettre à un
+ <em>autre</em> paquet d'entrer, ce dernier doit être prêt pour tous
+ les autres critères. Considérons, par exemple, qu'un paquet
+ <em>a</em> ne peut pas être installé avec la nouvelle version de
+ <em>b</em> alors <em>a</em> peut être supprimé pour permettre
+ l'entrée de <em>b</em>.
+ </p>
+ <p>
+ Bien sûr, il existe une autre raison pour supprimer un paquet de
+ <em>testing</em> : le paquet est trop bogué (et avoir un seul
+ bogue RC est suffisant pour être dans cet état).
+ </p>
+ <p>
+ De plus, si un paquet a été supprimé d'<em>unstable</em> et qu'aucun
+ paquet de <em>testing</em> n'en dépend plus, il sera alors
+ automatiquement supprimé.
+ </p>
+
+ </sect2>
+ <sect2 id="circular">
+ <heading>
+ Dépendances circulaires
+ </heading>
+ <p>
+ Une situation qui n'est pas très bien gérée par britney est si un
+ paquet <em>a</em> dépend de la nouvelle version d'un paquet
+ <em>b</em> et vice versa.
+ </p>
+ <p>
+ Voici un exemple :
+ </p>
+ <p>
+ <example>
+ | testing | unstable
+--+-----------------+------------
+a | 1; dépend: b=1 | 2; dépend: b=2
+b | 1; dépend: a=1 | 2; dépend: a=2
+ </example>
+ </p>
+ <p>
+ Aucun des paquets <em>a</em> et <em>b</em> ne sera considéré pour
+ mise à jour.
+ </p>
+ <p>
+ Actuellement, ceci nécessite un coup de pouce manuel de l'équipe de
+ publication. Veuillez les contacter en envoyant un courrier
+ électronique à debian-release@lists.debian.org si cela se produit
+ pour l'un de vos paquets.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Influence d'un paquet dans <em>testing</em>
+ </heading>
+ <p>
+ Généralement, l'état d'un paquet dans <em>testing</em> ne change rien
+ pour la transition de la prochaine version d'<em>unstable</em> vers
+ <em>testing</em>, avec deux exceptions : si le nombre de bogues
+ RC du paquet est réduit, le paquet peut migrer même s'il a encore des
+ bogues RC. La seconde exception est que si la version du paquet dans
+ <em>testing</em> est désynchronisée entre les différentes
+ architectures, alors toute architecture peut être mise à jour vers la
+ version du paquet source ; cependant, cela ne peut se produire
+ que si le paquet a été précédemment forcé, si l'architecture est dans
+ fuckedarches ou s'il n'y avait pas du tout de paquet binaire de cette
+ architecture présent dans <em>unstable</em> lors de la migration dans
+ <em>testing</em>.
+ </p>
+ <p>
+ En résumé, cela veut dire : la seule influence qu'un paquet de
+ <em>testing</em> a sur la nouvelle version du même paquet est que la
+ nouvelle version peut rentrer plus facilement.
+ </p>
+ </sect2>
+ <sect2 id="details">
+ <heading>
+ Détails
+ </heading>
+ <p>
+ Si vous êtes intéressé par les détails, voici comment fonctionne
+ britney :
+ </p>
+ <p>
+ Les paquets sont examinés pour savoir si ce sont des candidats
+ valides. Cela donne le fichier « update excuses ». Les
+ raisons les plus communes pour lesquelles un paquet n'est pas
+ considéré sont la jeunesse du paquet, le nombre de bogues RC et la
+ désynchronisation pour certaines architectures. Pour cette partie de britney,
+ les responsables de version ont des marteaux de toute taille pour
+ forcer britney à considérer un paquet. (Le gel de la base est
+ également codé dans cette partie de britney.) (Il y a une chose
+ semblable pour les mises à jour binaires pures, mais cela n'est pas
+ décrit ici. Si vous êtes intéressé par cela, veuillez étudier
+ attentivement le code.)
+ </p>
+ <p>
+ Maintenant, la partie la plus complexe se produit : britney
+ tente de mettre à jour <em>testing</em> avec des candidats
+ valides ; en premier, chaque paquet individuellement, puis des
+ groupes de plus en plus larges de paquets ensemble. Chaque tentative
+ est acceptée si <em>testing</em> n'est pas moins non installable
+ après la mise à jour qu'avant celle-ci. (Avant et après cette partie,
+ certains coups de pouce (« hints ») sont traités ;
+ mais, comme seuls les responsables de version peuvent positionner des
+ coups de pouce, cela n'est probablement pas très important pour
+ vous.)
+ </p>
+ <p>
+ Si vous voulez voir plus de détails, vous pouvez le voir dans
+ merkel:/org/ftp.debian.org/testing/update_out/ (ou dans
+ ~aba/testing/update_out pour voir une configuration avec un fichier
+ de paquets plus petit). Par le web, c'est à <url
+ id="http://ftp-master.debian.org/testing/update_out_code/">.
+ </p>
+ <p>
+ Les coups de pouce sont visibles sur <url
+ id="http://ftp-master.debian.org/testing/hints/">.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1 id="t-p-u">
+ <heading>
+ Mises à jour directes dans <em>testing</em>
+ </heading>
+ <p>
+ La distribution <em>testing</em> est peuplée avec des paquets en
+ provenance d'<em>unstable</em> selon des règles expliquées
+ ci-dessus. Cependant, dans certains cas, il est nécessaire d'envoyer
+ des paquets construits seulement pour <em>testing</em>. Pour cela,
+ vous pouvez envoyer vos paquets vers
+ <em>testing-proposed-updates</em>.
+ </p>
+ <p>
+ Souvenez-vous que les paquets envoyés là ne sont pas traités
+ automatiquement, ils doivent passer entre les mains du responsable de
+ distribution. Vous devez donc avoir une bonne raison pour les y
+ envoyer. Pour savoir ce que représente une bonne raison aux yeux des
+ responsables de distribution, vous devriez lire les instructions
+ données qu'ils envoient régulièrement sur
+ &email-debian-devel-announce;.
+ </p>
+ <p>
+ Vous ne devriez pas envoyer un paquet à
+ <em>testing-proposed-updates</em> quand vous pouvez le mettre à jour
+ par <em>unstable</em>. Si vous ne pouvez faire autrement (par exemple,
+ parce que vous avez une nouvelle version de développement dans
+ <em>unstable</em>), vous pouvez utiliser cette facilité, mais il est
+ recommandé de demander l'autorisation du responsable de distribution
+ auparavant. Même si un paquet est gelé, des mises à jour par
+ <em>unstable</em> sont possibles si l'envoi dans <em>unstable</em> ne
+ tire pas de nouvelles dépendances.
+ </p>
+ <p>
+ Les numéros de version sont habituellement choisis en ajoutant le nom
+ de code de la distribution <em>testing</em> et un numéro incrémenté,
+ comme 1.2sarge1 pour le premier envoi dans
+ <em>testing-proposed-updates</em> du paquet en version 1.2.
+ </p>
+ <p>
+ Veuillez vous assurer que vous n'oubliez aucun des éléments suivants
+ lors de votre envoi :
+ <list>
+ <item>
+ <p>
+ vérifiez que votre paquet doit vraiment aller dans
+ <em>testing-proposed-updates</em> et ne peut pas passer par
+ <em>unstable</em> ;
+ </p>
+ </item>
+ <item>
+ <p>
+ vérifiez que vous n'incluez que le minimum de changements ;
+ </p>
+ </item>
+ <item>
+ <p>
+ vérifiez que vous incluez une explication appropriée dans le
+ changelog ;
+ </p>
+ </item>
+ <item>
+ <p>
+ vérifiez que vous avez bien indiqué <em>testing</em> ou
+ <em>testing-proposed-updates</em> comme votre distribution
+ cible ;
+ </p>
+ </item>
+ <item>
+ <p>
+ vérifiez que vous avez construit et testé votre paquet dans
+ <em>testing</em> et non dans <em>unstable</em> ;
+ </p>
+ </item>
+ <item>
+ <p>
+ vérifiez que votre numéro de version est plus élevé que les
+ versions de <em>testing</em> et de
+ <em>testing-proposed-updates</em> et moins élevé que celle de
+ <em>unstable</em> ;
+ </p>
+ </item>
+ <item>
+ <p>
+ après l'envoi et la construction réussie sur toutes les
+ plates-formes, contactez l'équipe de publication à
+ &email-debian-release; et demandez-leur d'approuver votre envoi.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect1>
+ <sect1 id="faq">
+ <heading>
+ Questions fréquemment posées
+ </heading>
+ <p>
+ </p>
+ <sect2 id="rc">
+ <heading>
+ Quels sont les bogues bloquant l'intégration dans la version stable
+ et comment sont-ils comptés ?
+ </heading>
+ <p>
+ Tous les bogues de gravité assez élevée sont par défaut considérés
+ comme bloquant l'intégration du paquet dans la version stable ;
+ actuellement, ce sont les bogues critiques, graves et sérieux.
+ </p>
+ <p>
+ Certains bogues sont supposés avoir un impact sur les chances que le
+ paquet a d'être diffusé dans la version stable de Debian : en
+ général, si un paquet a des bogues bloquants, il n'ira pas dans
+ <em>testing</em> et par conséquent, ne pourra pas être diffusé dans
+ <em>stable</em>.
+ </p>
+ <p>
+ Le compte des bogues d'<em>unstable</em> est effectué avec tous les
+ bogues bloquants sans étiquette de version (comme <em>potato</em>,
+ <em>woody</em>) ou avec une étiquette <em>sid</em> et également s'ils
+ ne sont ni corrigés ou marqués avec <em>sarge-ignore</em>. Le compte
+ des bogues de <em>testing</em> pour un paquet est considéré comme à
+ peu près le nombre de bogues d'<em>unstable</em> lors du dernier
+ pointage quand la version <em>testing</em> a été égale à la version
+ <em>unstable</em>.
+ </p>
+ <p>
+ Cela changera après la sortie de <em>Sarge</em> dès que nous aurons
+ des versions dans le système de suivi des bogues.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Comment est-ce que l'installation d'un paquet dans <em>testing</em>
+ peut casser d'autres paquets ?
+ </heading>
+ <p>
+ La structure des archives de la distribution est faite de telle façon
+ qu'elles ne peuvent contenir qu'une version d'un paquet ; un
+ paquet est défini par son nom. Donc, quand le paquet source acmefoo
+ est installé dans <em>testing</em> avec ses paquets binaires
+ acme-foo-bin, acme-bar-bin, libacme-foo1 et libacme-foo-dev,
+ l'ancienne version est supprimée.
+ </p>
+ <p>
+ Cependant, l'ancienne version pouvait fournir à un paquet binaire un
+ vieux soname d'une bibliothèque, comme libacme-foo0. Supprimer
+ l'ancien acmefoo va supprimer libacme-foo0, ce qui va casser tout
+ paquet qui en dépend.
+ </p>
+ <p>
+ Évidemment, cela touche principalement des paquets qui fournissent
+ des jeux changeant de paquets binaires dans différentes versions (par
+ suite, principalement des bibliothèques). Cependant, cela va aussi
+ toucher des paquets sur lesquels une dépendance versionnée a été
+ déclarée du type ==, <= ou <<.
+ </p>
+ <p>
+ Quand le jeu de paquets binaires fournis par un paquet source change
+ de cette façon, tous les paquets qui dépendent des anciens binaires
+ doivent être mis à jour pour dépendre de la nouvelle version à la
+ place. Comme l'installation d'un tel paquet source dans
+ <em>testing</em> casse tous les paquets qui en dépendent dans
+ <em>testing</em>, une certaine attention doit y être portée :
+ tous les paquets en dépendant doivent être mis à jour et prêts à être
+ installés eux-même pour qu'ils ne cassent pas et, une fois que tout
+ est prêt, une intervention manuelle du responsable de version ou d'un
+ de ses assistants est normalement requise.
+ </p>
+ <p>
+ Si vous avez des problèmes avec des groupes compliqués de paquets
+ comme ceci, contactez debian-devel ou debian-release en demandant de
+ l'aide.
+ </p>
+ </sect2>
+ </sect1>
+ </sect>
+ </chapt>
+ <chapt id="best-pkging-practices">
+ <heading>
+ Les meilleurs pratiques pour la construction des paquets
+ </heading>
+ <p>
+ La qualité de Debian est principalement due à la <url
+ id="&url-debian-policy;" name="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.
+ </p>
+ <p>
+ 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.
+ </p>
+ <sect id="bpp-debian-rules">
+ <heading>
+ Les meilleures pratiques pour le fichier <file>debian/rules</file>
+ </heading>
+ <p>
+ Les recommandations suivantes s'appliquent au fichier
+ <file>debian/rules</file>. 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.
+ </p>
+ <sect1 id="helper-scripts">
+ <heading>
+ Scripts d'aide
+ </heading>
+ <p>
+ La raison sous-jacente à l'utilisation des scripts d'aide dans le
+ fichier <file>debian/rules</file> est que cela permet aux responsables
+ d'utiliser et de partager une logique commune pour un grand nombre de
+ paquets. Prenez, par exemple, la question de l'installation des
+ entrées de menu : vous avez besoin de placer un fichier dans
+ <file>/usr/share/menu</file> (ou <file>/usr/lib/menu</file> pour des
+ fichiers de menu binaires exécutables, si nécessaire) 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é.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ L'<ref id="tools"> contient plusieurs systèmes d'aide. Le plus courant
+ et le meilleur (à notre avis) système est
+ <package>debhelper</package>. Les précédents systèmes d'aide comme
+ <package>debmake</package> é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. <package>debhelper</package>, à l'inverse, consiste en un
+ certain nombre de petits programmes <prgn>dh_*</prgn>. Par exemple,
+ <prgn>dh_installman</prgn> installe et compacte les pages de manuel,
+ <prgn>dh_installmenu</prgn> 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
+ <file>debian/rules</file>.
+ </p>
+ <p>
+ Vous pouvez débuter avec <package>debhelper</package> en lisant
+ <manref section="1" name="debhelper"> et en regardant les exemples
+ fournis avec le paquet. <prgn>dh_make</prgn> du paquet
+ <package>dh-make</package> (voir <ref id="dh-make">) peut être utilisé
+ pour convertir un paquet source « vierge » en une version
+ utilisant <package>debhelper</package>. Ce raccourci ne devrait
+ cependant pas vous faire croire que vous n'avez pas besoin de
+ comprendre les scripts individuels <prgn>dh_*</prgn>. 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.
+ </p>
+ <p>
+ Plusieurs personnes pensent que des fichiers <file>debian/rules</file>
+ 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 <file>debian/rules</file> sont disponibles à <url
+ id="&url-rules-files;">.
+ </p>
+ </sect1>
+ <sect1 id="multiple-patches">
+ <heading>
+ Séparer vos correctifs en plusieurs fichiers
+ </heading>
+ <p>
+ 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
+ <file>.diff.gz</file>) et décider quels correctifs il vous faut
+ enlever parce que les bogues ont été corrigés en amont.
+ </p>
+ <p>
+ 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 (<file>.diff.gz</file>), habituellement dans le
+ répertoire <file>debian/</file>. La seule différence est qu'ils ne
+ sont pas appliqués immédiatement par dpkg-source, mais par la règle
+ <tt>build</tt> du fichier <file>debian/rules</file>. Inversement, ils
+ sont annulés par la règle <tt>clean</tt>.
+ </p>
+ <p>
+ <prgn>dbs</prgn> 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 <package>dbs</package>
+ pour plus d'informations et au paquet <package>hello-dbs</package>
+ pour un exemple.
+ </p>
+ <p>
+ <prgn>Dpatch</prgn> fournit également ces fonctions, mais il est prévu
+ pour être encore plus facile d'utilisation. Veuillez voir le paquet
+ <package>dpatch</package> pour la documentation et des exemples (dans
+ <file>/usr/share/doc/dpatch</file>).
+ </p>
+ </sect1>
+ <sect1 id="multiple-binary">
+ <heading>
+ Paquets binaires multiples
+ </heading>
+ <p>
+ 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
+ <package>vim</package>) ou pour créer plusieurs petits paquets au lieu
+ d'un seul gros (afin, par exemple, que l'utilisateur puisse n'installer
+ que la partie nécessaire et ainsi économiser de l'espace disque).
+ </p>
+ <p>
+ Le second cas peut facilement être géré dans le fichier
+ <file>debian/rules</file>. 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
+ <prgn>install</prgn> ou <prgn>dh_install</prgn> du paquet
+ <package>debhelper</package>. 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
+ <file>debian/control</file>.
+ </p>
+ <p>
+ Le premier cas est un peu plus difficile car il implique de multiples
+ recompilations du même logiciel, mais avec différentes options de
+ configuration. Le paquet source <package>vim</package> est un exemple
+ de la façon de gérer cela avec un fichier <file>rules</file> écrit à
+ la main.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="bpp-debian-control">
+ <heading>
+ Les meilleures pratiques pour le fichier <file>debian/control</file>
+ </heading>
+ <p>
+ Les pratiques suivantes sont relatives au fichier
+ <file>debian/control</file>. Elles viennent en complément des <url
+ id="&url-debian-policy;ch-binary.html#s-descriptions" name="règles pour
+ les descriptions des paquets">.
+ </p>
+ <p>
+ La description du paquet, telle qu'elle est définie par le champ
+ correspondant dans le fichier <file>control</file>, contient à la fois
+ le résumé du paquet et la description longue pour le paquet. <ref
+ id="bpp-desc-basics"> décrit des lignes générales pour les deux parties
+ de la description. Ensuite, <ref id="bpp-pkg-synopsis"> fournit des
+ principes spécifiques pour le résumé et <ref id="bpp-pkg-desc">
+ contient des principes spécifiques pour la description longue.
+ </p>
+ <sect1 id="bpp-desc-basics">
+ <heading>
+ Les règles générales pour les descriptions des paquets
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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 ».
+ </p>
+ <p>
+ Si vous avez des problèmes pour écrire votre description, vous pouvez
+ l'envoyer à &email-debian-l10n-english; et demander un retour
+ d'informations.
+ </p>
+ </sect1>
+ <sect1 id="bpp-pkg-synopsis">
+ <heading>
+ Le résumé du paquet ou description courte
+ </heading>
+ <p>
+ 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).
+ </p>
+ <p>
+ 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 »).
+ </p>
+ <p>
+ Cela peut vous aider d'imaginer le résumé combiné avec le nom du
+ paquet de la façon suivante :
+ <example><var>nom-paquet</var> est un <var>résumé</var>.</example>
+ Sinon, il peut être plus compréhensible de le voir comme
+ <example><var>nom-paquet</var> est <var>résumé</var>.</example>
+ ou, si le nom du paquet est lui-même un pluriel (comme
+ « developer-tools »)
+ <example><var>nom-paquet</var> sont <var>résumé</var>.</example>
+ 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.
+ </p>
+ </sect1>
+ <sect1 id="bpp-pkg-desc">
+ <heading>
+ La description longue
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ La description longue devrait toujours être constituée de phrases
+ complètes.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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 ») ?
+ </p>
+ <p>
+ Soyez attentif à éviter les fautes d'orthographe et de
+ grammaire. N'oubliez pas votre vérificateur orthographique. Les deux
+ programmes <prgn>ispell</prgn> et <prgn>aspell</prgn> possèdent des
+ modes spéciaux pour vérifier les fichiers
+ <file>debian/control</file> :
+ <example>ispell -d american -g debian/control</example>
+ <example>aspell -d en -D -c debian/control</example>
+ </p>
+ <p>
+ Les utilisateurs s'attendent habituellement à ce que les réponses aux
+ questions suivantes soient présentes dans la description du
+ paquet :
+ <list>
+ <item>
+ <p>
+ Qu'est-ce que fait le paquet ? Si c'est un ajout d'un autre
+ paquet, la description courte du paquet dont c'est un ajout devrait
+ le spécifier.
+ </p>
+ </item>
+ <item>
+ <p>
+ Pourquoi est-ce qu'il voudrait installer ce paquet ? Ceci est
+ lié à ce qui est ci-dessus, mais pas tout à fait (c'est un client
+ de messagerie ; il est cool, rapide, s'interface avec PGP,
+ LDAP et IMAP, a les fonctionnalités X, Y et Z).
+ </p>
+ </item>
+ <item>
+ <p>
+ Si ce paquet ne devrait pas être installé directement, mais être
+ tiré par un autre paquet, cela devrait être mentionné.
+ </p>
+ </item>
+ <item>
+ <p>
+ Si le paquet est expérimental, ou s'il y a d'autres raisons pour
+ lesquelles il ne devrait pas être utilisé, si un autre paquet
+ devrait être utilisé à la place, cela devrait également être
+ présent.
+ </p>
+ </item>
+ <item>
+ <p>
+ En quoi le paquet est différent des paquets concurrents ?
+ Est-ce que c'est une meilleure implémentation ? A-t-il plus de
+ fonctionnalités, des fonctionnalités différentes ? Pourquoi
+ devrait-il choisir ce paquet ?
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect1>
+ <sect1 id="bpp-upstream-info">
+ <heading>
+ Page d'accueil amont
+ </heading>
+ <p>
+ Nous vous recommandons d'ajouter l'adresse de la page d'accueil du
+ paquet à la description du paquet dans le fichier
+ <file>debian/control</file>. Cette information devrait être ajoutée à
+ la fin de la description en utilisant le format suivant :
+ <example> .
+ Homepage: http://some-project.some-place.org/</example>
+ 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 à <url id="&url-eg-desc-upstream-info;">.
+ </p>
+ <p>
+ Ne mettez rien s'il n'existe pas de page pour le logiciel.
+ </p>
+ <p>
+ Veuillez noter que nous espérons que ce champ sera remplacé par un
+ vrai champ de <file>debian/control</file> qui serait compris par
+ <prgn>dpkg</prgn> et <tt>&packages-host;</tt>. 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. Veuillez vous assurer que cette ligne correspond à
+ l'expression rationnelle <tt>/^ Homepage: [^ ]*$/</tt> car cela permet
+ à <file>packages.debian.org</file> de l'analyser correctement.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="bpp-debian-changelog">
+ <heading>
+ Les meilleures pratiques pour le fichier <file>debian/changelog</file>
+ </heading>
+ <p>
+ Les pratiques suivantes viennent en complément de la <url
+ id="&url-debian-policy;ch-docs.html#s-changelogs" name="directive sur
+ les fichiers changelog">.
+ </p>
+ <sect1 id="bpp-changelog-do">
+ <heading>
+ Écrire des entrées de changelog utiles
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ Ciblez <em>ce</em> 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).
+ </p>
+ <p>
+ 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
+ <file>README.Debian</file>.
+ </p>
+ <p>
+ Utilisez un langage anglais commun pour que la majorité des lecteur
+ puissent le comprendre. Évitez les abré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.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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 <ref id="upload-bugfix"> pour plus d'informations.
+ </p>
+ </sect1>
+ <sect1 id="bpp-changelog-misconceptions">
+ <heading>
+ idées fausses communes sur les entrées de changelog
+ </heading>
+ <p>
+ Les entrées de changelog <strong>ne devraient pas</strong> 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.
+ </p>
+ <p>
+ 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 <ref
+ id="upload-bugfix">.
+ </p>
+ <p>
+ Les entrées de changelog <strong>ne devraient pas</strong> ê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 à <ref id="bug-answering"> pour plus
+ d'informations sur la façon d'utiliser le système de suivi des bogues.
+ </p>
+ <p>
+ 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. Comme nous avons maintenant le suivi des versions, il
+ est suffisant de garder les entrées de changelog des mises à jour
+ indépendantes et de simplement mentionner ce fait dans votre propre
+ entrée de changelog.
+ </p>
+ </sect1>
+ <sect1 id="bpp-changelog-errors">
+ <heading>
+ Erreurs communes dans les entrées de changelogs
+ </heading>
+ <p>
+ Les exemples suivants montrent des erreurs communes ou des exemples de
+ mauvais style dans les entrées de changelog<footnote><p>NdT : Les
+ entrées de changelog sont ici affichées en français pour faciliter la
+ compréhension, mais vos entrées devront naturellement être rédigées en
+ anglais.</p></footnote>.
+ </p>
+ <p>
+ <example>
+ * Corrige tous les bogues restants.
+</example>
+ Ceci n'indique visiblement rien d'utile au lecteur.
+ </p>
+ <p>
+ <example>
+ * Correctif de Jane Random appliqué.
+</example>
+ Sur quoi portait le correctif ?
+ </p>
+ <p>
+ <example>
+ * Révision de cible d'installation la nuit dernière.
+</example>
+ 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 ?
+ </p>
+ <p>
+ <example>
+ * Corrige MRD vsync av. anciens CRTs.
+</example>
+ 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é.
+ </p>
+ <p>
+ <example>
+ * Ceci n'est pas un bogue. Closes: #nnnnnn.
+</example>
+ 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.
+ </p>
+ <p>
+ <example>
+ * A été fixé il y a longtemps, mais j'ai oublié de le fermer. Closes: #54321.
+</example>
+ 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).
+ </p>
+ <p>
+ <example>
+ * Closes: #12345, #12346, #15432.
+</example>
+ 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.
+ </p>
+ </sect1>
+ <sect1 id="bpp-news-debian">
+ <heading>
+ Compléter les changelogs avec les fichiers NEWS.Debian
+ </heading>
+ <p>
+ Les nouvelles importantes à propos des changements dans un paquet
+ peuvent également être placées dans les fichiers NEWS.Debian. Ces
+ nouvelles seront affichées par des outils comme apt-listchanges, avant
+ le reste des changelogs. Ceci est le moyen préféré pour informer les
+ utilisateurs des changements significatifs dans un paquet. Il est
+ préférable d'utiliser ce fichier plutôt que d'utiliser des notes
+ debconf car c'est moins ennuyeux et l'utilisateur peut y revenir et se
+ référer au fichier NEWS.Debian après l'installation. Et c'est mieux
+ que de lister les changements principaux dans README.Debian car
+ l'utilisateur peut facilement rater de telles notes.
+ </p>
+ <p>
+ Le format du fichier est le même que pour un fichier de changelog
+ Debian, mais il n'utilise pas d'astérisques et décrit chaque élément
+ de nouvelle dans un paragraphe complet si nécessaire plutôt que les
+ résumés concis qui iraient dans un changelog. C'est une bonne idée de
+ passer votre fichier par dpkg-parsechangelog pour vérifier son
+ formatage car il n'est pas vérifié automatiquement pendant la
+ construction comme le changelog. Voici un exemple d'un vrai fichier
+ NEWS.Debian :
+ <example>
+cron (3.0pl1-74) unstable; urgency=low
+
+ The checksecurity script is no longer included with the cron package:
+ it now has its own package, "checksecurity". If you liked the
+ functionality provided with that script, please install the new
+ package.
+
+ -- Steve Greenland <stevegr@debian.org> Sat, 6 Sep 2003 17:15:03 -0500
+</example>
+ </p>
+ <p>
+ Le fichier NEWS.Debian est installé comme
+ /usr/share/doc/<package>/NEWS.Debian.gz. Il est compressé et a
+ toujours ce nom même dans les paquets natifs Debian. Si vous utilisez
+ debhelper, dh_installchangelogs installera les fichiers debian/NEWS
+ pour vous.
+ </p>
+ <p>
+ À la différence des fichiers changelog, vous n'avez pas besoin de
+ mettre à jour les fichiers NEWS.Debian à chaque nouvelle version. Ne
+ les mettez à jour que si vous avez quelque chose de particulièrement
+ important que l'utilisateur a besoin de savoir. Si vous n'avez pas de
+ nouvelles du tout, il n'est pas nécessaire de fournir de fichier
+ NEWS.Debian dans votre paquet. Pas de nouvelles, bonne nouvelle !
+ </p>
+ </sect1>
+ </sect>
+ <sect id="bpp-debian-maint-scripts">
+ <heading>
+ Les meilleures pratiques pour les scripts de maintenance
+ </heading>
+ <p>
+ Les scripts de maintenance incluent les fichiers
+ <file>debian/postinst</file>, <file>debian/preinst</file>,
+ <file>debian/prerm</file> et <file>debian/postrm</file>. Ces scripts
+ prennent en charge 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 <url id="&url-debian-policy;" name="charte Debian">.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ Les entrée et sortie standard peuvent être redirigées (par exemple,
+ dans des tubes<footnote><p>pipes</p></footnote>) pour des besoins
+ d'enregistrement d'activité, donc vous ne devez pas supposer que ce
+ sont des tty.
+ </p>
+ <p>
+ Tous les affichages et les configurations interactives devraient être
+ minimisées. Quand cela est nécessaire, vous devriez utiliser le paquet
+ <package>debconf</package> pour l'interface. Rappelez-vous que, dans
+ tous les cas, l'affichage ne doit se faire que dans l'étape de
+ configuration, <tt>configure</tt> du script de post-installation,
+ <file>postinst</file>.
+ </p>
+ <p>
+ 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 préciser bash dans sa première ligne. Un shell POSIX
+ ou Bash sont préférés à Perl car ils permettent à
+ <package>debhelper</package> d'ajouter facilement des parties aux
+ scripts.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ Si vous avez besoin de vérifier l'existence d'une commande, vous
+ devriez utiliser quelque chose comme :
+ <example>if [ -x /usr/sbin/install-docs ]; then ...</example>
+ Si vous ne désirez pas mettre en dur le chemin d'une commande dans le
+ script de maintenance, la fonction de shell suivante conforme à POSIX
+ peut vous aider : &example-pathfind; Vous pouvez utiliser cette
+ fonction pour rechercher le <tt>$PATH</tt> pour un nom de commande
+ passé en paramètre. 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 <tt>command -v</tt>, <prgn>type</prgn> et <prgn>which</prgn>
+ ne sont pas POSIX.
+ </p>
+ <p>
+ Bien que <prgn>which</prgn> soit une alternative acceptable car il est
+ présent dans le paquet classé <em>required</em>
+ <package>debianutils</package>, il n'est pas présent dans la partition
+ racine. Autrement dit, il est placé dans <file>/usr/bin</file> au lieu
+ de <file>/bin</file>, il n'est donc pas possible de l'utiliser dans les
+ scripts qui sont exécutés avant que la partition <file>/usr</file> soit
+ montée. Cependant, la plupart des scripts n'auront pas ce problème.
+ </p>
+ </sect>
+ <sect id="bpp-config-mgmt">
+ <heading>
+ Gestion de la configuration avec <package>debconf</package>
+ </heading>
+ <p>
+ <package>Debconf</package> 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
+ <file>postinst</file>) 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 <package>debconf</package>. Ceci permettra à l'avenir des
+ installations non interactives.
+ </p>
+ <p>
+ Debconf est un bon outil, mais il est souvent mal utilisé. Plusieurs
+ erreurs communes sont référencées dans la page de manuel <manref
+ section="7" name="debconf-devel">. Vous devriez vraiment lire cette
+ page si vous décidez d'utiliser debconf. Nous documentons également
+ plusieurs des meilleures pratiques ici.
+ </p>
+ <p>
+ Ces lignes directives incluent plusieurs recommandations de style
+ d'écriture et de typographie, des considérations générales à propos de
+ l'utilisation de debconf ainsi que des recommandations plus spécifiques
+ pour certaines parties de la distribution (par exemple, le système
+ d'installation).
+ </p>
+ <sect1>
+ <heading>
+ N'abusez pas de debconf
+ </heading>
+ <p>
+ Depuis que debconf est apparu dans Debian, il a été largement abusé et
+ plusieurs critiques reçues par la distribution Debian proviennent
+ d'utilisation abusive de debconf avec la nécessité de répondre à un
+ grand nombre de questions avant d'avoir n'importe quel petit logiciel
+ d'installé.
+ </p>
+ <p>
+ Garder les notes d'utilisation à leur place : le fichier
+ NEWS.Debian ou le fichier README.Debian. N'utilisez des notes que pour
+ des notes importantes qui peuvent directement concerner l'utilisation
+ du paquet. Rappelez-vous que les notes bloqueront toujours
+ l'installation avant leur confirmation ou qu'elles embêtent
+ l'utilisateur par un courriel.
+ </p>
+ <p>
+ Choisissez avec soin les priorités des questions dans les scripts de
+ responsable. Reportez-vous à <manref section="7" name="debconf-devel">
+ pour plus de détails sur les priorités. La plupart des questions
+ devraient utiliser un priorité moyenne ou basse.
+ </p>
+ </sect1>
+ <sect1>
+ <heading>
+ Recommandations générales pour les auteurs et traducteurs
+ </heading>
+ <p>
+ </p>
+ <sect2>
+ <heading>
+ Écrivez un anglais correct
+ </heading>
+ <p>
+ La plupart des responsables de paquets Debian n'ont pas l'anglais
+ comme langue maternelle. Écrire des modèles correctement rédigés peut
+ donc ne pas être facile pour eux.
+ </p>
+ <p>
+ Veuillez utiliser (et abuser de) la liste de discussions
+ &email-debian-l10n-english;. Faites relire vos questionnaires.
+ </p>
+ <p>
+ Des questionnaires écrits incorrectement donnent une pauvre image de
+ votre paquet, de votre travail... ou même de Debian elle-même.
+ </p>
+ <p>
+ Évitez le jargon technique autant que possible. Si certains termes
+ vous semblent courants, ils peuvent être impossibles à expliquer à
+ d'autres personnes. Si vous ne pouvez pas les éviter, essayez de les
+ expliquer (en utilisant la description étendue). Quand vous faites
+ cela, essayez d'équilibrer la verbosité et la simplicité.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Être courtois avec les traducteurs
+ </heading>
+ <p>
+ Les questionnaires debconf peuvent être traduits. Debconf, avec son
+ paquet-frêre <package>po-debconf</package>, offre un cadre de travail
+ simple pour obtenir des questionnaires traduits par les équipes de
+ traduction ou même par des individus isolés.
+ </p>
+ <p>
+ Veuillez utiliser les questionnaires basés sur gettext. Installez
+ <package>po-debconf</package> sur votre système de développement et
+ lisez sa documentation (« man po-debconf » est un bon
+ début).
+ </p>
+ <p>
+ Évitez de changer vos questionnaires trop souvent. Modifier le texte
+ des questionnaires entraîne plus de travail pour les traducteurs dont
+ les traductions seront rendues « floues »
+ (« fuzzy »). Si vous prévoyez des modifications dans vos
+ questionnaires d'origine, veuillez contacter les traducteurs. La
+ plupart des traducteurs actifs sont très réactifs et obtenir leur
+ travail inclus avec vos questionnaires modifiés vous économisera des
+ envois supplémentaires. Si vous utilisez des modèles basés sur
+ gettext, le nom et l'adresse électronique du traducteur sont
+ mentionnés dans les en-têtes des fichiers PO.
+ </p>
+ <p>
+ L'utilisation de <prgn>podebconf-report-po</prgn> du paquet
+ <package>po-debconf</package> est hautement recommandée pour avertir
+ les traducteurs qui ont des traductions incomplètes et pour leur
+ demander des mises à jour.
+ </p>
+ <p>
+ En cas de doutes, vous pouvez également contacter l'équipe de
+ traduction pour une langue donnée
+ (debian-l10n-xxxxx@lists.debian.org) ou la liste de discussions
+ &email-debian-i18n;.
+ </p>
+ <p>
+ Les appels à traductions postés sur &email-debian-i18n; avec le
+ fichier <file>debian/po/templates.pot</file> attaché ou référencé
+ dans une URL sont encouragés. Assurez-vous de mentionner dans ces
+ appels pour de nouvelles traductions quelles sont les langues pour
+ lesquelles vous avez déjà des traductions existantes, pour éviter
+ toute duplication de travail.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ « Dé-fuzzy-fiez » les traductions complètes lors des
+ corrections de typos et d'orthographe
+ </heading>
+ <p>
+ Quand le texte d'un questionnaire debconf est corrigé et que vous
+ êtes <strong>certain</strong> que les changements <strong>n'ont
+ aucun</strong> effet sur les traductions, soyez courtois avec les
+ traducteurs et dé-fuzzy-fiez leurs traductions.
+ </p>
+ <p>
+ Si vous ne le faites pas, le questionnaire entier ne sera pas traduit
+ jusqu'à ce qu'un traducteur vous envoie une mise à jour.
+ </p>
+ <p>
+ Pour <strong>dé-fuzzy-fier</strong> les traductions, vous pouvez
+ procéder ainsi :
+ <enumlist numeration="arabic">
+ <item>
+ <p>
+ enlevez tous les fichiers PO incomplets. Vous pouvez vérifier si
+ les fichiers sont complets en utilisant (il faut que le paquet
+ <package>gettext</package> soit installé) :
+ <example>for i in debian/po/*po; do echo -n $i: ; msgfmt -o /dev/null
+--statistics $i; done</example>
+ </p>
+ </item>
+ <item>
+ <p>
+ déplacez tous les fichiers ayant des chaînes floues
+ (« fuzzy ») dans un emplacement temporaire. Les fichiers
+ n'ayant aucune chaîne floue (seulement des chaînes traduites et
+ non traduites) seront conservées où ils sont placés,
+ </p>
+ </item>
+ <item>
+ <p>
+ maintenant <strong>et seulement maintenant</strong>, corrigez les
+ typos dans le questionnaire et vérifiez que les traductions ne
+ sont pas impactées (les typos, les fautes d'orthographe et parfois
+ les corrections de typographie sont généralement acceptables),
+ </p>
+ </item>
+ <item>
+ <p>
+ exécutez <prgn>debconf-updatepo</prgn>. Cela va fuzzifier toutes
+ les chaînes que vous avez modifiées dans les traductions. Vous
+ pouvez constater cela en exécutant à nouveau la commande
+ ci-dessus,
+ </p>
+ </item>
+ <item>
+ <p>
+ utilisez la commande suivante :
+ <example>for i in debian/po/*po; do msgattrib --output-file=$i --clear-fuzzy $i; done</example>
+ </p>
+ </item>
+ <item>
+ <p>
+ déplacez dans debian/po les fichiers qui avaient des chaînes
+ floues dans la première étape,
+ </p>
+ </item>
+ <item>
+ <p>
+ exécutez à nouveau <prgn>debconf-updatepo</prgn>.
+ </p>
+ </item>
+ </enumlist>
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Ne faites pas de suppositions à propos des interfaces
+ </heading>
+ <p>
+ Le texte des modèles ne doit pas faire référence aux composants
+ appartenant à l'une des interfaces debconf. Des phrases comme
+ « If you answer Yes... » n'a aucun sens pour les
+ utilisateurs d'interfaces graphiques qui utilisent des cases à cocher
+ pour les questions booléennes.
+ </p>
+ <p>
+ Les modèles de chaînes de caractères devraient éviter de mentionner
+ les valeurs par défaut dans leur description. Tout d'abord, parce que
+ cela est redondant avec les valeurs lues par les
+ utilisateurs. Ensuite, parce ces valeurs par défaut peuvent être
+ différentes selon les choix du responsable (par exemple, quand la
+ base de données debconf a été préremplie).
+ </p>
+ <p>
+ Plus généralement, essayez d'éviter de vous référer à toute action de
+ l'utilisation. Donnez simplement des faits.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ N'utilisez pas la première personne
+ </heading>
+ <p>
+ Vous devriez éviter d'utiliser la première personne (« I will do
+ this... » ou « We recommend... »). L'ordinateur n'est
+ pas une personne et les questionnaires debconf ne parlent pas pour
+ les développeurs Debian. Vous devriez utiliser une construction
+ neutre et souvent une forme passive. Pour ceux d'entre vous qui
+ écrivent déjà des publications scientifiques, écrivez simplement vos
+ questionnaires comme vous écririez un papier scientifique.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Soyez neutre dans le genre
+ </heading>
+ <p>
+ Le monde est fait d'hommes et de femmes. Veuillez utiliser des
+ constructions neutres dans le genre dans votre texte. Ce n'est pas du
+ politiquement correct, c'est simplement montrer du respect pour toute
+ l'humanité.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1>
+ <heading>
+ Définition des champs de questionnaires
+ </heading>
+ <p>
+ Cette partie donne plusieurs informations qui sont principalement
+ extraites de la page de manuel <manref section="7"
+ name="debconf-devel">.
+ </p>
+ <sect2>
+ <heading>
+ Type
+ </heading>
+ <p>
+ </p>
+ <sect3>
+ <heading>
+ string: (chaîne de caractères)
+ </heading>
+ <p>
+ Résulte en un champ d'entrée libre dans lequel l'utilisateur peut
+ écrire toute chaîne.
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ password: (mot de passe)
+ </heading>
+ <p>
+ Demande un mot de passe à l'utilisateur. Veuillez utiliser ce champ
+ avec précaution ; soyez conscient que le mot de passe que
+ l'utilisateur entre sera écrit dans la base de données debconf. Vous
+ devriez probablement enlever cette valeur de la base de données dès
+ que possible.
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ boolean: (booléen)
+ </heading>
+ <p>
+ Un choix vrai/faux. Rappelez-vous : vrai/faux, <strong>pas oui/non</strong>...
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ select: (sélection)
+ </heading>
+ <p>
+ Un choix parmi un certain nombre de valeurs. Les choix doivent être
+ spécifiés dans un champ nommé « Choices ». Séparez les
+ valeurs possibles par des virgules et des espaces ainsi :
+ Choices: yes, no, maybe
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ multiselect: (sélection multiple)
+ </heading>
+ <p>
+ Comme le type de données select, excepté que l'utilisateur peut
+ choisir un nombre quelconque d'éléments dans la liste de choix (ou
+ aucun d'entre eux).
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ note: (note)
+ </heading>
+ <p>
+ Plutôt que d'être une question en tant que telle, ce type de donnée
+ indiqué une note qui peut être affichée à l'utilisateur. Il ne
+ devrait être utilisé que pour des données importantes que
+ l'utilisateur doit réellement voir, car debconf fera tout ce qu'il
+ peut pour s'assurer que l'utilisateur le voit ; il stoppera
+ l'installation en attendant que l'utilisateur appuie sur une touche
+ ou il leur enverra même la note par courrier dans certains cas.
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ text: (texte)
+ </heading>
+ <p>
+ Ce type est maintenant considéré comme obsolète : ne l'utilisez
+ pas.
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ error: (erreur)
+ </heading>
+ <p>
+ <strong>CE TYPE DE MODÈLE N'EST PAS ENCORE GÉRÉ PAR
+ DEBCONF.</strong>
+ </p>
+ <p>
+ Il a été ajouté à cdebconf, la version C de debconf, utilisé en
+ premier dans l'installateur Debian.
+ </p>
+ <p>
+ Veuillez ne pas l'utiliser à moins que debconf ne le prenne en
+ charge.
+ </p>
+ <p>
+ Ce type est conçu pour gérer des messages d'erreur. Il est presque
+ semblable au type « note ». Des interfaces peuvent le
+ présenter différemment (par exemple, l'interface dialog de cdebconf
+ affiche un écran rouge au lieu de l'écran bleu habituel).
+ </p>
+ </sect3>
+ </sect2>
+ <sect2>
+ <heading>
+ Description: description courte et étendue
+ </heading>
+ <p>
+ Les descriptions des modèles sont composées de deux parties :
+ une courte et une étendue. La description courte est dans la ligne
+ « Description: » du questionnaire.
+ </p>
+ <p>
+ La description courte devrait être gardée courte (50 caractères
+ ou moins) pour qu'elle puisse être ajustée par la plupart des
+ interfaces debconf. La garder courte aide également les traducteurs,
+ car les traductions ont tendance à être plus longues que l'original.
+ </p>
+ <p>
+ La description courte devrait se suffire à elle-même. Certaines
+ interfaces n'affichent pas la description longue par défaut ou
+ seulement si l'utilisateur la demande explicitement ou même ne
+ l'affichent pas du tout. Évitez des choses comme « What do you
+ want to do ? ».
+ </p>
+ <p>
+ Il n'est pas nécessaire que la description courte soit une phrase
+ complète. Cela fait partie de la recommandation « gardez-la
+ courte et efficace ».
+ </p>
+ <p>
+ La description étendue ne devrait pas répéter la description courte
+ mot pour mot. Si vous ne trouvez pas de description longue, commencez
+ par à y réfléchir plus. Envoyez un message sur debian-devel. Demandez
+ de l'aide. Suivez un cours d'écriture ! La description étendue
+ est importante. Si, après tout cela, vous ne trouvez toujours rien,
+ laissez-la vide.
+ </p>
+ <p>
+ La description étendue devrait utiliser des phrases complètes. Des
+ paragraphes devraient être gardés court pour améliorer la
+ lisibilité. Ne mélangez pas deux idées dans le même paragraphe, mais
+ utilisez plutôt un autre paragraphe.
+ </p>
+ <p>
+ Ne soyez pas trop verbeux. Les utilisateurs ont tendance à ignorer les
+ écrans trop longs. Par expérience, 20 lignes est la limite à
+ éviter de dépasser car cela veut dire sinon que, dans l'interface dialogue
+ classique, les utilisateurs devront faire défiler le texte et un grand
+ nombre de personnes ne le font simplement pas.
+ </p>
+ <p>
+ Pour des règles spécifiques selon le type de questionnaire (chaîne de
+ caractères, booléen, etc.), veuillez lire ci-dessous.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Choices (choix)
+ </heading>
+ <p>
+ Ce champ devrait utilisé pour des types Select et Multiselect. Il
+ contient les choix possibles qui seront présentés aux
+ utilisateurs. Ces choix devraient être séparés par des virgules.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Default (valeur par défaut)
+ </heading>
+ <p>
+ Ce champ est facultatif. Il contient la réponse par défaut pour les
+ modèles chaîne de caractères, sélection et multi-sélection. Pour des
+ questionnaires multi-sélection, il peut contenir une liste de choix
+ séparés par des virgules.
+ </p>
+ </sect2>
+ </sect1>
+ <sect1>
+ <heading>
+ Guide de style spécifique par champ de questionnaires
+ </heading>
+ <p>
+ </p>
+ <sect2>
+ <heading>
+ Champ Type
+ </heading>
+ <p>
+ Aucune indication spécifique excepté : utilisez le type
+ approprié en vous référant à la section précédente.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Champ Description
+ </heading>
+ <p>
+ Voici ci-dessous des instructions spécifiques pour écrire
+ correctement la description (courte et étendue) selon le type de
+ questionnaire.
+ </p>
+ <sect3>
+ <heading>
+ questionnaire chaîne de caractères/mot de passe
+ </heading>
+ <p>
+ <list>
+ <item>
+ <p>
+ La description courte est une invite et <strong>non</strong> un
+ titre. Évitez des invites de style question (« IP
+ Address? ») en faveur d'invites « ouvertes »à
+ (« IP address: »). L'utilisation des deux-points est
+ recommandée.
+ </p>
+ </item>
+ <item>
+ <p>
+ La description étendue est un complément à la description
+ courte. Dans la partie étendue, expliquez ce qui est demandé,
+ plutôt que de poser la même question à nouveau en utilisant des
+ mots plus longs. Utilisez des phrases complètes. Un style
+ d'écriture trop concis est fortement découragé.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ modèles booléens
+ </heading>
+ <p>
+ <list>
+ <item>
+ <p>
+ La description courte devrait être rédigée sous la forme d'une
+ question qui devrait être gardée courte et devrait généralement
+ se terminer par un point d'interrogation. Un style d'écriture
+ concis est permis et même encouragé si la question est plutôt
+ longue (rappelez-vous que les traductions sont souvent plus
+ longue que les versions d'origine)
+ </p>
+ </item>
+ <item>
+ <p>
+ La description étendue ne devrait <strong>pas</strong> inclure de
+ question.
+ </p>
+ </item>
+ <item>
+ <p>
+ À nouveau, veuillez éviter de vous référer à des composants
+ d'interface spécifiques. Une erreur courante pour de telles
+ questionnaires est les constructions du type « if you answer
+ Yes ».
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ sélection/multi-sélection
+ </heading>
+ <p>
+ <list>
+ <item>
+ <p>
+ La description courte est une invite et <strong>non</strong> un
+ titre. N'utilisez <strong>pas</strong> des constructions inutiles
+ du type « Please choose... ». Les utilisateurs sont assez
+ intelligents pour réaliser qu'ils doivent choisir quelque chose...:)
+ </p>
+ </item>
+ <item>
+ <p>
+ La description étendue devra compléter la description
+ courte. Elle peut se référer aux choix disponibles. Elle peut
+ également mentionner que l'utilisateur peut choisir plus d'un des
+ choix disponibles si le questionnaire est du type sélection
+ multiple (bien que l'interface rende souvent cela clair).
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect3>
+ <sect3>
+ <heading>
+ Notes
+ </heading>
+ <p>
+ <list>
+ <item>
+ <p>
+ La description courte devrait être considéré comme un *titre*.
+ </p>
+ </item>
+ <item>
+ <p>
+ La description étendue est ce qui sera affiché comme une
+ description plus détaillée de la note. Faites des phrases,
+ n'utilisez pas un style d'écriture trop concis.
+ </p>
+ </item>
+ <item>
+ <p>
+ <strong>N'abusez pas de debconf.</strong> Les notes sont le moyen le plus courant
+ d'abus de debconf. Comme il est écrit dans la page de manuel de
+ debconf-devel : il est préférable de ne les utiliser que
+ pour des avertissements à propos de problèmes très sérieux. Les
+ fichiers NEWS.Debian ou README.Debian sont les endroits
+ appropriés pour un grand nombre de notes. Si, en lisant ceci,
+ vous envisagez de convertir vos modèles de type note en entrées
+ dans NEWS/Debian ou README.Debian, veuillez considérer de
+ conserver les traductions existantes pour une utilisation future.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect3>
+ </sect2>
+ <sect2>
+ <heading>
+ Champ de choix
+ </heading>
+ <p>
+ S'il est probable que les choix changent souvent, veuillez considérer
+ l'utilisation de l'astuce « __Choices ». Cela séparera
+ chaque choix individuel en une chaîne de caractères seule, ce qui
+ aidera considérablement les traducteurs à faire leur travail.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Champ par défaut
+ </heading>
+ <p>
+ S'il est probable que la valeur par défaut d'un modèle
+ « select » change selon la langue de l'utilisateur (par
+ exemple, s'il s'agit d'un choix de langue), veuillez utiliser
+ l'astuce « _DefaultChoice ».
+ </p>
+ <p>
+ Ce champ spécial permet aux traducteurs de positionner le choix le
+ plus approprié selon leur propre langue. Cela deviendra le choix par
+ défaut quand leur langue sera sélectionnée alors votre choix par
+ défaut sera utilisé pour l'anglais.
+ </p>
+ <p>
+ Un exemple tiré des modèles du paquet geneweb :
+ <example>
+Template: geneweb/lang
+Type: select
+__Choices: Afrikaans (af), Bulgarian (bg), Catalan (ca), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), English (en), Esperanto (eo), Estonian (et), Finnish (fi), French (fr), German (de), Hebrew (he), Icelandic (is), Italian (it), Latvian (lv), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv)
+# This is the default choice. Translators may put their own language here
+# instead of the default.
+# WARNING : you MUST use the ENGLISH FORM of your language
+# For instance, the french translator will need to put "French (fr)" here.
+_DefaultChoice: English (en)[ translators, please see comment in PO files]
+_Description: Geneweb default language:
+</example>
+ </p>
+ <p>
+ Notez l'utilisation de crochets qui permettent des commentaires
+ internes dans les champs debconf. Notez également l'utilisation de
+ commentaires qui apparaîtront dans les fichiers sur lesquels
+ travailleront les traducteurs.
+ </p>
+ <p>
+ Les commentaires sont nécessaires car l'astuce DefaultChoice est un
+ peu déroutante : les traducteurs peuvent y placer leur propre
+ choix.
+ </p>
+ </sect2>
+ <sect2>
+ <heading>
+ Champ par défaut
+ </heading>
+ <p>
+ N'utilisez PAS de champ par défaut vide. Si vous ne voulez pas
+ utiliser de valeurs par défaut, n'utilisez simplement pas du tout
+ Default.
+ </p>
+ <p>
+ Si vous utilisez po-debconf (et vous <strong>devriez</strong> le faire, voir 2.2),
+ veuillez considérer de rendre ce champ traduisible, si vous pensez
+ qu'il peut être traduit.
+ </p>
+ <p>
+ Si la valeur par défaut peut varier selon la langue ou le pays (par
+ exemple, la valeur par défaut pour un choix de langue), veuillez
+ considérer l'utilisation du type spécial « _DefaultChoice »
+ documenté dans <manref section="7" name="po-debconf">).
+ </p>
+ </sect2>
+ </sect1>
+ </sect>
+ <sect id="bpp-i18n">
+ <heading>
+ Internationalisation
+ </heading>
+ <sect1 id="bpp-i18n-debconf">
+ <heading>
+ Gestion des traductions de debconf
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ Le but de <package>debconf</package> était de faciliter la
+ configuration des paquets aux responsables et aux utilisateurs. À
+ l'origine, les traductions des questionnaires debconf étaient gérées
+ avec <prgn>debconf-mergetemplate</prgn>. Cependant, cette technique
+ est maintenant déconseillée ; la meilleure façon pour
+ l'internationalisation de <package>debconf</package> est d'utiliser le
+ paquet <package>po-debconf</package>. Cette méthode est plus facile
+ pour le responsable et pour les traducteurs ; des scripts de
+ transition sont fournis.
+ </p>
+ <p>
+ Lors de l'utilisation de <package>po-debconf</package>, la traduction
+ est stockée dans des fichiers <file>po</file> (à l'instar des
+ techniques de traduction de <prgn>gettext</prgn>). 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 <prgn>debconf-updatepo</prgn>, la traduction est marquée
+ comme ayant besoin de l'attention des traducteurs. Puis, lors de la
+ construction du paquet, le programme <prgn>dh_installdebconf</prgn>
+ 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 <manref section="7" name="po-debconf"> pour les
+ détails.
+ </p>
+ </sect1>
+ <sect1 id="bpp-i18n-docs">
+ <heading>
+ Documentation traduite
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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 <url
+ id="&url-i18n-doc-check;" name="doc-check"> dans le paquet
+ <package>boot-floppies</package> 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.
+ </p>
+ <p>
+ 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.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="bpp-common-situations">
+ <heading>
+ Pratiques communes d'empaquetage
+ </heading>
+ <sect1 id="bpp-autotools">
+ <heading>
+ Paquets utilisant <prgn>autoconf</prgn>/<prgn>automake</prgn>
+ </heading>
+ <p>
+ Conserver à jour les fichiers d'<prgn>autoconf</prgn>,
+ <file>config.sub</file> et <file>config.guess</file>, est critique
+ pour les porteurs, spécialement pour les architectures plus
+ changeantes. De très bonnes pratiques d'empaquetage utilisant
+ <prgn>autoconf</prgn> et/ou <prgn>automake</prgn> ont été regroupées
+ dans &file-bpp-autotools; du paquet
+ <package>autotools-dev</package>. Vous êtes vivement encouragé à lire
+ ce fichier et à suivre les recommandations indiquées.
+ </p>
+ </sect1>
+ <sect1 id="bpp-libraries">
+ <heading>
+ Bibliothèques
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ Les bonnes pratiques d'empaquetage des bibliothèques ont été
+ regroupées dans <url id="&url-libpkg-guide;" name="le guide
+ d'empaquetage des bibliothèques">.
+ </p>
+ </sect1>
+ <sect1 id="bpp-docs">
+ <heading>
+ Documentation
+ </heading>
+ <p>
+ Assurez-vous de suivre les <url id="&url-debian-policy;ch-docs.html"
+ name="règles sur la documentation">.
+ </p>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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é raisonnable
+ 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.
+ </p>
+ <p>
+ Les principaux manuels fournis devraient être enregistrés par le
+ paquet <package>doc-base</package> à l'installation. Reportez-vous à
+ la documentation du paquet <package>doc-base</package> pour plus
+ d'information.
+ </p>
+ </sect1>
+ <sect1 id="bpp-other">
+ <heading>
+ Types spécifiques de paquets
+ </heading>
+ <p>
+ Plusieurs types spécifiques de paquets ont des sous-chartes spéciales
+ et des règles et pratiques d'empaquetage correspondantes :
+ <list>
+ <item>
+ <p>
+ Les paquets liés à Perl ont leur <url id="&url-perl-policy;"
+ name="charte Perl">, quelques exemples de paquets qui suivent cette
+ charte sont <package>libdbd-pg-perl</package> (module perl binaire)
+ ou <package>libmldbm-perl</package> (module perl indépendant de
+ l'architecture).
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets liés à Python ont leur charte Python ; voir
+ &file-python-policy; dans le paquet <package>python</package>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets liés à Emacs ont leur <url id="&url-emacs-policy;"
+ name="charte Emacs">.
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets liés à Java ont leur <url id="&url-java-policy;"
+ name="charte Java">.
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets liés à Ocaml ont leur propre charte que l'on trouve
+ dans &file-ocaml-policy; du paquet <package>ocaml</package>. Un bon
+ exemple est le paquet source <package>camlzip</package>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets fournissant des DTD XML ou SGML devraient se conformer
+ aux recommandations que l'on peut trouver dans le paquet
+ <package>sgml-base-doc</package>
+ </p>
+ </item>
+ <item>
+ <p>
+ Les paquets Lisp devraient s'enregistrer avec le paquet
+ <package>common-lisp-controller</package> pour lequel vous pouvez
+ vous reporter au fichier &file-lisp-controller;.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect1>
+ <sect1 id="bpp-archindepdata">
+ <heading>
+ Données indépendantes de l'architecture
+ </heading>
+ <p>
+ 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.
+ </p>
+ <p>
+ 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 <file>Packages</file>, 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 <prgn>lintian</prgn> ou de <prgn>linda</prgn> (voir <ref
+ id="tools-lint">) quand ils sont exécutés sur l'ensemble de l'archive
+ Debian.
+ </p>
+ </sect1>
+ <sect1 id="bpp-locale">
+ <heading>
+ Avoir besoin d'une certaine locale pendant la construction
+ </heading>
+ <p>
+ Si vous avez besoin d'une certaine locale pendant la construction,
+ vous pouvez créer un fichier temporaire par cette astuce :
+ </p>
+ <p>
+ Si vous positionnez LOCPATH à l'équivalent de /usr/lib/locale, et
+ LC_ALL au nom de la locale que vous générez, vous devriez obtenir ce
+ que vous voulez sans être root. Quelque chose comme ceci :
+ <example>
+LOCALE_PATH=debian/tmpdir/usr/lib/locale
+LOCALE_NAME=en_IN
+LOCALE_CHARSET=UTF-8
+
+mkdir -p $LOCALE_PATH
+localedef -i "$LOCALE_NAME.$LOCALE_CHARSET" -f "$LOCALE_CHARSET" "$LOCALE_PATH/$LOCALE_NAME.$LOCALE_CHARSET"
+
+# Using the locale
+LOCPATH=$LOCALE_PATH LC_ALL=$LOCALE_NAME.$LOCALE_CHARSET date
+</example>
+ </p>
+ </sect1>
+ <sect1 id="bpp-transition">
+ <heading>
+ Rendre les paquets de transition conformes avec deborphan
+ </heading>
+ <p>
+ Deborphan est un programme pour aider les utilisateurs à détecter
+ quels paquets peuvent être enlevés sans problème du système, i.e. ceux
+ dont aucun paquet ne dépend. L'opération par défaut est de chercher
+ seulement parmi les sections libs et oldlibs pour débusquer les
+ bibliothèques inutilisées. Mais si l'on passe le bon paramètre, il
+ tente d'attraper d'autres paquets inutiles.
+ </p>
+ <p>
+ Par exemple, avec --guess-dummy, deborphan cherche tous les paquets de
+ transition qui étaient nécessaires pour une mise à jour, mais qui
+ peuvent sans problème être supprimés. Pour cela, il recherche la
+ chaîne de caractères « dummy » ou « transitional »
+ dans la description courte.
+ </p>
+ <p>
+ Ainsi, quand vous créez un tel paquet, assurez-vous d'ajouter ce texte
+ dans la description courte. Si vous cherchez des exemples, exécutez
+ simplement :
+ <example>apt-cache search .|grep dummy</example>
+ or
+ <example>apt-cache search .|grep transitional</example>
+ .
+ </p>
+ </sect1>
+ <sect1 id="bpp-origtargz">
+ <heading>
+ Les meilleures pratiques pour les fichiers <file>orig.tar.gz</file>
+ </heading>
+ <p>
+ Il existe deux types d'archives tar (« tarball ») source
+ d'origine : les sources vierges et les sources amont
+ réempaquetées.
+ </p>
+ <sect2 id="pristinesource">
+ <heading>
+ Sources vierges
+ </heading>
+ <p>
+ La caractéristique définissant une archive source vierge est que le
+ fichier .orig.tar.gz est identique octet-pour-octet à l'archive tar
+ officielle distribuée par l'auteur amont. <footnote><p>Nous ne
+ pouvons pas empêcher les auteurs amont de changer l'archive tar
+ qu'ils distribuent sans également incrémenter le numéro de version,
+ il ne peut donc pas y avoir de garantie qu'une archive vierge est
+ identique à ce que l'auteur amont distribue <em>actuellement</em> à
+ tout moment. La seule chose à laquelle on peut s'attendre est que
+ c'est identique à quelque chose que l'amont <em>a</em> un jour
+ distribuée. Si une différence se produit plus tard (par exemple, si
+ l'amont remarque qu'il n'a pas utilisé la compression maximale pour
+ sa distribution d'origine et qu'il la recompresse), c'est vraiment
+ trop dommage. Comme il n'y a pas de bonne façon d'envoyer un nouveau
+ .orig.tar.gz pour la même version, il n'y a même pas de raison de
+ traiter cette situation comme un bogue.</p></footnote> Cela rend
+ possible d'utiliser des vérifications de somme pour vérifier
+ facilement que tous les changements entre la version Debian et celle
+ de l'amont sont contenus dans le fichier diff Debian. Également, si
+ le source amont est énorme, les auteurs amont et d'autres qui ont
+ déjà l'archive tar amont peuvent économiser du temps de
+ téléchargement s'ils veulent inspecter votre empaquetage en détail.
+ </p>
+ <p>
+ Il n'y a pas de règles universellement acceptées suivies par les
+ auteurs amont concernant la structure des répertoires dans leur
+ archive tar, mais <prgn>dpkg-source</prgn> est cependant capable de
+ traiter la plupart des archives tar comme source vierge. Sa stratégie
+ est équivalente à la suivante :
+ </p>
+ <p>
+ <enumlist numeration="arabic">
+ <item>
+ <p>
+ Il décompacte l'archive tar dans un répertoire temporaire vide par
+ <example>
+zcat chemin/vers/<nom-du-paquet>_<version-amont>.orig.tar.gz | tar xf -
+ </example>
+ </p>
+ </item>
+ <item>
+ <p>
+ Si, après cela, le répertoire temporaire ne contient qu'un
+ répertoire et pas d'autres fichiers, <prgn>dpkg-source</prgn>
+ renomme ce répertoire en
+ <tt><packagename>-<version-amont>(.orig)</tt>. Le nom
+ du répertoire de premier niveau dans l'archive tar n'a pas
+ d'importance et est oublié.
+ </p>
+ </item>
+ <item>
+ <p>
+ Sinon, l'archive tar a dû être empaqueté sans répertoire de
+ premier niveau commun (honte à l'auteur amont !). Dans ce
+ cas, <prgn>dpkg-source</prgn> renomme le répertoire temporaire
+ <em>lui-même</em> en
+ <tt><packagename>-<version-amont>(.orig)</tt>.
+ </p>
+ </item>
+ </enumlist>
+ </p>
+ </sect2>
+ <sect2 id="repackagedorigtargz">
+ <heading>
+ Réempaquetage des sources amont
+ </heading>
+ <p>
+ Vous <strong>devriez</strong> envoyer des paquets sources avec une
+ archive tar vierge si possible, mais il peut y avoir diverses raisons
+ pour lesquelles cela n'est pas possible. C'est le cas si l'amont ne
+ distribue pas le source comme un tar gzipé du tout ou si l'archive
+ tar amont contient du matériel non libre au sens des DFSG que vous
+ devez supprimer avant l'envoi.
+ </p>
+ <p>
+ Dans tous ces cas, le développeur doit construire un fichier
+ .orig.tar.gz convenable lui-même. Nous nous référerons à une telle
+ archive tar comme un « source amont réempaqueté ». Notez
+ qu'un « source amont réempaqueté » est différent d'un
+ paquet natif Debian. Un source réempaqueté est toujours fourni avec
+ des changements spécifiques Debian dans un fichier <tt>.diff.gz</tt>
+ séparé et il a toujours un numéro de version composé de
+ <tt><source-amont></tt> et de <tt><debian-revision></tt>.
+ </p>
+ <p>
+ Il peut y avoir des cas où il est souhaitable de réempaqueter le
+ source même si l'amont distribue un fichier <tt>.tar.gz</tt> qui
+ pourrait en principe être utilisé dans sa forme vierge. Le plus
+ évident est si des économies d'espaces <em>significatives</em>
+ peuvent être réalisées en recompressant l'archive tar ou en
+ supprimant des parties fondamentalement inutiles de l'archive
+ source. Agissez à votre guise à cet endroit, mais soyez prêt à
+ défendre votre décision si vous réempaquetez un source qui aurait pu
+ être vierge.
+ </p>
+ <p>
+ Un .orig.tar.gz réempaqueté :
+ </p>
+ <p>
+ <enumlist numeration="arabic">
+ <item>
+ <p>
+ <strong>doit</strong> contenir des informations détaillées sur la
+ façon dont a été obtenu le source réempaqueté et comment cela peut
+ être reproduit dans le fichier <file>README.Debian-source</file>
+ ou un fichier similaire. Ce fichier devrait être dans la partie
+ <file>diff.gz</file> du paquet source Debian, habituellement dans
+ le répertoire <file>debian</file>, <em>pas</em> dans le
+ <file>orig.tar.gz</file> réempaqueté. C'est également une bonne
+ idée de fournir une cible <tt>get-orig-source</tt> dans votre
+ fichier <file>debian/rules</file> qui répète le processus, comme
+ décrit dans la Charte, <url
+ id="&url-debian-policy;ch-source.html#s-debianrules"
+ name="debian/rules, le principal script de construction">.
+ </p>
+ </item>
+ <item>
+ <p>
+ <strong>ne devrait pas</strong> contenir de fichiers qui ne
+ viennent pas de l'auteur amont ou dont vous avez changé le
+ contenu. <footnote><p>Comme exception spéciale, si l'omission d'un
+ fichier non libre devait entraîner l'échec de la compilation du
+ source sans assistance du diff Debian, il peut être approprié au
+ lieu de cela d'éditer les fichiers, en omettant seulement les
+ parties non libres de ceux-ci et/ou d'expliquer la situation dans
+ un fichier README.Debian-source à la racine de l'arborescence du
+ source. Mais dans ce cas, veuillez également demander instamment à
+ l'auteur amont de faciliter la séparation des composants non
+ libres du reste du source.</p></footnote>
+ </p>
+ </item>
+ <item>
+ <p>
+ <strong>devrait</strong>, sauf cas impossible pour des raisons
+ légales, préserver l'infrastructure de construction entière et de
+ portabilité fournie par l'auteur amont. Par exemple, ce n'est pas
+ une raison suffisante pour omettre un fichier qui n'est utilisé
+ que pour la construction sur MS-DOS. De manière similaire, un
+ Makefile fourni par l'amont ne devrait pas être réécrit en
+ exécutant un script configure.
+ </p>
+ <p>
+ (<em>Explication :</em> il est courant que les utilisateurs
+ Debian qui ont besoin de reconstruire un logiciel pour des
+ plates-formes non-Debian récupèrent le source d'un miroir Debian
+ plutôt que de chercher à localiser un point de distribution
+ amont).
+ </p>
+ </item>
+ <item>
+ <p>
+ <strong>devrait</strong> utiliser
+ <tt><nom-du-paquet>-<version-amont>.orig</tt> comme
+ nom du répertoire de premier niveau dans son archive tar. Cela
+ rend possible la distinction entre des archives tar vierges
+ d'archives réempaquetées.
+ </p>
+ </item>
+ <item>
+ <p>
+ <strong>devrait</strong> être gzipé avec une compression maximale.
+ </p>
+ </item>
+ </enumlist>
+ </p>
+ <p>
+ La façon canonique de réaliser les deux derniers points est de
+ laisser <tt>dpkg-source -b</tt> construire l'archive tar réempaquetée
+ à partir du répertoire décompacté.
+ </p>
+ </sect2>
+ <sect2 id="changed-binfiles">
+ <heading>
+ Changer des fichiers binaires dans le <tt>diff.gz</tt>
+ </heading>
+ <p>
+ Il est parfois nécessaire de changer des fichiers binaires contenus
+ dans l'archive tar d'origine ou d'ajouter des fichiers binaires qui
+ ne sont pas dans celle-ci. Si cela est fait en copiant simplement les
+ fichiers dans l'arborescence de l'archive debianisée,
+ <prgn>dpkg-source</prgn> ne pourra pas gérer cela. D'un autre côté,
+ selon les règles détaillées ci-dessus, vous ne pouvez pas inclure un
+ tel fichier binaire modifié dans un fichier <file>orig.tar.gz</file>
+ réempaqueté. Au lieu de cela, incluez le fichier dans le répertoire
+ <file>debian</file> dans un format <prgn>uuencode</prgn> (ou
+ semblable) <footnote><p>Le fichier devrait avoir un nom qui indique
+ clairement quel fichier binaire il encode. Habituellement, un
+ postfixe indiquant le codage devrait être ajouté au nom du fichier
+ d'origine. Notez que vous n'avez pas besoin de dépendre de
+ <package>sharutils</package> pour avoir le programme
+ <prgn>uudecode</prgn> si vous utilisez la fonction <tt>pack</tt> de
+ <prgn>perl</prgn>. Le code pourrait ressembler à ceci :
+ <example>
+uuencode-file:
+ perl -ne 'print(pack "u", $$_);' $(file) > $(file).uuencoded
+
+uudecode-file:
+ perl -ne 'print(unpack "u", $$_);' $(file).uuencoded > $(file)
+ </example>
+ </p></footnote>. Le fichier sera ensuite décodé et copié à
+ son emplacement pendant l'étape de construction. Le changement sera
+ donc visible assez facilement.
+ </p>
+ <p>
+ Certains paquets utilisent <prgn>dbs</prgn> pour gérer les correctifs
+ à leur source amont et créent toujours un nouveau fichier
+ <tt>orig.tar.gz</tt> contenant le vrai <tt>orig.tar.gz</tt> dans son
+ répertoire de premier niveau. Cela est discutable concernant la
+ préférence pour un source vierge. D'un autre côté, il est facile de
+ modifier ou d'ajouter des fichiers binaires dans ce cas : placez
+ les simplement dans le fichier <tt>orig.tar.gz</tt> nouvellement créé
+ à côté du vrai et copiez les au bon endroit pendant l'étape de
+ construction.
+ </p>
+ </sect2>
+ </sect1>
+ </sect>
+ </chapt>
+ <chapt id="beyond-pkging">
+ <heading>
+ Au-delà de l'empaquetage
+ </heading>
+ <p>
+ Debian, c'est beaucoup plus que de l'empaquetage de logiciels et de la
+ maintenance de paquets. Ce chapitre contient des informations sur les
+ façons, souvent vraiment importantes, de contribuer à Debian au-delà de
+ la simple création et maintenance de paquets.
+ </p>
+ <p>
+ En tant qu'organisation de volontaires, Debian repose sur la liberté de
+ choisir ce sur quoi l'on désire travailler et de choisir la partie la
+ plus importante à laquelle on veut consacrer son temps.
+ </p>
+ <sect id="submit-bug">
+ <heading>
+ Rapporter des bogues
+ </heading>
+ <p>
+ Nous vous encourageons à remplir des rapports de bogue quand vous
+ trouvez des bogues dans les paquets Debian. En fait, les développeurs
+ Debian sont souvent les testeurs de première ligne. Trouver et
+ rapporter les bogues dans les paquets d'autres développeurs améliore la
+ qualité de Debian.
+ </p>
+ <p>
+ Lisez les <url id="&url-bts-report;" name="instructions pour créer un
+ rapport de bogue"> dans le <url id="&url-bts;" name="système de suivi
+ des bogues"> Debian.
+ </p>
+ <p>
+ Essayez de soumettre le bogue à partir d'un compte utilisateur normal
+ sur lequel vous pouvez recevoir des courriers, pour que les personnes
+ puissent vous joindre s'ils ont besoin de plus d'informations à propos
+ du bogue. Ne soumettez pas de bogues en tant que root.
+ </p>
+ <p>
+ Vous pouvez utiliser un outil comme <manref section="1"
+ name="reportbug"> pour soumettre des bogues. Il peut automatiser et
+ dans l'ensemble faciliter le processus.
+ </p>
+ <p>
+ Assurez-vous que le bogue n'a pas déjà été rapporté. Chaque paquet
+ dispose d'une liste de bogues facilement accessible à
+ <tt>http://&bugs-host;/<var>nom_paquet</var></tt>. Des outils comme
+ <manref section="1" name="querybts"> peuvent également vous fournir ces
+ informations (et <prgn>reportbug</prgn> invoquera également
+ habituellement <prgn>querybts</prgn> avant l'envoi).
+ </p>
+ <p>
+ Essayez d'envoyer vos bogues au bon emplacement. Quand, par exemple,
+ votre bogue concerne un paquet qui réécrit des fichiers d'un autre
+ paquet, vérifiez les listes des bogues pour les <em>deux</em> paquets
+ pour éviter de créer des rapports de bogues dupliqués.
+ </p>
+ <p>
+ Vous pouvez également parcourir les bogues d'autres paquets, en les
+ regroupant s'ils sont indiqués plus d'une fois, ou en les marquant avec
+ « fixed » quand ils ont déjà été corrigés. Notez cependant
+ que si vous n'êtes ni le rapporteur du bogue, ni le responsable du
+ paquet, vous ne devriez pas fermer réellement le bogue (à moins que
+ vous n'ayez obtenu la permission du responsable).
+ </p>
+ <p>
+ De temps en temps, vous pourrez vouloir vérifier ce qui s'est passé à
+ propos des bogues que vous avez rapportés. Saisissez cette occasion
+ pour fermer les bogues que vous ne pouvez plus reproduire. Pour trouver
+ tous les bogues que vous avez rapportés, vous avez simplement besoin
+ d'aller à
+ <tt>http://&bugs-host;/from:<var><votre-adresse-de-courrier></var></tt>.
+ </p>
+ <sect1 id="submit-many-bugs">
+ <heading>
+ Ouvrir un grand nombre de rapports en une seule fois (« mass bug
+ filing »)
+ </heading>
+ <p>
+ Ouvrir un grand nombre de rapports pour le même problème sur un grand
+ nombre de paquets — plus de dix — est une
+ pratique que nous déconseillons. Prenez toutes les mesures possibles
+ pour éviter cette situation. Si le problème peut être détecté
+ automatiquement par exemple, ajoutez un nouveau test dans le paquet
+ <package>lintian</package> pour générer une erreur ou un
+ avertissement.
+ </p>
+ <p>
+ Si vous ouvrez plus de dix rapports sur le même sujet, il est
+ préférable d'indiquer votre intention sur la liste
+ &email-debian-devel; et de mentionner le fait dans le sujet de votre
+ message. Cela donnera à d'autres développeurs la possibilité de
+ vérifier que le problème existe vraiment. De plus, cela permet
+ d'éviter que plusieurs responsables ne rédigent les mêmes rapports de
+ bogue simultanément.
+ </p>
+ <p>
+ Veuillez utiliser les programmes <prgn>dd-list</prgn> et si nécessaire,
+ <prgn>whodepends</prgn> (du paquet <package>devscripts</package>) pour
+ générer une liste de tous les paquets concernés et incluez la sortie
+ dans votre courrier à &email-debian-devel;.
+ </p>
+ <p>
+ Quand vous envoyez un grand nombre de rapports sur le même sujet, vous
+ devriez les envoyer à <email>maintonly@&bugs-host;</email> pour qu'ils
+ ne soient pas redirigés vers les listes de diffusion.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="qa-effort">
+ <heading>
+ Effort d'assurance qualité
+ </heading>
+ <sect1 id="qa-daily-work">
+ <heading>
+ Travail journalier
+ </heading>
+ <p>
+ Bien qu'il y ait un groupe de personnes dédié à l'assurance qualité,
+ les devoirs de QA ne leur sont pas exclusivement réservés. Vous pouvez
+ participer à cet effort en conservant vos paquets aussi exempts de
+ bogues que possible et aussi corrects que possible selon
+ <prgn>lintian</prgn> (reportez-vous à <ref id="lintian">). Si cela
+ vous paraît impossible, vous devriez alors envisager d'abandonner
+ certains de vos paquets (reportez-vous à <ref id="orphaning">). Sinon,
+ vous pouvez demander de l'aide à d'autres personnes pour qu'elles
+ puissent rattraper votre retard dans la correction des bogues (vous
+ pouvez demander de l'aide sur &email-debian-qa; ou
+ &email-debian-devel;). En même temps, vous pouvez rechercher des
+ co-responsables (reportez-vous à <ref id="collaborative-maint">).
+ </p>
+ </sect1>
+ <sect1 id="qa-bsp">
+ <heading>
+ Les chasses aux bogues
+ </heading>
+ <p>
+ De temps en temps, le groupe d'assurance qualité organise des chasses
+ aux bogues<footnote><p><em>Bug Squashing Party</em></p></footnote>
+ pour essayer de supprimer le plus de problèmes possible. Elles sont
+ annoncées sur &email-debian-devel-announce; et l'annonce explique quel
+ domaine sera visé pendant la chasse : habituellement, il s'agit
+ des bogues empêchant l'intégration du paquet dans la distribution
+ (« Release Critical »), mais il peut arriver qu'ils décident
+ d'aider à finir une transition majeure (comme une nouvelle version de
+ Perl qui demande la recompilation de tous les modules binaires).
+ </p>
+ <p>
+ Les règles pour les mises à jour indépendantes sont différentes au
+ cours de la chasse parce que l'annonce de la chasse est considérée
+ comme une annonce préalable pour les mises à jour indépendantes. Si
+ vous avez des paquets qui peuvent être affectées par la chasse (parce
+ qu'ils ont des bogues critiques par exemple), vous devriez envoyer une
+ mise à jour pour chaque bogue correspondant pour expliquer leur état
+ actuel et ce que vous attendez de la chasse. Si vous ne voulez pas
+ d'une mise à jour indépendante ou si vous n'êtes intéressé que par un
+ correctif ou si vous voulez gérer vous-même le bogue, veuillez
+ l'expliquer dans le BTS.
+ </p>
+ <p>
+ Les personnes qui participent à la chasse ont des règles spécifiques
+ pour les mises à jour indépendantes, ils peuvent en faire une sans
+ avertissement préalable s'ils envoient leur paquet avec un délai d'au
+ moins 3 jours dans DELAYED/3-day. Toutes les autres règles de mise à
+ jour indépendante s'appliquent comme d'habitude ; ils devraient
+ envoyer le correctif de la mise à jour dans le BTS (pour l'un des
+ bogues ouverts corrigé par la mise à jour ou pour un nouveau bogue
+ marqué comme fixé). Ils devraient également respecter tout souhait du
+ responsable s'il en a exprimé.
+ </p>
+ <p>
+ Si vous ne vous sentez pas à l'aise avec une mise à jour indépendante,
+ envoyez simplement un correctif au BTS. C'est de loin meilleur qu'une
+ mise à jour défectueuse.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="contacting-maintainers">
+ <heading>
+ Contacter d'autres responsables
+ </heading>
+ <p>
+ Pendant vos activités dans Debian, vous aurez à contacter d'autres
+ responsables pour différentes raisons. Vous pourrez vouloir discuter
+ d'une nouvelle façon de coopérer au sein d'un ensemble de paquets liés,
+ ou vous pouvez simplement rappeler à quelqu'un qu'une nouvelle version
+ est disponible et que vous en avez besoin.
+ </p>
+ <p>
+ Chercher l'adresse d'un responsable d'un paquet peut être
+ fastidieux. Heureusement, il existe un alias de courrier simple,
+ <tt><paquet>@&packages-host;</tt>, qui fournit un moyen d'envoyer
+ un courrier à un responsable, quelle que soit son adresse (ou ses
+ adresses). Remplacez <tt><paquet></tt> par le nom du paquet
+ source ou binaire.
+ </p>
+ <p>
+ Vous pouvez également vouloir contacter les personnes qui sont
+ inscrites à un paquet de source donné par le <ref
+ id="pkg-tracking-system">. Vous pouvez le faire en utilisant l'adresse
+ <tt><paquet>@&pts-host;</tt>.
+ </p>
+ </sect>
+ <sect id="mia-qa">
+ <heading>
+ Gérer les responsables non joignables
+ </heading>
+ <p>
+ Si vous remarquez qu'un paquet manque de maintenance, vous devriez vous
+ assurer que le responsable est toujours actif et qu'il continue à
+ travailler sur ses paquets. Il est possible qu'il ne soit plus actif,
+ mais qu'il ne se soit pas désenregistré du système. D'un autre côté, il
+ est possible qu'il ait simplement besoin d'un rappel.
+ </p>
+ <p>
+ Il y a un système simple (la base de données MIA) dans laquelle les
+ informations sur les responsables supposés Absents En Exercice
+ (« Missing In Action) sont enregistrées. Quand un membre du groupe
+ QA contacte un responsable inactif ou trouve plus d'informations sur
+ celui-ci, c'est enregistré dans la base de données MIA. Ce système est
+ disponible dans /org/qa.debian.org/mia sur l'hôte qa.debian.org et peut
+ être interrogé avec un outil de nom <prgn>mia-query</prgn>.
+ Utilisez <example>mia-query --help</example> pour voir comment interroger
+ la base de données. Si vous déterminez qu'aucune
+ information n'a encore été enregistrée pour un responsable inactif ou
+ si vous voulez ajouter plus d'informations, vous deviez utiliser la
+ procédure suivante.
+ </p>
+ <p>
+ La première étape est de contacter poliment le responsable et
+ d'attendre une réponse pendant un temps raisonnable. Il est assez
+ difficile de définir le « temps raisonnable », mais il est
+ important de prendre en compte que la vraie vie est parfois assez
+ mouvementée. Une façon de gérer cela pourrait être d'envoyer un rappel
+ après deux semaines.
+ </p>
+ <p>
+ Si le responsable ne répond pas après quatre semaines (un mois), on
+ peut supposer qu'il n'y aura probablement pas de réponse. Si ceci se
+ produit, vous devriez poursuivre vos investigations et essayer de
+ réunir toutes les informations utiles sur ce responsable. Ceci
+ inclut :
+ </p>
+ <p>
+ <list>
+ <item>
+ <p>
+ Les informations « echelon » disponibles dans la <url
+ id="&url-debian-db;" name="base de données LDAP des développeurs">,
+ qui indiquent quand le développeur a envoyé un message pour la
+ dernière fois sur une liste de diffusion Debian (cela inclut les
+ envois via les listes debian-*-changes). Rappelez-vous également de
+ vérifier si le responsable est indiqué comme en vacances dans la
+ base de données.
+ </p>
+ </item>
+ <item>
+ <p>
+ Le nombre de paquets de ce responsable et les conditions de ces
+ paquets. En particulier, reste-t-il des bogues empêchant
+ l'intégration du paquet dans la distribution qui sont ouverts depuis
+ des lustres ? De plus, combien de bogues y a-t-il en
+ général ? Un autre point d'information important est si les
+ paquets ont subi des mises à jour indépendantes et si oui, par qui.
+ </p>
+ </item>
+ <item>
+ <p>
+ Est-ce que le responsable est actif en dehors de Debian ? Par
+ exemple, il peut avoir envoyé des messages récemment à des listes de
+ diffusion non-Debian ou des groupes de discussion.
+ </p>
+ </item>
+ </list>
+ </p>
+ <p>
+ Un problème particulier est représenté par les paquets parrainés
+ — le responsable n'est pas un développeur Debian
+ officiel. Les informations « echelon » ne sont pas
+ disponibles pour les personnes parrainées, par exemple, vous devez donc
+ trouver et contacter le responsable Debian qui a réellement envoyé le
+ paquet. Étant donné qu'il a signé le paquet, il est responsable de
+ l'envoi de toute façon et il est probable qu'il sait ce qui s'est passé
+ avec la personne qu'il parraine.
+ </p>
+ <p>
+ Il est également permis d'envoyer une demande à &email-debian-devel;
+ demandant si quelqu'un est au courant d'information sur le responsable
+ manquant. Veuillez mettre en CC: la personne en question.
+ </p>
+ <p>
+ Une fois que vous avez réuni toutes ces informations, vous pouvez
+ contacter &email-mia;. Les personnes de cet alias utiliseront les
+ informations que vous aurez fournies pour décider comment procéder. Par
+ exemple, ils peuvent abandonner un ou tous les paquets du
+ responsable. Si un paquet a subi une mise à jour indépendante, ils
+ peuvent préférer contacter le responsable ayant fait cette mise à jour
+ — il est peut-être intéressé par le paquet.
+ </p>
+ <p>
+ Un dernier mot : veuillez vous souvenir d'être poli. Nous sommes
+ tous des volontaires et nous ne pouvons dédier l'intégralité de notre
+ temps à Debian. Vous n'êtes pas non plus au courant des circonstances
+ de la personne impliquée. Elle est peut-être sérieusement malade ou
+ pourrait même nous avoir quitté — vous ne savez pas qui
+ recevra vos courriers. Imaginez comme un proche se sentira s'il lit un
+ courrier pour la personne décédée et trouve un message très impoli, en
+ colère et accusateur !
+ </p>
+ <p>
+ D'un autre côté, bien que nous soyons tous volontaires, nous avons une
+ responsabilité. Vous pouvez donc insister sur l'importance du plus
+ grand intérêt — si un responsable n'a plus le temps ou
+ l'envie, il devrait « laisser filer » et donner le paquet à
+ quelqu'un ayant plus de temps.
+ </p>
+ <p>
+ Si vous êtes intéressé pour travailler dans l'équipe MIA, veuillez
+ étudier le fichier README dans /org/qa.debian.org/mia sur qa.debian.org
+ où les détails techniques et les procédures MIA sont documentées et
+ contactez &email-mia;.
+ </p>
+ </sect>
+ <sect id="newmaint">
+ <heading>
+ Interagir avec de futurs développeurs Debian
+ </heading>
+ <p>
+ Le succès de Debian dépend de sa capacité à attirer et retenir de
+ nouveaux et talentueux volontaires. Si vous êtes un développeur
+ expérimenté, nous vous recommandons de vous impliquer dans le processus
+ d'apport des nouveaux responsables. Cette section décrit comment aider
+ les futurs développeurs.
+ </p>
+ <sect1 id="sponsoring">
+ <heading>
+ Parrainer des paquets
+ </heading>
+ <p>
+ Parrainer un paquet veut dire envoyer un paquet pour un responsable
+ qui n'est pas encore autorisé à le faire lui-même, un candidat nouveau
+ responsable. Parrainer un paquet veut aussi dire que vous en acceptez
+ la responsabilité.
+ </p>
+ <p>
+ Les nouveaux responsables ont habituellement certaines difficultés à
+ créer des paquets Debian — ceci est bien
+ compréhensible. C'est pourquoi le parrain est là pour vérifier que le
+ paquet parrainé est assez bon pour être inclus dans Debian. (Notez que
+ si le paquet parrainé est nouveau, les ftpmasters devront également
+ l'inspecter avant de l'intégrer)
+ </p>
+ <p>
+ Effectuer un parrainage en signant simplement l'envoi ou en
+ recompilant le paquet <strong>n'est définitivement pas
+ recommandé</strong>. Vous devez construire le paquet source comme si
+ vous vouliez construire l'un de vos paquets. Rappelez-vous que cela ne
+ change rien si vous avez laissé le nom du candidat développeur dans le
+ changelog et dans le fichier de contrôle, il est toujours possible de
+ savoir que c'est vous qui avez fait l'envoi.
+ </p>
+ <p>
+ Si vous êtes un gestionnaire de candidature pour un futur développeur,
+ vous pouvez également être son parrain. Ainsi, vous pourrez vérifier
+ comment le candidat gère la partie « Tâches et
+ Capacités »<footnote><p>Tasks and Skills</p></footnote> de sa
+ candidature.
+ </p>
+ </sect1>
+ <sect1>
+ <heading>
+ Gérer les paquets parrainés
+ </heading>
+ <p>
+ En envoyant un paquet sponsorisé vers Debian, vous certifiez que le
+ paquet atteint les standards minimum de Debian. Ceci implique que vous
+ devez construire et tester le paquet sur votre propre système avant
+ l'envoi.
+ </p>
+ <p>
+ Vous ne pouvez pas simplement envoyer un fichier <file>.deb</file>
+ binaire d'un filleul. En théorie, vous devriez seulement demander le
+ fichier diff et l'emplacement de l'archive source d'origine et ensuite
+ vous devriez récupérer le source et appliquer le diff vous-même. En
+ pratique, vous pouvez vouloir utiliser le paquet source construit par
+ votre filleul. Dans ce cas, vous devez vérifier qu'il n'a pas modifié
+ les fichiers sources du fichier <file>.orig.tar.gz</file> qu'il
+ fournit.
+ </p>
+ <p>
+ N'ayez pas peur de répondre au filleul et de lui indiquer les
+ changements qu'il doit faire. Cela prend souvent plusieurs échanges de
+ courriers avant que le paquet ne soit dans un état acceptable. Être un
+ parrain veut dire être un mentor.
+ </p>
+ <p>
+ Une fois que le paquet a atteint les standards Debian, construisez et
+ signez le paquet avec
+ <example>dpkg-buildpackage -k<var>KEY-ID</var></example>
+ avant de l'envoyer dans le répertoire incoming. Bien sûr, vous pouvez
+ également utiliser toute partie de votre <var>KEY-ID</var>, tant
+ qu'elle est unique dans votre porte-clés secret.
+ </p>
+ <p>
+ Le champ Maintainer du fichier <file>control</file> et le fichier
+ <file>changelog</file> devraient afficher la personne qui a fait
+ l'empaquetage, c'est-à-dire, le filleul. Celui-ci recevra donc tous
+ les courriers du système de suivi des bogues (BTS) à propos de son
+ paquet.
+ </p>
+ <p>
+ Si vous préférez laisser une trace plus visible de votre travail de
+ parrainage, vous pouvez ajouter une ligne l'indiquant dans la plus
+ récente entrée du changelog.
+ </p>
+ <p>
+ Vous êtes encouragé à garder un œil sur le suivi des paquets que
+ vous parrainez en utilisant le <ref id="pkg-tracking-system">.
+ </p>
+ </sect1>
+ <sect1>
+ <heading>
+ Recommander un nouveau développeur
+ </heading>
+ <p>
+ Reportez-vous à la page sur les <url id="&url-newmaint-advocate;"
+ name="recommandations pour un développeur prospectif"> sur le site web
+ Debian.
+ </p>
+ </sect1>
+ <sect1>
+ <heading>
+ Gérer les candidatures des nouveaux candidats
+ </heading>
+ <p>
+ Veuillez vous reporter à la <url id="&url-newmaint-amchecklist;"
+ name="liste à vérifier pour les responsables de candidatures"> sur le
+ site web Debian.
+ </p>
+ </sect1>
+ </sect>
+ </chapt>
+ <chapt id="l10n">
+ <heading>
+ Internationalisation, traduction, être internationalisé et être traduit
+ </heading>
+ <p>
+ Debian prend en charge un nombre toujours croissant de langues
+ naturelles. Même si l'anglais est votre langue maternelle et que vous ne
+ parlez pas d'autre langue, il est de votre devoir de responsable d'être
+ conscient des problèmes d'internationalisation (abrégé en i18n à cause
+ des 18 lettres entre le i et le n dans internationalisation). C'est
+ pourquoi, même si des programmes seulement en anglais vous suffisent,
+ vous devriez lire la plupart de ce chapitre.
+ </p>
+ <p>
+ Selon l'<url id="http://www.debian.org/doc/manuals/intro-i18n/"
+ name="introduction à l'i18n"> de Tomohiro KUBOTA, « I18N
+ (internationalisation) veut dire la modification d'un logiciel ou de
+ technologies liées pour qu'un logiciel puisse potentiellement gérer des
+ langues multiples, des conventions multiples et ainsi de suite dans le
+ monde entier » alors que « L10N (localisation) veut dire
+ l'implémentation dans une langue spécifique pour un logiciel déjà
+ internationalisé ».
+ </p>
+ <p>
+ La l10n et l'i18n sont interconnectées, mais les difficultés liées à
+ chacune sont très différentes. Il n'est pas vraiment difficile de
+ permettre à un programme de changer la langue dans laquelle sont
+ affichés les textes selon les paramètres de l'utilisateur, mais il est
+ très coûteux en temps de traduire réellement ces messages. D'un autre
+ côté, définir le codage des caractères est trivial, mais adapter le code
+ pour utiliser des codages de caractères différents est un problème
+ vraiment difficile.
+ </p>
+ <p>
+ En laissant de côté les problèmes d'i18n pour lesquels il n'existe pas
+ de règle générale, il n'y a pas actuellement d'infrastructure
+ centralisée pour la l10n dans Debian qui puisse être comparée au
+ mécanisme dbuild pour le portage. Le plus gros du travail doit donc être
+ réalisé manuellement.
+ </p>
+ <sect id="l10n-handling">
+ <heading>
+ Comment sont gérées les traductions au sein de Debian
+ </heading>
+ <p>
+ La gestion des traductions des textes contenus dans un paquet est
+ encore une tâche manuelle et le processus dépend du type de texte que
+ vous désirez voir traduit.
+ </p>
+ <p>
+ Pour les messages des programmes, l'infrastructure gettext est utilisée
+ pour la plupart d'entre eux. La plupart du temps, la traduction est
+ gérée en amont dans des projets comme le <url
+ id="http://www.iro.umontreal.ca/contrib/po/HTML/" name="projet de
+ traduction libre">, le <url
+ id="http://developer.gnome.org/projects/gtp/" name="projet de
+ traduction de Gnome"> ou <url id="http://i18n.kde.org/" name="celui de
+ KDE">. La seule ressource centralisée dans Debian est les <url
+ id="http://www.debian.org/intl/l10n/" name="statistiques de traduction
+ Debian centralisées"> où vous pouvez trouver des statistiques sur les
+ fichiers de traduction trouvés dans les paquets, mais il n'y a aucune
+ infrastructure pour faciliter le processus de traduction.
+ </p>
+ <p>
+ Un effort pour traduire les descriptions de paquet a démarré il y a
+ longtemps, même si les outils fournissent très peu de prise en charge
+ pour les utiliser vraiment (i.e., seul APT peut les utiliser quand il
+ est configuré convenablement). Les responsables n'ont rien à faire de
+ particulier pour gérer les traductions des descriptions de
+ paquets ; les traducteurs devraient utiliser le <url
+ id="http://ddtp.debian.org/" name="DDTP">.
+ </p>
+ <p>
+ Pour les questionnaires debconf, les responsable devraient utiliser le
+ paquet po-debconf pour faciliter le travail des traducteurs, qui
+ peuvent utiliser le DDTP pour faire leur travail (mais les équipes
+ française et brésilienne ne le font pas). On peut trouver certaines
+ statistiques à la fois sur le site du DDTP (à propos de ce qui est
+ vraiment traduit) et sur le site des <url
+ id="http://www.debian.org/intl/l10n/" name="statistiques de traduction
+ Debian centralisées"> (à propos de ce qui est intégré dans les
+ paquets).
+ </p>
+ <p>
+ Pour les pages web, chaque équipe l10n a accès au CVS correspondant et
+ les statistiques sont disponibles sur le site des statistiques de
+ traduction Debian centralisées.
+ </p>
+ <p>
+ Pour la documentation générale à propos de Debian, le processus est
+ plus ou moins le même que pour les pages web (les traducteurs ont accès
+ au CVS), mais il n'y a pas de page de statistiques.
+ </p>
+ <p>
+ Pour la documentation spécifique aux paquets (pages de manuel,
+ documents info, autres formats), presque tout est encore à faire.
+ </p>
+ <p>
+ Le plus notablement, le projet KDE gère la traduction de ses
+ documentations de la même façon que ses messages de programme.
+ </p>
+ <p>
+ Il existe un effort pour gérer les pages de manuel spécifiques Debian
+ au sein d'un <url
+ id="http://cvs.debian.org/manpages/?cvsroot=debian-doc" name="dépôt CVS
+ spécifique">.
+ </p>
+ </sect>
+ <sect id="l10n-faqm">
+ <heading>
+ FAQ I18N & L10N pour les responsables
+ </heading>
+ <p>
+ Voici une liste des problèmes que les responsables peuvent rencontrer
+ concernant l'i18n et la l10n. Lorsque vous lirez cela, gardez à
+ l'esprit qu'il n'y a pas de consensus sur ces points au sein de Debian
+ et que ce ne sont que des conseils. Si vous avez une meilleure idée
+ pour un problème donné ou si vous êtes en désaccord avec certains
+ points, vous êtes libre de fournir vos impressions pour que ce document
+ puisse être amélioré.
+ </p>
+ <sect1 id="l10n-faqm-tr">
+ <heading>
+ Comment faire en sorte qu'un texte soit traduit
+ </heading>
+ <p>
+ Pour traduire des descriptions de paquet ou des questionnaires
+ debconf, vous n'avez rien à faire, l'infrastructure du DDTP répartira
+ le matériel à traduire aux volontaires sans besoin d'interaction de
+ votre part.
+ </p>
+ <p>
+ Pour tous les autres matériels (fichiers gettext, pages de manuel ou
+ autre documentation), la meilleure solution est de placer votre texte
+ quelque part sur l'Internet et de demander sur debian-i18n la
+ traduction dans différentes langues. Certains membres des équipes de
+ traduction sont abonnés à cette liste et ils prendront soin de la
+ traduction et du processus de relecture. Une fois qu'ils ont fini,
+ vous recevrez de leur part votre document traduit dans votre boîte aux
+ lettres.
+ </p>
+ </sect1>
+ <sect1 id="l10n-faqm-rev">
+ <heading>
+ Comment faire en sorte qu'une traduction donnée soit relue
+ </heading>
+ <p>
+ De temps en temps, des personnes indépendantes traduiront certains
+ textes inclus dans votre paquet et vous demanderont d'inclure la
+ traduction dans le paquet. Cela peut devenir problématique si vous
+ n'êtes pas familier avec la langue donnée. C'est une bonne idée
+ d'envoyer le document à la liste de diffusion l10n correspondante en
+ demandant une relecture. Une fois celle-ci faite, vous devriez avoir
+ plus confiance dans la qualité de la traduction et l'inclure sans
+ crainte dans votre paquet.
+ </p>
+ </sect1>
+ <sect1 id="l10n-faqm-update">
+ <heading>
+ Comment faire en sorte qu'une traduction donnée soit mise à jour
+ </heading>
+ <p>
+ Si vous avez certaines traductions d'un texte donné qui traînent,
+ chaque fois que vous mettez à jour l'original, vous devriez demander
+ au précédent traducteur de mettre à jour sa traduction avec vos
+ nouveaux changements. Gardez à l'esprit que cette tâche demande du
+ temps ; au moins une semaine pour obtenir une mise à jour relue.
+ </p>
+ <p>
+ Si votre traducteur ne répond pas, vous pouvez demander de l'aide sur
+ la liste de diffusion correspondante. Si tout échoue, n'oubliez pas de
+ mettre un avertissement dans le document traduit, indiquant que la
+ traduction est un peu obsolète et que le lecteur devrait se référer au
+ document d'origine si possible.
+ </p>
+ <p>
+ Évitez de supprimer complètement une traduction à cause de son
+ obsolescence. Un vieux document est souvent mieux que pas de
+ documentation du tout pour les personnes non anglophones.
+ </p>
+ </sect1>
+ <sect1 id="l10n-faqm-bug">
+ <heading>
+ Comment gérer un rapport de bogue concernant une traduction
+ </heading>
+ <p>
+ La meilleure solution peut être de marquer le bogue comme « suivi
+ au développeur amont » (<em>forwarded to upstream</em>) et de
+ faire suivre le bogue à la fois au précédent traducteur et à son
+ équipe (en utilisant la liste de diffusion debian-l10n-XXX
+ correspondante).
+ </p>
+ </sect1>
+ </sect>
+ <sect id="l10n-faqtr">
+ <heading>
+ FAQ I18N & L10N pour les traducteurs
+ </heading>
+ <p>
+ Lorsque vous lirez cela, gardez à l'esprit qu'il n'y a pas de procédure
+ générale dans Debian concernant ces points et que, dans tous les cas,
+ vous devriez collaborer avec votre équipe et les responsables des
+ paquets.
+ </p>
+ <sect1 id="l10n-faqtr-help">
+ <heading>
+ Comment aider l'effort de traduction
+ </heading>
+ <p>
+ Choisissez ce que vous désirez traduire, assurez-vous que personne ne
+ travaille déjà dessus (en utilisant votre liste de diffusion
+ debian-l10n-XXX), traduisez-le, faites-le relire par d'autres
+ personnes dont c'est également la langue maternelle sur votre liste de
+ diffusion l10n et fournissez-le au responsable du paquet (voir le
+ point suivant).
+ </p>
+ </sect1>
+ <sect1 id="l10n-faqtr-inc">
+ <heading>
+ Comment fournir une traduction pour inclusion dans un paquet
+ </heading>
+ <p>
+ Assurez-vous que votre traduction est correcte (en demandant une
+ relecture sur votre liste de discussion l10n) avant de la fournir pour
+ inclusion. Cela gagnera du temps à tout le monde et évitera le chaos
+ qui résulterait d'avoir plusieurs versions du même document dans les
+ rapports de bogue.
+ </p>
+ <p>
+ La meilleure solution est de créer un rapport de bogue standard
+ contenant la traduction sur le paquet. Assurez-vous d'utiliser
+ l'étiquette « patch » et n'utilisez pas une gravité
+ supérieure à « wishlist » car l'absence de traduction n'a
+ jamais empêché un programme de fonctionner.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="l10n-best">
+ <heading>
+ Meilleures pratiques actuelles concernant la l10n
+ </heading>
+ <p>
+ <list>
+ <item>
+ <p>
+ En tant que responsable, ne modifiez jamais les traductions en
+ aucune façon (même pour reformater l'affichage) sans demander à la
+ liste de diffusion l10n correspondante. Vous risquez, par exemple,
+ de casser le codage du fichier en agissant ainsi. De plus, ce que
+ vous considérez comme une erreur peut être correct (ou même
+ nécessaire) pour une langue donnée.
+ </p>
+ </item>
+ <item>
+ <p>
+ En tant que traducteur, si vous trouvez une erreur dans le texte
+ d'origine, assurez-vous de l'indiquer. Les traducteurs sont souvent
+ les lecteurs les plus attentifs d'un texte donné et s'ils ne rendent
+ pas compte des erreurs qu'ils trouvent, personne ne le fera.
+ </p>
+ </item>
+ <item>
+ <p>
+ Dans tous les cas, rappelez-vous que le problème principal avec la
+ l10n est qu'elle demande la coopération de plusieurs personnes et
+ qu'il est très facile de démarrer une guerre incendiaire à propos de
+ petits problèmes dûs à des incompréhensions. Donc, si vous avez des
+ problèmes avec votre interlocuteur, demandez de l'aide sur la liste
+ de diffusion l10n correspondante, sur debian-i18n ou même sur
+ debian-devel (attention, cependant, les discussions sur la l10n
+ tournent très souvent à l'incendie sur cette liste :)
+ </p>
+ </item>
+ <item>
+ <p>
+ Dans tous les cas, la coopération ne peut être atteinte qu'avec un
+ <strong>respect mutuel</strong>.
+ </p>
+ </item>
+ </list>
+ </p>
+ </sect>
+ </chapt>
+ <appendix id="tools">
+ <heading>
+ Aperçu des outils du responsable Debian
+ </heading>
+ <p>
+ Cette section contient un aperçu rapide des outils dont dispose le
+ responsable. Cette liste n'est ni complète, ni définitive, il s'agit
+ juste d'un guide des outils les plus utilisés.
+ </p>
+ <p>
+ Les outils du responsable Debian sont destinés à aider les responsables
+ et libérer leur temps pour des tâches plus cruciales. Comme le dit Larry
+ Wall, il y a plus d'une manière de le faire.
+ </p>
+ <p>
+ Certaines personnes préfèrent utiliser des outils de haut niveau,
+ d'autres pas. Debian n'a pas de position officielle sur la
+ question ; tout outil conviendra du moment qu'il fait le
+ boulot. C'est pourquoi cette section n'a pas été conçue pour indiquer à
+ chacun quel outil il doit utiliser ou comment il devrait faire pour
+ gérer sa charge de responsable Debian. Elle n'est pas non plus destinée
+ à favoriser l'utilisation d'un outil aux dépens d'un autre.
+ </p>
+ <p>
+ La plupart des descriptions de ces outils proviennent des descriptions
+ de leurs paquets. Vous trouverez plus d'informations dans les
+ documentations de ces paquets. Vous pouvez aussi obtenir plus
+ d'informations avec la commande <tt>apt-cache show
+ <nom_paquet></tt>.
+ </p>
+ <sect id="tools-core">
+ <heading>
+ Outils de base
+ </heading>
+ <p>
+ Les outils suivants sont pratiquement nécessaires à tout responsable.
+ </p>
+ <sect1 id="dpkg-dev">
+ <heading>
+ <package>dpkg-dev</package>
+ </heading>
+ <p>
+ Le paquet <package>dpkg-dev</package> contient les outils (y compris
+ <prgn>dpkg-source</prgn>) nécessaires pour déballer, fabriquer et
+ livrer des paquets Debian source. Ces utilitaires fournissent les
+ fonctionnalités de bas niveau indispensables pour créer et manipuler
+ les paquets ; en tant que tels, ils sont essentiels à tout
+ responsable Debian.
+ </p>
+ </sect1>
+ <sect1 id="debconf">
+ <heading>
+ <package>debconf</package>
+ </heading>
+ <p>
+ Le paquet <package>debconf</package> fournit une interface unifiée
+ pour configurer les paquets interactivement. Il est indépendant de
+ l'interface et permet une configuration en mode texte, par une
+ interface HTML ou par boîtes de dialogue. D'autres types d'interface
+ peuvent être ajoutés sous forme de modules.
+ </p>
+ <p>
+ Vous trouverez la documentation de ce paquet dans le paquet
+ <package>debconf-doc</package>.
+ </p>
+ <p>
+ Beaucoup pensent que ce système devrait être utilisé pour tout paquet
+ nécessitant une configuration interactive ; reportez-vous à la
+ <ref id="bpp-config-mgmt">. <package>debconf</package> n'est pas
+ requis par la <em>charte Debian</em> pour le moment ; cependant,
+ cela pourra changer.
+ </p>
+ </sect1>
+ <sect1 id="fakeroot">
+ <heading>
+ <package>fakeroot</package>
+ </heading>
+ <p>
+ <package>fakeroot</package> simule les privilèges <em>root</em>. Cela
+ permet de fabriquer un paquet sans être root (en général, les paquets
+ installent des fichiers appartenant à <em>root</em>). Si vous avez
+ installé <package>fakeroot</package>, vous pouvez construire un paquet
+ en tant que simple utilisateur avec : <tt>dpkg-buildpackage
+ -rfakeroot</tt>.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-lint">
+ <heading>
+ Outils du paquet lint
+ </heading>
+ <p>
+ Selon le « Free On-line Dictionary of Computing » (FOLDOC),
+ « lint » est « un outil de traitement de langage C qui
+ contient beaucoup plus de tests complets sur le code que n'en font
+ habituellement les compilateurs C. ». Les outils du paquet lint
+ aide les responsables de paquet à trouver automatiquement des problèmes
+ habituels et des violations de charte dans leurs paquets
+ </p>
+ <sect1 id="lintian">
+ <heading>
+ <package>lintian</package>
+ </heading>
+ <p>
+ <package>lintian</package> dissèque les paquets pour y repérer des
+ bogues et des manquements aux règles de développement. Il contient des
+ tests automatisés pour vérifier de nombreuses règles et quelques
+ erreurs courantes.
+ </p>
+ <p>
+ Vous devriez récupérer la dernière version de
+ <package>lintian</package> depuis <em>unstable</em> régulièrement et
+ vérifier tous vos paquets. Notez que l'option <tt>-i</tt> donne des
+ explications détaillées sur la signification de chaque erreur, la
+ partie concernée dans la charte et le moyen habituel de régler le
+ problème.
+ </p>
+ <p>
+ Veuillez vous reporter à <ref id="sanitycheck"> pour plus
+ d'informations sur comment et quand utiliser Lintian.
+ </p>
+ <p>
+ Vous pouvez aussi obtenir un résumé de tous les problèmes reportés par
+ Lintian sur vos paquets à <url id="&url-lintian;">. Ces rapports
+ contiennent la sortie de la dernière version de <prgn>lintian</prgn>
+ pour l'ensemble de la distribution de développement
+ (<em>unstable</em>).
+ </p>
+ </sect1>
+ <sect1 id="linda">
+ <heading>
+ <package>linda</package>
+ </heading>
+ <p>
+ <package>linda</package> est un autre vérificateur de paquet. Il est
+ semblable à <package>lintian</package>, mais il a un ensemble de tests
+ différents. Il est écrit en Python plutôt qu'en Perl.
+ </p>
+ </sect1>
+ <sect1 id="debdiff">
+ <heading>
+ <package>debdiff</package>
+ </heading>
+ <p>
+ <prgn>debdiff</prgn> (du paquet <package>devscripts</package>, <ref
+ id="devscripts">) compare des listes de fichiers et des fichiers de
+ contrôle de deux paquets. C'est un simple test de régression qui peut
+ vous aider à remarquer si le nombre de paquets binaires a changé
+ depuis le dernier envoi ou si autre chose a changé dans le fichier de
+ contrôle. Bien sûr, certains des changements qu'il indique sont
+ normaux, mais il peut aider à empêcher différents accidents.
+ </p>
+ <p>
+ Vous pouvez l'exécuter sur un couple de paquets binaires :
+ <example>
+debdiff package_1-1_arch.deb package_2-1_arch.deb
+</example>
+ </p>
+ <p>
+ Ou même sur un couple de fichiers de changements :
+ <example>
+debdiff package_1-1_arch.changes package_2-1_arch.changes
+</example>
+ </p>
+ <p>
+ Pour plus d'informations, veuillez voir <manref section="1"
+ name="debdiff">.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-helpers">
+ <heading>
+ Aides pour le fichier <file>debian/rules</file>
+ </heading>
+ <p>
+ Des outils de construction de paquets rendent le processus d'écriture
+ du fichier <file>debian/rules</file> plus facile. Veuillez voir les
+ <ref id="helper-scripts"> pour plus d'informations sur les raisons pour
+ lesquelles ils peuvent être désirables ou non.
+ </p>
+ <sect1 id="debhelper">
+ <heading>
+ <package>debhelper</package>
+ </heading>
+ <p>
+ Le paquet <package>debhelper</package> regroupe un ensemble de
+ programmes qui peuvent être utilisés dans <file>debian/rules</file>
+ pour automatiser les tâches courantes relatives à la fabrication des
+ paquets Debian binaires. <package>debhelper</package> inclut des
+ programmes pour installer différents fichiers, les compresser, ajuster
+ leurs droits et intégrer votre paquet dans le système de menu Debian.
+ </p>
+ <p>
+ À la différence d'autres approches, <package>debhelper</package> est
+ divisé en plusieurs petits utilitaires simples qui agissent de manière
+ cohérente. Ce découpage permet un contrôle des opérations plus fin que
+ certains des autres « <em>outils debian/rules</em> ».
+ </p>
+ <p>
+ Il existe aussi un certain nombre de petites extensions
+ <package>debhelper</package> trop éphémères pour être
+ documentées. Vous en listerez la plupart en faisant <tt>apt-cache
+ search ^dh-</tt>.
+ </p>
+ </sect1>
+ <sect1 id="debmake">
+ <heading>
+ <package>debmake</package>
+ </heading>
+ <p>
+ <package>debmake</package> — un précurseur de
+ <package>debhelper</package> — est un assistant moins modulaire
+ pour manipuler le fichier <file>debian/rules</file>. Il inclut deux
+ programmes principaux : <prgn>deb-make</prgn>, utile au
+ développeur Debian pour convertir un paquet source normal (non-Debian)
+ en paquet source Debian, et <prgn>debstd</prgn> qui regroupe le type
+ de fonction que l'on trouve dans <package>debhelper</package>.
+ </p>
+ <p>
+ Le consensus actuel est que l'utilisation de
+ <package>debmake</package> est déconseillée au profit de
+ <package>debhelper</package>. C'est un bogue d'utiliser
+ <package>debmake</package> pour les nouveaux paquets. Les nouveaux
+ paquets utilisant <package>debmake</package> seront rejetés de
+ l'archive.
+ </p>
+ </sect1>
+ <sect1 id="dh-make">
+ <heading>
+ <package>dh-make</package>
+ </heading>
+ <p>
+ Le paquet <package>dh-make</package> contient <prgn>dh_make</prgn>, un
+ programme qui crée un squelette de fichiers nécessaires à la
+ construction d'un paquet Debian à partir d'une arborescence
+ source. Comme le nom le suggère, <prgn>dh_make</prgn> est une
+ réécriture de <package>debmake</package> et ses fichiers modèles
+ utilisent les programmes dh_* de <package>debhelper</package>.
+ </p>
+ <p>
+ Quoique les fichiers de règles fabriqués par <prgn>dh_make</prgn>
+ constituent en général une base suffisante pour un paquet fonctionnel,
+ ce ne sont que les fondations : la charge incombe toujours au
+ responsable d'affiner les fichiers générés et de rendre le paquet
+ complètement fonctionnel et en conformité avec la charte.
+ </p>
+ </sect1>
+ <sect1 id="yada">
+ <heading>
+ <package>yada</package>
+ </heading>
+ <p>
+ Le paquet <package>yada</package> est un autre assistant pour la
+ création de paquets. Il utilise un fichier
+ <file>debian/packages</file> pour générer <file>debian/rules</file> et
+ d'autres fichiers nécessaires dans le sous-répertoire
+ <file>debian/</file>. Le fichier <file>debian/packages</file> contient
+ des instructions pour construire les paquets et il n'y a pas besoin de
+ créer de fichiers <file>Makefile</file>. Il existe la possibilité
+ d'utiliser un moteur de macros semblable à celui utilisé dans les
+ fichiers SPECS des paquets source RPM.
+ </p>
+ <p>
+ Pour plus d'informations, voir le <tt><url
+ id="http://yada.alioth.debian.org/" name="site de YADA"></tt>.
+ </p>
+ </sect1>
+ <sect1 id="equivs">
+ <heading>
+ <package>equivs</package>
+ </heading>
+ <p>
+ <package>equivs</package> est un autre paquet pour faire des
+ paquets. Il est souvent conseillé pour un usage local, si vous avez
+ besoin de faire un paquet pour satisfaire des dépendances. Il est
+ aussi parfois utilisé pour faire des « méta-paquets » qui
+ sont des paquets dont l'unique objet est de dépendre d'autres paquets.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-builders">
+ <heading>
+ Constructeurs de paquets
+ </heading>
+ <p>
+ Les paquets suivants aident le processus de construction des paquets,
+ en général en contrôlant <prgn>dpkg-buildpackage</prgn> ainsi que la
+ gestion du support de tâches.
+ </p>
+ <sect1 id="cvs-buildpackage">
+ <heading>
+ <package>cvs-buildpackage</package>
+ </heading>
+ <p>
+ Le paquet <package>cvs-buildpackage</package> permet de mettre à jour
+ ou de récupérer des paquets sources dans un référentiel CVS, il permet
+ de fabriquer un paquet Debian depuis le référentiel CVS et il assiste
+ le développeur lors de l'intégration de modifications amont dans le
+ référentiel.
+ </p>
+ <p>
+ Ce paquet fournit l'infrastructure facilitant l'utilisation de CVS
+ pour le responsable Debian. Il permet de conserver des branches CVS
+ distinctes pour les distributions <em>stable</em>, <em>unstable</em>
+ et probablement <em>experimental</em> et de bénéficier des avantages
+ d'un système de contrôle de version.
+ </p>
+ </sect1>
+ <sect1 id="debootstrap">
+ <heading>
+ <package>debootstrap</package>
+ </heading>
+ <p>
+ Le paquet <package>debootstrap</package> vous permet d'amorcer un
+ système Debian de base à n'importe quel endroit dans votre système de
+ fichiers. Par « système de base », nous entendons le strict
+ minimum nécessaire pour fonctionner et installer le reste du système.
+ </p>
+ <p>
+ Avoir un système comme celui-ci peut vous servir de différentes
+ manières. Vous pouvez, par exemple, déplacer votre racine dans ce
+ système avec <prgn>chroot</prgn> pour tester vos dépendances de
+ construction. Vous pouvez aussi l'utiliser pour voir comment se
+ comporte votre paquet quand il est installé dans un environnement
+ minimum.
+ </p>
+ </sect1>
+ <sect1 id="pbuilder">
+ <heading>
+ <package>pbuilder</package>
+ </heading>
+ <p>
+ <package>pbuilder</package> construit un système « chrooté »
+ et compile des paquets dans ce système. Ceci est très utile pour
+ vérifier que les dépendances de compilation de votre paquet sont
+ correctes et pour vous assurer qu'aucune dépendance de construction
+ inutile ou incorrecte n'existe dans le paquet résultant.
+ </p>
+ <p>
+ Un paquet lié est <package>pbuilder-uml</package>, qui va même plus
+ loin en réalisant la construction au sein d'un environnement
+ « User Mode Linux ».
+ </p>
+ </sect1>
+ <sect1 id="sbuild">
+ <heading>
+ <package>sbuild</package>
+ </heading>
+ <p>
+ <package>sbuild</package> est un autre compilateur automatique. Il
+ peut aussi être utilisé dans un environnement
+ « chrooté ». Il peut être utilisé seul ou comme partie d'un
+ environnement de compilation distribué en réseau. Comme le précédent,
+ c'est une partie du système utilisé par les porteurs pour construire
+ des paquets binaires pour toutes les architectures
+ disponibles. Veuillez vous reporter à <ref id="buildd"> pour plus
+ d'informations et à <url id="&url-buildd;"> pour voir le système en
+ fonctionnement.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="uploaders">
+ <heading>
+ Téléchargeurs de paquets
+ </heading>
+ <p>
+ Les paquets suivants aident à automatiser ou à simplifier le processus
+ d'envoi de paquets dans l'archive officielle.
+ </p>
+ <sect1 id="dupload">
+ <heading>
+ <package>dupload</package>
+ </heading>
+ <p>
+ Le paquet <package>dupload</package> contient un script du même nom
+ pour mettre à jour des paquets dans l'archive Debian, tracer les mises
+ à jour et les annoncer par courrier électronique automatiquement. Vous
+ pouvez le configurer pour faire des mises à jour à d'autres endroits
+ et avec d'autres méthodes.
+ </p>
+ </sect1>
+ <sect1 id="dput">
+ <heading>
+ <package>dput</package>
+ </heading>
+ <p>
+ Le script <package>dput</package> fait à peu près la même chose que
+ <package>dupload</package>, mais il le fait différemment. Il a aussi
+ quelques fonctions supplémentaires telles que la possibilité de
+ vérifier la signature GnuPG et les sommes de contrôles avant le
+ téléchargement et la possibilité de démarrer <prgn>dinstall</prgn> en
+ mode simulation (<em>dry-run</em>) après le téléchargement.
+ </p>
+ </sect1>
+ <sect1 id="dcut">
+ <heading>
+ <package>dcut</package>
+ </heading>
+ <p>
+ Le script <package>dcut</package> (faisant partie du paquet <ref
+ id="dput">) aide à la suppression de fichiers du répertoire d'envoi
+ ftp.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-maint-automate">
+ <heading>
+ Automatisation de la maintenance
+ </heading>
+ <p>
+ Les outils suivants aident à automatiser les différentes tâches de
+ maintenance par l'ajout des entrées de changelog ou de lignes de
+ signatures, par la recherche de bogues à partir d'Emacs et par
+ l'utilisation du fichier officiel <file>config.sub</file> le plus
+ récent.
+ </p>
+ <sect1 id="devscripts">
+ <heading>
+ <package>devscripts</package>
+ </heading>
+ <p>
+ Le paquet <package>devscripts</package> contient des scripts et outils
+ qui sont très utiles pour maintenir vos paquets Debian. Parmi ces
+ scripts, vous trouverez <prgn>debchange</prgn> et <prgn>dch</prgn> qui
+ manipulent votre fichier <file>debian/changelog</file> depuis la ligne
+ de commande et <prgn>debuild</prgn> qui est construit au-dessus de
+ <prgn>dpkg-buildpackage</prgn>. L'outil <prgn>bts</prgn> est également
+ très utile pour mettre à jour l'état des rapports de bogue depuis la
+ ligne de commande. Le programme <prgn>uscan</prgn> peut être utilisé
+ pour suivre les nouvelles versions amont de vos paquets. Le programme
+ <prgn>debrsign</prgn> peut être utilisé pour signer à distance un
+ paquet avant de l'envoyer, ce qui est agréable quand la machine sur
+ laquelle vous construisez le paquet est différente de celle où
+ résident vos clés GPG.
+ </p>
+ <p>
+ Vérifiez la page de manuel <manref section="1" name="devscripts"> pour
+ une liste complète des scripts disponibles.
+ </p>
+ </sect1>
+ <sect1 id="autotools-dev">
+ <heading>
+ <package>autotools-dev</package>
+ </heading>
+ <p>
+ <package>autotools-dev</package> contient les meilleurs pratiques pour
+ des personnes assurant la maintenance de paquets qui utilisent
+ <prgn>autoconf</prgn> et/ou <prgn>automake</prgn>. Contient également
+ des fichiers canoniques <file>config.sub</file> et
+ <file>config.guess</file> qui sont connus pour fonctionner avec tous
+ les portages Debian.
+ </p>
+ </sect1>
+ <sect1 id="dpkg-repack">
+ <heading>
+ <package>dpkg-repack</package>
+ </heading>
+ <p>
+ <prgn>dpkg-repack</prgn> crée un paquet Debian à partir d'un paquet
+ qui a déjà été installé. Si des changements ont été effectués sur le
+ paquet quand il a été décompacté (par exemple, des fichiers dans
+ <file>/etc</file> ont été modifiés), le nouveau paquet héritera de ces
+ changements.
+ </p>
+ <p>
+ Cet utilitaire peut faciliter la copie de paquet d'un ordinateur vers
+ un autre ou la re-création de paquets installés sur un système, mais
+ qui ne sont plus disponibles ailleurs ou pour sauvegarder l'état
+ actuel d'un paquet avant de le mettre à jour.
+ </p>
+ </sect1>
+ <sect1 id="alien">
+ <heading>
+ <package>alien</package>
+ </heading>
+ <p>
+ <prgn>alien</prgn> convertit des paquets binaires entre différents
+ formats de paquets, y compris des paquets Debian, RPM (RedHat), LSB
+ (Linux Standard Base), Solaris et Slackware.
+ </p>
+ </sect1>
+ <sect1 id="debsums">
+ <heading>
+ <package>debsums</package>
+ </heading>
+ <p>
+ <prgn>debsums</prgn> vérifie des paquets installés par rapport à leur
+ somme de hachage MD5. Veuillez noter que tous les paquets n'ont pas de
+ sommes MD5 car elles ne sont pas requises par la charte.
+ </p>
+ </sect1>
+ <sect1 id="dpkg-dev-el">
+ <heading>
+ <package>dpkg-dev-el</package>
+ </heading>
+ <p>
+ <package>dpkg-dev-el</package> fournit des macros Emacs Lisp qui
+ apportent une aide lors de l'édition des fichiers du répertoire
+ <file>debian</file> de votre paquet. Par exemple, il y a des fonctions
+ pratiques pour lister les bogues actuels d'un paquet et pour finaliser
+ la dernière entrée d'un fichier <file>debian/changelog</file> file.
+ </p>
+ </sect1>
+ <sect1 id="dpkg-depcheck">
+ <heading>
+ <package>dpkg-depcheck</package>
+ </heading>
+ <p>
+ <prgn>dpkg-depcheck</prgn> (du paquet <package>devscripts</package>,
+ <ref id="devscripts">) exécute une commande sous <prgn>strace</prgn>
+ pour déterminer tous les paquets utilisés par la commande.
+ </p>
+ <p>
+ Pour les paquets Debian, c'est utile quand vous devez créer une ligne
+ <tt>Build-Depends</tt> pour votre nouveau paquet : exécuter le
+ processus de compilation avec <prgn>dpkg-depcheck</prgn> vous fournira
+ une bonne première approximation des dépendances de compilation. Par
+ exemple :
+ <example>
+dpkg-depcheck -b debian/rules build
+</example>
+ </p>
+ <p>
+ <prgn>dpkg-depcheck</prgn> peut aussi être utilisé pour vérifier les
+ dépendances d'exécution, particulièrement si votre paquet utilise
+ exec(2) pour exécuter d'autres programmes.
+ </p>
+ <p>
+ Pour plus d'informations, veuillez voir <manref section="1"
+ name="dpkg-depcheck">.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-porting">
+ <heading>
+ Outils de portage
+ </heading>
+ <p>
+ Les outils suivants facilitent le travail des porteurs et la
+ compilation croisée.
+ </p>
+ <sect1 id="quinn-diff">
+ <heading>
+ <package>quinn-diff</package>
+ </heading>
+ <p>
+ <package>quinn-diff</package> est utilisé pour localiser les
+ différences d'une architecture à l'autre. Il pourrait vous dire, par
+ exemple, quels paquets de l'architecture <var>X</var> doivent être
+ portés sur l'architecture <var>Y</var>.
+ </p>
+ </sect1>
+ <sect1 id="dpkg-cross">
+ <heading>
+ <package>dpkg-cross</package>
+ </heading>
+ <p>
+ <package>dpkg-cross</package> est un outil qui installe les
+ bibliothèques et les en-têtes nécessaires à une compilation
+ croisée<footnote><p><em>cross-compilation</em></p></footnote> d'une
+ manière similaire à <package>dpkg</package>. De plus, les paquets
+ <prgn>dpkg-buildpackage</prgn> et <prgn>dpkg-shlibdeps</prgn> ont été
+ améliorés pour accepter les compilations croisées.
+ </p>
+ </sect1>
+ </sect>
+ <sect id="tools-doc">
+ <heading>
+ Documentation et information
+ </heading>
+ <p>
+ Les paquets suivants fournissent des informations pour les responsables
+ ou de l'aide pour construire de la documentation
+ </p>
+ <sect1 id="debiandoc-sgml">
+ <heading>
+ <package>debiandoc-sgml</package>
+ </heading>
+ <p>
+ <package>debiandoc-sgml</package> fournit la DTD DebianDoc SGML qui
+ est habituellement utilisée pour la documentation Debian. Ce manuel,
+ par exemple, est écrit en DebianDoc. Il fournit également des scripts
+ pour construire et décliner le source en de multiples formats de
+ sortie.
+ </p>
+ <p>
+ La documentation sur la DTD peut être trouvée dans le paquet
+ <package>debiandoc-sgml-doc</package>.
+ </p>
+ </sect1>
+ <sect1 id="debian-keyring">
+ <heading>
+ <package>debian-keyring</package>
+ </heading>
+ <p>
+ Contient les clés publiques GPG et PGP des développeurs Debian. Voir
+ <ref id="key-maint"> et la documentation du paquet pour plus
+ d'informations.
+ </p>
+ </sect1>
+ <sect1 id="debview">
+ <heading>
+ <package>debview</package>
+ </heading>
+ <p>
+ <package>debview</package> fournit un mode Emacs pour voir les paquets
+ binaires Debian. Il vous permet d'examiner un paquet sans le
+ décompresser.
+ </p>
+ </sect1>
+ </sect>
+ </appendix>