5. Gestion des paquets

Ce chapitre contient des informations relatives à la création, l'envoi, la maintenance et le portage des paquets.

5.1. Nouveaux paquets

Si vous voulez créer un nouveau paquet pour la distribution Debian, vous devriez commencer par consulter la liste des paquets en souffrance et paquets souhaités (« Work-Needing and Prospective Packages » ou WNPP). Vous pourrez ainsi vérifier que personne ne travaille déjà sur ce paquet et éviter un travail en double. Consultez aussi cette page si vous voulez en savoir plus.

Supposons que personne ne travaille sur le paquet que vous visez, vous devez alors envoyer un rapport de bogue (voir Signalement de bogues) concernant le pseudopaquet wnpp. Ce courrier devra dĂ©crire le paquet que vous projetez de crĂ©er, la licence de ce paquet et l'URL Ă  laquelle le code source peut ĂȘtre tĂ©lĂ©chargĂ©. Cette liste n'est pas limitative.

You should set the subject of the bug to ITP: foo -- short description, substituting the name of the new package for foo. The severity of the bug report must be set to wishlist. Please send a copy to debian-devel@lists.debian.org by using the X-Debbugs-CC header (don't use CC:, because that way the message's subject won't indicate the bug number). If you are packaging so many new packages (>10) that notifying the mailing list in separate messages is too disruptive, send a summary after filing the bugs to the debian-devel list instead. This will inform the other developers about upcoming packages and will allow a review of your description and package name.

Veuillez ajouter « Closes: #nnnnn » au journal de modification (changelog) du nouveau paquet. Cette indication provoquera la fermeture automatique du rapport de bogue à l'installation du nouveau paquet dans l'archive (voir Fermeture des rapports de bogue lors des mises à jour).

Si vous jugez nécessaire d'ajouter des explications pour les administrateurs de la file d'attente de nouveaux paquets (NEW), veuillez les ajouter au fichier changelog, envoyer à ftpmaster@debian.org une réponse au message reçu en tant que responsable suite à votre envoi de paquet, ou une réponse au message de rejet si vous envoyez à nouveau le paquet.

Lors de la fermeture de bogues de sĂ©curitĂ©, indiquez les numĂ©ros CVE en plus de « Closes: #nnnnn ». Cela permet Ă  l'Ă©quipe de sĂ©curitĂ© de suivre les failles. Si un envoi est effectuĂ© pour corriger le bogue avant que l'identifiant d'alerte soit connu, il est conseillĂ© de modifier la mention existante du fichier changelog lors d'un envoi suivant. MĂȘme dans ce cas, veuillez inclure toutes les indications disponibles sur les origines de la situation dans la premiĂšre entrĂ©e de changelog.

Les responsables sont priés d'annoncer leurs intentions pour plusieurs raisons :

  • afin d'ĂȘtre informĂ©s si quelqu'un travaille dĂ©jĂ  sur le paquet et pour permettre Ă  d'autres membres de la liste de partager leur expĂ©rience ;

  • si d'autres personnes envisagent de travailler sur le mĂȘme paquet, elles apprendront qu'il existe un volontaire et pourront proposer de partager le travail ;

  • cela permet aux autres responsables d'en apprendre plus sur le nouveau paquet que la description courte et la formule consacrĂ©e du journal de modification « Initial release » (publication initiale) envoyĂ©e sur debian-devel-changes@lists.debian.org ;

  • cette information est utile aux utilisateurs d'unstable qui sont les premiers testeurs. Ces personnes devraient ĂȘtre incitĂ©es Ă  essayer le nouveau paquet ;

  • ces annonces donnent aux responsables et autres personnes intĂ©ressĂ©es une meilleure idĂ©e des Ă©volutions et des nouveautĂ©s du projet.

Veuillez consulter https://ftp-master.debian.org/REJECT-FAQ.html pour les raisons courantes de rejet des nouveaux paquets.

5.2. Enregistrement des modifications

Les modifications apportĂ©es au paquet doivent ĂȘtre consignĂ©es dans le fichier debian/changelog pour ĂȘtre lisibles et comprĂ©hensibles par les humains. Ces notes doivent donner une description concise des changements, expliquer les raisons de ceux-ci (si ce n'est pas clair) et indiquer quels rapports de bogue ont Ă©tĂ© clos. Il faut aussi indiquer quand le paquet a Ă©tĂ© terminĂ©. Ce fichier sera installĂ© dans /usr/share/doc/paquet/changelog.Debian.gz ou /usr/share/doc/paquet/changelog.gz pour un paquet natif.

Le fichier debian/changelog a une structure précise comportant différents champs. Le champ distribution est décrit en Choix de distribution. Plus d'informations sur la structure de ce fichier sont disponibles dans la section « debian/changelog » de la Charte Debian (« Debian Policy »).

Certaines indications du fichier changelog peuvent provoquer la fermeture automatique des rapports de bogue au moment oĂč le paquet est installĂ© dans l'archive. Voir Fermeture des rapports de bogue lors des mises Ă  jour.

Par convention, quand un paquet contient une nouvelle version amont, le fichier changelog comporte une ligne qui ressemble à :

* New upstream release.

There are tools to help you create entries and finalize the changelog for release — see devscripts (command dch), git-buildpackage (command gbp dch) and dpkg-dev-el.

Voir aussi Meilleures pratiques pour debian/changelog.

5.3. Tests du paquet

Avant d'envoyer un paquet, il faut effectuer quelques tests essentiels. Les opĂ©rations suivantes (une ancienne version du paquet est parfois nĂ©cessaire) devraient au moins ĂȘtre effectuĂ©es :

  • Run lintian over the package. You can run lintian as follows: lintian -v package-version.changes. This will check the source package as well as the binary package. If you don't understand the output that lintian generates, try adding the -i switch, which will cause lintian to output a very verbose description of the problem.

    En principe, un paquet pour lequel lintian renvoie des erreurs (elles commencent par E) ne devrait jamais ĂȘtre envoyĂ©.

    Pour en savoir plus sur lintian, voir lintian ;

  • facultativement exĂ©cuter debdiff (voir debdiff) pour analyser les modifications depuis une ancienne version si celle-ci existe ;

  • installer le paquet et s'assurer que le logiciel fonctionne sur un systĂšme unstable Ă  jour ;

  • mettre Ă  niveau le paquet Ă  partir d'une version plus ancienne vers la nouvelle version ;'

  • retirer le paquet et l'installer Ă  nouveau ;

  • l'installation, la mise Ă  niveau et le retrait des paquets peuvent ĂȘtre testĂ©s manuellement ou en utilisant l'outil piuparts ;

  • copier le paquet source dans un rĂ©pertoire diffĂ©rent puis tenter de le dĂ©compresser et de le reconstruire. Le but est de vĂ©rifier que la construction n'utilise pas de fichiers en dehors de ceux du paquet ou des permissions non prĂ©servĂ©es sur les fichiers contenus dans le fichier .diff.gz.

5.4. Agencement du paquet source

Il existe deux types de paquets source Debian :

  • les paquets natifs (« native ») pour lesquels il n'y a pas de distinction entre les sources d'origine et les correctifs appliquĂ©s pour Debian ;

  • les paquets (plus courants) avec au moins une archive, contenant les sources d'origine, accompagnĂ©e d'un fichier, contenant les modifications pour Debian.

Pour les paquets natifs, le paquet source comprend un fichier de contrÎle source Debian (.dsc) et l'archive source (.tar.{gz,bz2,xz}). Un paquet source d'un paquet non natif comprend un fichier de contrÎle source Debian, l'archive source d'origine (.orig.tar.{gz,bz2,xz}) et les modifications Debian (.diff.gz pour le format source « 1.0 » ou .debian.tar.{gz,bz2,xz} pour le format source « 3.0 (quilt) »).

Avec le format « 1.0 », le paquet est soit natif, soit non déterminé par dpkg-source au moment de la construction. Il est dorénavant recommandé de déterminer explicitement le format source en écrivant « 3.0 (quilt) » ou « 3.0 (native) » dans debian/source/format. La suite de cette partie ne traite que les paquets non natifs.

La premiĂšre fois qu'un paquet est installĂ© dans l'archive pour une version amont donnĂ©e, le fichier tar de cette version amont doit ĂȘtre envoyĂ© et mentionnĂ© dans le fichier .changes. Par la suite, ce mĂȘme fichier tar sera utilisĂ© pour gĂ©nĂ©rer les fichiers diff et .dsc et il ne sera pas nĂ©cessaire de l'envoyer Ă  nouveau.

Par dĂ©faut, dpkg-genchanges et dpkg-buildpackage incluront le fichier tar amont si et seulement si la prĂ©cĂ©dente modification de changelog mentionne une version amont diffĂ©rente de la prĂ©cĂ©dente. Ce comportement peut ĂȘtre modifiĂ© en utilisant -sa pour l'inclure systĂ©matiquement ou -sd pour ne jamais l'inclure.

Si la mise Ă  jour ne contient pas le fichier tar des sources d'origine, dpkg-source doit utiliser le mĂȘme fichier tar que celui dĂ©jĂ  prĂ©sent dans l'archive pour construire les fichiers .dsc et diff envoyĂ©s.

Dans des paquets non natifs, les permissions des fichiers non présents dans l'archive *.orig.tar.{gz,bz2,xz} ne seront pas préservées, car diff ne stocke pas les permissions dans le correctif. Néanmoins, en utilisant le format « 3.0 (quilt) », les permissions des fichiers du répertoire debian seront préservées puisqu'ils seront contenus dans une archive tar.

5.5. Choix de distribution

Chaque envoi doit indiquer à quelle distribution le paquet est destiné. Le processus de construction de paquet extrait cette information à partir de la premiÚre ligne du fichier debian/changelog et la place dans le champ Distribution du fichier .changes.

Les paquets sont généralement téléversés dans unstable. Les envois dans unstable ou experimental doivent utiliser ces noms de publication dans le fichier changelog. Les envois pour les autres publications doivent aussi utiliser les noms de code des publications, car ils évitent toute ambiguïté.

En fait, il y a d'autres distributions possibles : nomdecode-security, consultez Gestion des bogues de sécurité pour plus d'informations sur celles-ci.

Il n'est pas possible d'envoyer un paquet dans plusieurs distributions en mĂȘme temps.

5.5.1. Cas particulier : distributions stable et oldstable

Envoyer un paquet pour la distribution stable signifie que le paquet sera dirigĂ© vers la file d'attente proposed-updates-new pour ĂȘtre revu par les responsables de la publication stable. Une fois acceptĂ©, le paquet sera installĂ© dans le rĂ©pertoire stable-proposed-updates de l'archive Debian. Il sera ensuite ajoutĂ© Ă  stable lors de la prochaine mise Ă  jour de la distribution.

Uploads to a supported stable release should target their suite name in the changelog, i.e. trixie or bookworm. You should normally use reportbug and the release.debian.org pseudo-package to send a source debdiff, rationale and associated bug numbers to the stable release managers, and await a request to upload or further information.

Si vous ĂȘtes certain que l'envoi sera acceptĂ© sans changement, n'hĂ©sitez pas Ă  faire l'envoi en mĂȘme temps que vous remplissez le bogue sur release.debian.org. NĂ©anmoins, si vous ĂȘtes peu familier avec le processus, nous vous recommandons d'attendre l'approbation avant de faire l'envoi pour avoir la possibilitĂ© de voir si vos exigences correspondent Ă  celle des responsables de publication.

Dans tous les cas, il faut qu'il y ait un bogue d'accompagnement pour le suivi, et votre envoi doit répondre aux critÚres d'acceptation définis par les responsables de publication. Ces critÚres ont été conçus pour faire que le processus rencontre le moins d'obstacles ou de frustration possible.

  • Le bogue que vous voulez corriger dans stable doit ĂȘtre dĂ©jĂ  corrigĂ© dans unstable (et pas en attente dans NEW ou dans la file d'attente DELAYED).

  • Le bogue devrait ĂȘtre de sĂ©vĂ©ritĂ© « important » ou plus haute.

  • Les mĂ©tadonnĂ©es du bogue — les versions particuliĂšrement affectĂ©es — doivent ĂȘtre Ă  jour.

  • Les correctifs doivent ĂȘtre minimaux et pertinents et inclure une entrĂ©e de journal de modification suffisamment dĂ©taillĂ©e.

  • Un debdiff source des modifications projetĂ©es doit ĂȘtre inclus dans la requĂȘte (pas uniquement les correctifs bruts ou la mention « a debdiff can be found at $URL »).

  • The proposed package must have a correct version number (e.g. ...+deb13u1/...~deb13u1 for trixie or +deb12u1/~deb12u1 for bookworm) and you should be able to explain what testing it has had. See the Debian Policy for the version number: https://www.debian.org/doc/debian-policy/ch-controlfields.html#special-version-conventions

  • La mise Ă  jour doit ĂȘtre construite dans un environnement ou un chroot stable (ou oldstable si cette distribution est visĂ©e).

  • Les corrections de problĂšmes de sĂ©curitĂ© devraient ĂȘtre coordonnĂ©es avec l'Ă©quipe de sĂ©curitĂ© Ă  moins qu'elle n'ait dĂ©clarĂ© explicitement qu'elle n'Ă©mettrait pas de DSA pour le bogue (par exemple, au moyen d'un indicateur « no-dsa » dans le Gestionnaire de sĂ©curitĂ© Debian (« Debian Security Tracker »)).

  • Do not close release.debian.org bugs in debian/changelog. They will be closed by the release team once the package has reached the respective point release.

Il est recommandĂ© d'utiliser reportbug, car cela facilite la crĂ©ation de bogues avec des mĂ©tadonnĂ©es correctes. L'Ă©quipe de publication fait un usage extensif d'Ă©tiquettes pour trier et gĂ©rer les requĂȘtes, et les rapports mal Ă©tiquetĂ©s prennent plus de temps pour ĂȘtre remarquĂ©s et traitĂ©s.

Les mises Ă  jour de la distribution oldstable sont possibles tant qu'elle n'a pas Ă©tĂ© archivĂ©e. Les mĂȘmes rĂšgles que pour stable s'appliquent.

Par le passé, les envois vers stable étaient également utilisés pour corriger les problÚmes de sécurité. Cependant, cette pratique est déconseillée, car les mises à jour pour les avis de sécurité Debian (« Debian security advisory » ou DSA) sont automatiquement copiées dans l'archive proposed-updates appropriée quand l'avis est publié. Reportez-vous en Gestion des bogues de sécurité pour des informations plus détaillées sur la gestion des problÚmes de sécurité. Si l'équipe en charge de la sécurité estime le problÚme trop insignifiant pour justifier un DSA, les responsables de la publication stable seront cependant plus facilement disposés à intégrer votre correctif par un envoi ordinaire vers stable.

5.5.2. Cas particulier : la publication stable-updates

Parfois les responsables de la publication stable dĂ©cideront qu'une mise Ă  jour vers stable devrait ĂȘtre mise Ă  disposition des utilisateurs plus tĂŽt que la prochaine mise Ă  jour intermĂ©diaire programmĂ©e. Dans ce cas, ils peuvent copier la mise Ă  jour vers la publication stable-updates, dont l'utilisation est activĂ©e par dĂ©faut par l'installateur.

À l'origine, le processus dĂ©crit dans le Cas particulier : distributions stable et oldstable devrait ĂȘtre suivi comme d'habitude. Si vous pensez que l'envoi devrait ĂȘtre publiĂ© Ă  travers stable-updates, mentionnez-le dans votre requĂȘte. Voici des exemples de circonstances pour lesquelles l'envoi peut ĂȘtre Ă©ligible pour ce type de traitement :

  • La mise Ă  jour est urgente, mais n'a pas de caractĂšre de sĂ©curitĂ©. Les mises Ă  jour de sĂ©curitĂ© continueront Ă  ĂȘtre publiĂ©es dans l'archive de sĂ©curitĂ©. Comme exemple on citera les paquets cassĂ©s par le fil du temps (cf. spamassassin et le problĂšme de l'annĂ©e 2010) et les correctifs des bogues introduits par les versions intermĂ©diaires.

  • Le paquet en question est un paquet de donnĂ©es qui doivent ĂȘtre mises Ă  jour dans un dĂ©lai raisonnable (par exemple, tzdata).

  • La correction de paquets en bout de chaĂźne qui ont Ă©tĂ© cassĂ©s par des modifications externes (par exemple des utilitaires de tĂ©lĂ©chargement de vidĂ©os et tor).

  • Les paquets qui nĂ©cessitent d'ĂȘtre Ă  jour pour ĂȘtre utiles (par exemple clamav).

  • Uploads to stable-updates should target their suite name in the changelog as usual, e.g. trixie.

Une fois que l'envoi a Ă©tĂ© acceptĂ© dans proposed-updates et est prĂȘt pour la publication, les responsables de la publication stable le copieront vers la publication stable-updates` et publieront une annonce de mise Ă  jour de stable (Stable Update Announcement ou SUA) sur la liste de diffusion debian-stable-announce.

Toutes les mises à jour publiées par stable-updates seront incluses dans stable avec la prochaine version intermédiaire comme d'habitude.

5.5.3. Cas particulier : testing/testing-proposed-updates

Veuillez consulter les informations des Mises à jour directes dans testing pour plus de détails.

5.6. Envois de paquets

5.6.1. Source and binary uploads

Each upload to Debian consists of a signed .changes file describing the requested change to the archive, plus the source and binary package files that are referenced by the .changes file.

If possible, the version of a package that is uploaded should be a source-only changes file. These are typically named *_source.changes, and reference the source package, but no binary .deb or .udeb packages. All of the corresponding architecture-dependent and architecture-independent binary packages, for all architectures, will be built automatically by the build daemons in a controlled and predictable environment (see wanna-build for more details).

For many source-only uploads you can use tag2upload instead, which means that you only need to push a signed Git tag to Salsa, instead of generating and signing .dsc and .changes files yourself. See https://wiki.debian.org/tag2upload.

There are several situations where a source-only upload is not possible.

The first upload of a new source package (see Nouveaux paquets) must include binary packages, so that they can be reviewed by the archive administrators before they are added to Debian.

If new binary packages are added to an existing source package, then the first upload that lists the new binary packages in debian/control must include binary packages, again so that they can be reviewed by the archive administrators before they are added to Debian. It is preferred for these uploads to be done via the experimental suite.

Uploads that will be held for review in other queues, such as packages being added to the *-backports suites, might also require inclusion of binary packages.

The build daemons will automatically attempt to build any main or contrib package for which the build-dependencies are available. Packages in non-free and non-free-firmware will not be built by the build daemons unless the package has been marked as suitable for auto-building (see Paquets non libres pouvant ĂȘtre automatiquement construits).

The build daemons only install build-dependencies from the main archive area. This means that if a source package has build-dependencies that are in the contrib, non-free or non-free-firmware archive areas, then uploads of that package need to include prebuilt binary packages for every architecture that will be supported. By definition this can only be the case for source packages that are themselves in the contrib, non-free or non-free-firmware archive areas.

Bootstrapping a new architecture, or a new version of a package with circular dependencies (such as a self-hosting compiler), will sometimes also require an upload that includes binary packages.

5.6.2. Envois sur ftp-master

Pour envoyer un paquet, il faut envoyer les fichiers (y compris les fichiers changes et dsc signĂ©s) par FTP anonyme sur ftp.upload.debian.org dans le rĂ©pertoire /pub/UploadQueue/. Pour que les fichiers y soient traitĂ©s, ils doivent ĂȘtre signĂ©s avec une clĂ© du porte-clĂ©s (keyring) des dĂ©veloppeurs ou des responsables Debian (voir https://wiki.debian.org/DebianMaintainer).

Attention, il est prĂ©fĂ©rable de transfĂ©rer le fichier changes en dernier. Dans le cas contraire, votre envoi pourrait ĂȘtre rejetĂ©, car l'outil de maintenance de l'archive pourrait lire le fichier changes et constater que les fichiers ne sont pas tous prĂ©sents.

Les paquets dupload ou dput pourront vous faciliter le travail lors du téléchargement. Ces programmes bien pratiques aident à automatiser le processus d'envoi de paquets vers Debian.

For removing packages or cancelling an upload, please see ftp://ftp.upload.debian.org/pub/UploadQueue/README and the Debian package dcut.

Enfin, vous devriez réfléchir au statut de votre paquet par rapport à testing avant l'envoi vers unstable. S'il a une version en attente de migration dans unstable, c'est généralement une bonne idée d'attendre sa migration avant d'envoyer une nouvelle version. Vous devriez aussi rechercher dans le Suivi de paquets Debian (Debian Package Tracker) les avertissements detransition pour éviter de procéder à des envois qui perturbent des transitions en cours.

5.6.3. Envois diffĂ©rĂ©s

Il peut ĂȘtre utile d'envoyer un paquet Ă  un moment donnĂ©, mais vouloir que ce paquet n'entre dans l'archive que quelques jours plus plus tard. Par exemple, lors de la prĂ©paration d'une Mises Ă  jour indĂ©pendantes (NMU), vous pourriez vouloir donner quelques jours au responsable pour rĂ©agir.

Les envois vers le rĂ©pertoire diffĂ©rĂ© sont gardĂ©s dans la file d'attente diffĂ©rĂ©e. Une fois le temps d'attente indiquĂ© terminĂ©, le paquet est dĂ©placĂ© dans le rĂ©pertoire incoming normal pour ĂȘtre traitĂ©. Cela est rĂ©alisĂ© par une mise Ă  jour automatique en envoyant dans le rĂ©pertoire DELAYED/X-day (X compris entre 0 et 15) de ftp.upload.debian.org. Le contenu de 0-day est envoyĂ© plusieurs fois par jour vers ftp.upload.debian.org.

With dput, you can use the --delayed DELAY parameter to put the package into one of the queues.

5.6.4. Envois de sĂ©curitĂ©ïƒ

N'envoyez jamais un paquet vers la file d'envoi de sécurité (sur *.security.upload.debian.org) sans avoir auparavant obtenu l'autorisation de l'équipe de sécurité. Si le paquet ne correspond pas tout à fait aux besoins de cette équipe, il entraßnera beaucoup de problÚmes et de retards dans la gestion de cet envoi non désiré. Pour plus de précisions, consultez Gestion des bogues de sécurité.

5.6.5. Les autres files d'envoi

Une file d'attente alternative en Europe est disponible sur ftp://ftp.eu.upload.debian.org/pub/UploadQueue/. Son fonctionnement est similaire Ă  ftp.upload.debian.org, mais devrait ĂȘtre plus rapide pour les responsables europĂ©ens.

Les paquets peuvent Ă©galement ĂȘtre envoyĂ©s Ă  l’aide de ssh sur ssh.upload.debian.org ; les fichiers doivent ĂȘtre placĂ©s dans /srv/upload.debian.org/UploadQueue. Cette file d'attente ne permet pas les Envois diffĂ©rĂ©s.

5.6.6. Notifications

Les administrateurs de l'archive Debian sont responsables de l'installation des mises Ă  jour. La plupart des mises Ă  jour sont gĂ©rĂ©es quotidiennement par le logiciel de gestion de l'archive dak process-upload. Les mises Ă  jour de paquets sur la distribution unstable sont ainsi installĂ©es automatiquement. Dans les autres cas et notamment dans le cas d'un nouveau paquet, celui-ci sera installĂ© manuellement. Il peut s'Ă©couler un peu de temps entre l'envoi d'un paquet vers un serveur et son installation effective. Veuillez ĂȘtre patient.

Dans tous les cas, vous recevrez un accusé de réception par courrier électronique indiquant que votre paquet a été installé et quels rapports de bogue ont été clos. Veuillez lire attentivement ce courrier et vérifier que tous les rapports de bogue que vous vouliez clore sont bien dans cette liste.

L'accusé de réception indique aussi la section dans laquelle le paquet a été installé. S'il ne s'agit pas de votre choix, vous recevrez un second courrier qui vous informera de cette différence (voir ci-dessous).

Notez que si vous envoyez en utilisant les files d'attente, le démon vous enverra également une notification par courrier électronique.

Notez aussi que les nouveaux envois sont annoncĂ©s sur le Canaux IRC #debian-devel-changes. Si le vĂŽtre Ă©choue sans Ă©cho, cela peut ĂȘtre dĂ» Ă  ce que votre paquet n’est pas signĂ© correctement, auquel cas vous pouvez trouver plus d’explications dans ssh.upload.debian.org:/srv/upload.debian.org/queued/run/log.

5.7. Section, sous-section et prioritĂ© de paquet

Les champs Section et Priority du fichier debian/control ne prĂ©cisent pas vraiment l'endroit oĂč le fichier sera placĂ© dans l'archive, ni sa prioritĂ©. Afin de conserver l'intĂ©gritĂ© globale de l'archive, ce sont les administrateurs de l'archive qui contrĂŽlent ces champs. Les valeurs dans le fichier debian/control sont seulement indicatives.

Les administrateurs de l'archive indiquent les sections et priorités des paquets dans le fichier override. Si ce fichier override et le fichier debian/control du paquet diffÚrent, vous en serez informé par courrier électronique quand le paquet sera installé dans l'archive. Vous pouvez corriger votre fichier debian/control avant votre prochain envoi ou alors vous pouvez modifier le fichier override.

Pour modifier la section dans laquelle un paquet est archivé, vous devez d'abord vérifier que le fichier debian/control est correct. Ensuite, envoyez un rapport de bogue sur le pseudopaquet ftp.debian.org demandant la modification de la section ou de la priorité de votre paquet. Utilisez un sujet comme override: PACKAGE1:section/priorité, [...], PACKAGEX: section/priorité, et exposez bien les raisons qui vous amÚnent à demander ces changements dans le corps de texte.

Pour en savoir plus sur les fichiers override, reportez-vous Ă  dpkg-scanpackages 1 et https://www.debian.org/Bugs/Developer#maintincorrect.

Notez que le champ Section dĂ©crit Ă  la fois la section et la sous-section, comme dĂ©crit en Sections. Si la section est main, elle devrait ĂȘtre omise. La liste des sous-sections autorisĂ©es peut ĂȘtre trouvĂ©e en https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections.

5.8. Manipulation des bogues

Chaque dĂ©veloppeur doit ĂȘtre capable de travailler avec le systĂšme de suivi des bogues de Debian (« ``bubogue correctement (voir Signalement de bogues), comment les mettre Ă  jour, les rĂ©ordonner, les traiter et les fermer.

Les fonctionnalités du systÚme de suivi des bogues sont décrites dans la documentation du BTS pour les développeurs : fermeture de bogues, envoi de messages de suivi, assignation de niveaux de gravité et de marques, indication que les bogues ont été transmis aux développeurs amonts, etc.

Des opĂ©rations comme rĂ©assigner des bogues Ă  d'autres paquets, rĂ©unir des rapports de bogues sĂ©parĂ©s traitant du mĂȘme problĂšme ou rouvrir des bogues quand ils ont Ă©tĂ© prĂ©maturĂ©ment fermĂ©s, sont gĂ©rĂ©es en utilisant le serveur de contrĂŽle par courrier. Toutes les commandes disponibles pour ce serveur sont dĂ©crites dans la documentation du serveur de contrĂŽle du BTS.

5.8.1. Supervision des bogues

Être un bon responsable implique de consulter rĂ©guliĂšrement la page du systĂšme de suivi des bogues (BTS) de vos paquets. Le systĂšme de suivi des bogues contient tous les rapports de bogue qui concernent vos paquets. Vous pouvez les vĂ©rifier en consultant cette page : https://bugs.debian.org/votrecompte@debian.org.

Les responsables interagissent avec le systÚme de suivi des bogues en utilisant l'adresse électronique bugs.debian.org. Vous trouverez une documentation sur les commandes disponibles à l'adresse https://www.debian.org/Bugs/ ou, si vous avez installé le paquet doc-debian, dans les fichiers locaux /usr/share/doc/debian/bug-*.

Certains trouvent utile de recevoir réguliÚrement une synthÚse des rapports de bogue ouverts. Si vous voulez recevoir une synthÚse hebdomadaire relevant tous les rapports de bogue ouverts pour vos paquets, vous pouvez configurer cron comme suit :

# ask for weekly reports of bugs in my packages
0 17 * * fri   echo "index maint address" | mail request@bugs.debian.org

Remplacez address par votre adresse officielle de responsable Debian.

5.8.2. RĂ©ponses aux bogues

Lors d'une rĂ©ponse Ă  un bogue assurez-vous que toutes les discussions concernant le bogue sont envoyĂ©es au rapporteur original du bogue, au bogue lui-mĂȘme et (si vous n'ĂȘtes pas le responsable du paquet) au responsable. L'envoi d'un message Ă  123@bugs.debian.org enverra le message au responsable du paquet et l'enregistrera dans le journal du bogue. Si vous ne vous souvenez pas de l'adresse courriel du rapporteur, vous pouvez aussi employer 123-submitter@bugs.debian.org pour contacter le rapporteur du bogue. Cette adresse enregistre aussi le message dans le journal du bogue, ainsi, si vous ĂȘtes le responsable du paquet en question, il suffit de rĂ©pondre Ă  123-submitter@bugs.debian.org. Sinon, vous devrez aussi ajouter l'adresse 123@bugs.debian.org afin d'atteindre Ă©galement le responsable du paquet.

Si vous recevez un rapport de bogue mentionnant « FTBFS », cela signifie une erreur de construction à partir du paquet source (« Fails To Build From Source »). Les porteurs emploient fréquemment cet acronyme.

Une fois un bogue traité (c'est-à-dire qu'il est corrigé), marquez-le comme done (il sera fermé) en envoyant un message d'explication à 123-done@bugs.debian.org. Si vous corrigez un bogue en changeant et en envoyant une nouvelle version du paquet, vous pouvez fermer le bogue automatiquement comme décrit en Fermeture des rapports de bogue lors des mises à jour.

Vous ne devez jamais fermer un rapport de bogue en envoyant la commande close Ă  l'adresse control@bugs.debian.org. Si vous le faites, le rapporteur n'aura aucune information sur la clĂŽture de son rapport.

5.8.3. Gestion des bogues

En tant que responsable de paquet, vous trouverez fréquemment des bogues dans d'autres paquets et recevrez des rapports de bogue sur vos paquets qui sont en fait relatifs à d'autres paquets. Les fonctions intéressantes du systÚme de suivi des bogues sont décrites dans la documentation du BTS pour les développeurs Debian. Les instructions du serveur de contrÎle du BTS documentent les opérations techniques du BTS, telles que comment remplir, réassigner, regrouper et marquer des bogues. Cette section contient des lignes directrices pour gérer vos propres bogues, définies à partir de l'expérience collective des développeurs Debian.

Remplir des rapports de bogue pour des problÚmes que vous trouvez dans d'autres paquets est l'une des « obligations civiques » du responsable, voir Signalement de bogues pour les détails. Cependant, gérer les bogues de vos propres paquets est encore plus important.

Voici une liste des étapes que vous pouvez suivre pour traiter un rapport de bogue :

  1. dĂ©cider si le rapport correspond Ă  un bogue rĂ©el ou non. Parfois, les utilisateurs utilisent simplement un programme d'une mauvaise façon, car ils n'ont pas lu la documentation. Si c'est votre diagnostic, fermez simplement le bogue avec assez d'informations pour laisser l'utilisateur corriger son problĂšme (donnez des indications vers la bonne documentation et ainsi de suite). Si le rapport de bogue revient rĂ©guliĂšrement, vous devriez vous demander si la documentation est assez bonne ou si le programme ne devrait pas dĂ©tecter une mauvaise utilisation pour donner un message d'erreur informatif. Il s'agit d'un problĂšme qui peut ĂȘtre discutĂ© avec l'auteur amont.

    Si le rapporteur de bogue n'est pas d'accord avec votre décision de fermeture du bogue, il peut le rouvrir jusqu'à ce que vous trouviez un accord sur la façon de le gérer. Si vous n'en trouvez pas, vous pouvez marquer le bogue wontfix pour indiquer à tout le monde que le bogue existe, mais ne sera pas corrigé. Assurez-vous que le rapporteur du bogue comprend les raisons de votre décision en ajoutant une explication au message qui ajoute la marque wontfix.

    Si cette situation n'est pas acceptable, vous (ou le rapporteur) pouvez vouloir demander une décision par le comité technique en ouvrant un nouveau bogue sur le pseudopaquet tech-ctte avec un résumé de la situation. Avant de faire cela, veuillez lire la procédure recommandée ;

  2. si le bogue est rĂ©el, mais causĂ© par un autre paquet, rĂ©assignez simplement le bogue Ă  l'autre paquet. Si vous ne savez pas Ă  quel paquet il doit ĂȘtre rĂ©assignĂ©, vous pouvez demander de l'aide sur Canaux IRC ou sur debian-devel@lists.debian.org. Veuillez informer le ou les responsables du paquet sur lequel est rĂ©assignĂ© le bogue, par exemple en envoyant une copie du message de rĂ©assignation Ă  nomdupaquet@packages.debian.org, en expliquant vos raisons. Attention, une simple rĂ©assignation n'envoie pas de courrier aux mainteneurs du paquet auquel le bogue est rĂ©assignĂ©, de ce fait ils n'apprendraient l'existence du bogue qu'en regardant la vue d'ensemble des bogues relatifs Ă  leurs paquets.

    Si le bogue affecte le fonctionnement de votre paquet, veuillez envisager de cloner le bogue avant de le rĂ©assigner au paquet qui provoque vraiment le comportement. Si vous procĂ©dez autrement, le bogue ne sera pas vu dans la liste des bogues sur votre paquet, au risque que d'autres utilisateurs signalent le mĂȘme bogue de nouveau. Vous devriez marquer « votre » bogue bloquĂ© par le clone rĂ©assignĂ© afin de documenter la relation entre les deux bogues ;

  3. parfois, vous devez Ă©galement ajuster la gravitĂ© du bogue pour qu'elle corresponde Ă  la dĂ©finition de gravitĂ© des bogues. C'est dĂ» au fait que les gens tendent Ă  augmenter la gravitĂ© des bogues pour s'assurer que leurs bogues seront corrigĂ©s rapidement. La gravitĂ© de certains bogues peut mĂȘme ĂȘtre rĂ©trogradĂ©e en wishlist (souhait) quand le changement demandĂ© est seulement superficiel ;

  4. si le bogue est rĂ©el, mais que le problĂšme a dĂ©jĂ  Ă©tĂ© rapportĂ© auparavant, alors les deux rapports devraient ĂȘtre rassemblĂ©s en un seul Ă  l'aide de la commande merge du BTS. De cette façon, quand un bogue sera corrigĂ©, tous les rapporteurs en seront informĂ©s (veuillez notez, nĂ©anmoins, qu'un courrier envoyĂ© au rapporteur d'un des bogues ne sera pas automatiquement envoyĂ© aux autres rapporteurs) ;

  5. le rapporteur de bogue peut avoir oubliĂ© de fournir certaines informations. Dans ce cas, vous devez lui demander les informations nĂ©cessaires. Vous pouvez utiliser la marque moreinfo (plus d'information) sur le bogue. De plus, si vous ne pouvez pas reproduire le bogue, vous pouvez le marquer comme unreproducible (non reproductible). Une personne qui arriverait Ă  reproduire le bogue est alors invitĂ©e Ă  fournir plus d'informations sur la façon de le reproduire. AprĂšs quelques mois, si cette information n'a Ă©tĂ© envoyĂ©e par personne, le bogue peut ĂȘtre fermé ;

  6. si le bogue est liĂ© Ă  l'empaquetage, vous devez simplement le corriger. Si vous ne pouvez pas le corriger vous-mĂȘme, marquez alors le bogue avec help (aide). Vous pouvez Ă©galement demander de l'aide sur debian-devel@lists.debian.org ou debian-qa@lists.debian.org. S'il s'agit d'un problĂšme amont, vous devez faire suivre le rapport Ă  l'auteur amont. Faire suivre un bogue n'est pas suffisant, vous devez vĂ©rifier Ă  chaque version si le bogue a Ă©tĂ© corrigĂ© ou non. S'il a Ă©tĂ© corrigĂ©, il vous suffit de le clĂŽturer, sinon vous devez le rappeler Ă  l'auteur. Si vous avez les compĂ©tences nĂ©cessaires, vous pouvez prĂ©parer un correctif pour le bogue et l'envoyer en mĂȘme temps Ă  l'auteur. Assurez-vous d'envoyer le correctif au BTS et marquez le bogue avec patch (correctif) ;

  7. si un bogue a Ă©tĂ© corrigĂ© sur la copie locale ou sur le systĂšme de gestion de versions, il peut ĂȘtre marquĂ© pending (en attente) pour signaler qu'il est corrigĂ©, et sera fermĂ© Ă  la prochaine mise Ă  jour (ajouter « closes: » dans changelog). C'est d'autant plus utile si plusieurs dĂ©veloppeurs travaillent sur le mĂȘme paquet ;

  8. une fois le paquet corrigĂ© disponible dans l'archive, le bogue devrait ĂȘtre fermĂ© en prĂ©cisant dans quelle version du paquet il a Ă©tĂ© rĂ©glĂ©. Cela peut ĂȘtre fait automatiquement, voir Fermeture des rapports de bogue lors des mises Ă  jour.

5.8.4. Fermeture des rapports de bogue lors des mises Ă  jour

Au fur et Ă  mesure que les bogues et problĂšmes sont corrigĂ©s dans vos paquets, il est de votre responsabilitĂ© en tant que responsable du paquet de fermer les rapports de bogue associĂ©s. Cependant, vous ne devez pas les fermer avant que le paquet n'ait Ă©tĂ© acceptĂ© dans l'archive Debian. C'est pourquoi, vous pouvez et devriez clore les rapports dans le systĂšme de suivi des bogues une fois que vous avez reçu l'avis indiquant que votre nouveau paquet a Ă©tĂ© installĂ© dans l'archive. Le bogue devrait ĂȘtre fermĂ© avec la bonne version.

Cependant, il est possible de fermer automatiquement les bogues aprĂšs l'envoi — indiquez simplement les bogues corrigĂ©s dans le fichier debian/changelog en suivant une syntaxe prĂ©cise et le logiciel de maintenance de l'archive s'occupera de le fermer pour vous. Par exemple :

acme-cannon (3.1415) unstable; urgency=low

  * Frobbed with options (closes: Bug#98339)
  * Added safety to prevent operator dismemberment, closes: bug#98765,
    bug#98713, #98714.
  * Added man page. Closes: #98725.

D'un point de vue technique, l'expression rationnelle Perl suivante décrit comment sont identifiées les fermetures de bogue dans les lignes de changelog :

/closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/ig

La syntaxe « closes: #XXX » est Ă  prĂ©fĂ©rer, car c'est la plus concise et facile Ă  intĂ©grer au texte de changelog. À moins de spĂ©cifier un comportement diffĂ©rent avec l'option -v de dpkg-buildpackage, seuls les bogues ainsi marquĂ©s dans l'entrĂ©e la plus rĂ©cente de changelog seront fermĂ©s (de fait, seuls les bogues signalĂ©s dans la partie relative au journal de modification du fichier .changes sont fermĂ©s).

Historiquement, les envois identifiĂ©s comme Mises Ă  jour indĂ©pendantes (NMU) Ă©taient marquĂ©s comme fixed au lieu d'ĂȘtre fermĂ©s, mais cette pratique a cessĂ© avec l'ajout du suivi des versions. Le mĂȘme raisonnement s'applique Ă  l'Ă©tiquette fixed-in-experimental.

If you happen to mistype a bug number or forget a bug in the changelog entries, don't hesitate to undo any damage the error caused. To reopen wrongly closed bugs, send a reopen XXX command to the bug tracking system's control address, control@bugs.debian.org. To close any remaining bugs that were fixed by your upload, email the .changes file to XXX-done@bugs.debian.org, where XXX is the bug number, and put Version: YYY and an empty line as the first two lines of the body of the email, where YYY is the first version where the bug has been fixed.

Rappelez-vous qu'il n'est pas obligatoire de fermer les bogues en utilisant le changelog 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 à XXX-done@bugs.debian.org. Vous ne devez jamais fermer des bogues dans une entrée du journal de modification (changelog) si les changements dans cette version n'ont rien à voir avec le bogue.

Pour une information plus générale sur ce qu'il faut mettre dans les entrées du journal de modification (changelog), voir Meilleures pratiques pour debian/changelog.

5.9. Subscribing to package updates

As a maintainer of a package, you get email notifications for various kinds of events (uploads, BTS messages etc). You can subscribe to receive such notifications also for packages you are not a maintainer of (or packages you maintain collaboratively), by mailing control@tracker.debian.org with subscribe <pkgname> either in the subject or the body of the email (see https://qa.pages.debian.net/distro-tracker/usage/messages.html#email-messages for details).

5.10. Manipulation de paquet dans l'archive

Certaines manipulations de l'archive ne sont pas possibles avec le processus de mise à jour automatisé. Elles sont effectuées manuellement par les responsables. Cette partie décrit la marche à suivre dans ces situations.

5.10.1. DĂ©placement de paquet

Il arrive parfois qu'un paquet change de section. Un paquet de la section non-free pourrait, par exemple, ĂȘtre distribuĂ© sous licence GNU GPL dans une nouvelle version ; dans ce cas, le paquet devrait ĂȘtre dĂ©placĂ© vers la section main ou contrib. [1]

Pour changer la section d'un paquet, modifiez les informations de contrĂŽle pour placer le paquet dans la section voulue et envoyez-le Ă  nouveau dans l'archive (voir la Charte Debian pour plus d'informations). Assurez-vous d'inclure le fichier .orig.tar.{gz,bz2,xz} dans l'envoi (mĂȘme si vous n'envoyez pas de nouvelle version amont) sinon il n'apparaĂźtra pas dans la nouvelle section avec le reste du paquet. Si la nouvelle section est valable, il sera dĂ©placĂ© automatiquement. Si ce n'est pas le cas, contactez les responsables de l'archive (« ftpmasters ») pour comprendre ce qui s'est passĂ©.

Pour changer la sous-section d'un paquet (devel ou admin par exemple), la procédure est légÚrement différente. Modifiez la sous-section dans le fichier de contrÎle du paquet et renvoyez-le. Il vous faudra ensuite demander la modification du fichier override comme décrit en Section, sous-section et priorité de paquet.

5.10.2. Suppression de paquet

If for some reason you want to completely remove a package (say, if it is an old compatibility library which is no longer required), you need to file a bug against ftp.debian.org asking that the package be removed; as with all bugs, this bug should normally have normal severity. The bug title should be in the form RM: package [architecture list] -- reason, where package is the package to be removed and reason is a short summary of the reason for the removal request. [architecture list] is optional and only needed if the removal request only applies to some architectures, not all. Note that the reportbug will create a title conforming to these rules when you use it to report a bug against the ftp.debian.org pseudo-package.

Si vous ĂȘtes responsable du paquet Ă  supprimer, il faudrait le prĂ©ciser dans le titre du rapport en commençant celui-ci par la mention ROM (« Request Of Maintainer », demande du responsable). De nombreux autres acronymes sont utilisĂ©s pour justifier la suppression d'un paquet, voir la liste complĂšte sur https://ftp-master.debian.org/removals.html. Cette page fournit Ă©galement une vue d'ensemble des requĂȘtes en cours.

Seuls les paquets d'unstable, experimental ou stable peuvent ĂȘtre supprimĂ©s. Les paquets de testing ne sont pas supprimĂ©s directement. Ils sont plutĂŽt enlevĂ©s automatiquement aprĂšs suppression d'unstable et si aucun paquet de testing n'en dĂ©pend. (Les suppressions de testing sont possibles aussi en soumettant un bogue de suppression sur le pseudopaquet release.debian.org. Consultez la section Suppression de testing.)

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) ne se construit plus depuis le source, il sera supprimé de façon semi-automatique. Pour un paquet binaire, cela veut dire qu'il n'y a plus de paquet source produisant ce 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.

Il faut détailler dans la demande de suppression les raisons de cette demande. Cela a pour but d'éviter les suppressions indésirables 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.

Normalement, vous ne devriez 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. Dans le cas d'un paquet orphelin, qui n'a donc pas de responsable, vous devriez discuter la demande de suppression sur debian-qa@lists.debian.org. S'il existe un consensus sur la suppression du paquet, vous devriez changer le titre et rĂ©assigner le bogue O: au paquet wnpp plutĂŽt que d'en ouvrir un autre.

Further information relating to these and other package removal related topics may be found at https://wiki.debian.org/ftpmaster_Removalsand https://qa.debian.org/howto-remove.html.

If in doubt concerning whether a package is disposable, email debian-devel@lists.debian.org asking for opinions. Also of interest is the apt-cache program from the apt package. When invoked as apt-cache showpkg package, the program will show details for package, including reverse depends. Other useful programs include apt-cache rdepends, apt-rdepends, build-rdeps (in the devscripts package) and grep-dctrl. Removal of orphaned packages is discussed on debian-qa@lists.debian.org.

Une fois le paquet supprimĂ©, les bogues du paquet doivent ĂȘtre gĂ©rĂ©s. Soit ils sont rĂ©assignĂ©s dans le cas oĂč le code a Ă©voluĂ© vers un autre paquet (par exemple, libfoo12 a Ă©tĂ© supprimĂ© parce que libfoo13 le remplace), soit ils sont fermĂ©s si le logiciel ne fait simplement plus partie de Debian. Lors de la fermeture des bogues, pour Ă©viter d'ĂȘtre marquĂ©s corrigĂ©s dans des versions du paquet disponibles dans des distributions prĂ©cĂ©dentes de Debian, ils devraient ĂȘtre marquĂ©s corrigĂ©s dans la version <derniĂšre-version-existant-dans-Debian>+rm.

5.10.2.1. Suppression de paquet d'Incoming

Par le passĂ©, il Ă©tait possible de supprimer un paquet d'incoming. Cependant, ce n'est plus possible depuis la mise en place du nouveau systĂšme. [4] À la place, il faut envoyer une nouvelle version du paquet avec un numĂ©ro de version plus Ă©levĂ© que celui Ă  remplacer. Les deux versions seront installĂ©es dans l'archive, mais seule la plus rĂ©cente sera rĂ©ellement disponible dans unstable, car la prĂ©cĂ©dente sera immĂ©diatement remplacĂ©e par la nouvelle. Toutefois, si vous testez correctement vos paquets, vous ne devriez pas avoir besoin de les remplacer trop souvent.

5.10.3. Remplacement et changement de nom de paquet

Quand les responsables amont d'un de vos paquet dĂ©cident de renommer leur logiciel (ou si vous vous trompez en nommant un paquet), vous devrez intervenir en deux Ă©tapes pour changer son nom. D'abord, modifiez le fichier debian/control pour que le nouveau paquet remplace (Replaces), fournisse (Provides) et entre en conflit avec (Conflicts) le paquet mal nommĂ© (reportez-vous Ă  la Charte Debian pour les dĂ©tails). Vous ne devriez ajouter une relation Provides que si tous les paquets dĂ©pendants du paquet mal nommĂ© continuent de fonctionner aprĂšs le changement de nom. Une fois le paquet installĂ© dans l'archive, faites un rapport de bogue concernant le pseudopaquet ftp.debian.org et demandez la suppression du paquet mal nommĂ© (voir Suppression de paquet). N'oubliez pas de rĂ©assigner correctement les bogues du paquet en mĂȘme temps.

Vous pourriez aussi commettre une erreur en construisant le paquet et voulant 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 cela s'applique à chaque partie de votre paquet, y compris les sources : pour remplacer l'archive source amont de votre paquet, envoyez-la avec un numéro de version différent. Une possibilité simple est de remplacer foo_1.00.orig.tar.gz par foo_1.00+0.orig.tar.gz ou foo_1.00.orig.tar.bz2. Cette restriction permet à chaque fichier de l'archive d'avoir un nom unique, ce qui aide à garantir la cohérence dans le réseau des miroirs.

5.10.4. Abandon de paquet

If you can no longer maintain a package, you need to inform others, and see that the package is marked as orphaned. You should set the package maintainer to Debian QA Group <packages@qa.debian.org> and submit a bug report against the pseudo package wnpp. The bug report should be titled O: package -- short description indicating that the package is now orphaned. The severity of the bug should be set to normal; if the package has a priority of standard or higher, it should be set to important. If you feel it's necessary, send a copy to debian-devel@lists.debian.org by putting the address in the X-Debbugs-CC: header of the message (no, don't use CC:, because that way the message's subject won't indicate the bug number).

If you just intend to give the package away, but you can keep maintainership for the moment, then you should instead submit a bug against wnpp and title it RFA: package -- short description. RFA stands for Request For Adoption.

Vous pouvez trouver plus d'informations sur les pages web WNPP (« Work-Needing and Prospective Packages » : paquets en souffrance et paquets souhaités).

5.10.5. Adoption de paquet

Une liste des paquets en attente de nouveau responsable est disponible dans la liste des paquets en souffrance et paquets souhaités (WNPP). Afin de prendre en charge un paquet de cette liste, reportez-vous à la page mentionnée précédemment pour plus d'informations et les procédures à suivre.

Prendre un paquet sans l’accord du responsable actuel n'est pas correct — ce serait un dĂ©tournement de paquet. Vous pouvez, bien sĂ»r, prendre contact avec le responsable actuel et lui demander si vous pouvez prendre en charge ce paquet.

Cependant, si un paquet est abandonnĂ© par son responsable, vous pouvez prendre la responsabilitĂ© de ce paquet en suivant le processus de rĂ©cupĂ©ration dĂ©crit dans Sauvetage de paquets. Si vous avez une raison de croire que le responsable n’est plus du tout actif, consultez Gestion des responsables non joignables.

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 page web du comitĂ© technique pour plus d'informations).

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 installĂ© une nouvelle version du paquet dans l'archive avec le champ Maintainer Ă  jour. Cela peut prendre quelques heures aprĂšs l'envoi. Si vous ne pensez pas faire de mise Ă  jour avant un moment, vous pouvez utiliser le Suivi de paquets Debian (Debian Package Tracker) pour recevoir les rapports de bogue. Cependant, assurez-vous que l'ancien responsable n'est pas embĂȘtĂ© de recevoir les rapports de bogue en attendant.

5.10.6. RĂ©introduction de paquet

Les paquets sont souvent supprimĂ©s Ă  cause de bogues critiques pour la publication, de mainteneurs absents, de trop peu d'utilisateurs ou d'une mĂ©diocre qualitĂ© gĂ©nĂ©rale. Alors que le processus de rĂ©introduction de paquet est similaire au processus d'empaquetage initial, certains piĂšges peuvent ĂȘtre Ă©vitĂ©s en commençant par un peu de recherche historique.

Vous devriez d'abord vérifier la raison pour laquelle le paquet a été supprimé. Ces renseignements sont disponibles dans le paragraphe suppression (« removal ») de la section de nouvelles du PTS pour le paquet ou en consultant le journal des suppressions. Le bogue de suppression indiquera la raison pour laquelle le paquet a été supprimé et donnera quelques indications sur les points à travailler avant de réintroduire le paquet. Cela pourrait indiquer que la meilleure solution est d'utiliser un autre programme au lieu de réintroduire le paquet.

Contacter les prĂ©cĂ©dents responsables peut ĂȘtre utile pour savoir s'ils ont commencĂ© Ă  rĂ©introduire le paquet et s'ils sont intĂ©ressĂ©s Ă  ĂȘtre coresponsables du paquet ou Ă  parrainer le paquet si nĂ©cessaire.

Toutes les Ă©tapes nĂ©cessaires Ă  l'introduction d'un nouveau paquet (Nouveaux paquets) devraient ĂȘtre suivies.

Le travail devrait ĂȘtre basĂ© sur la derniĂšre version pertinente du paquet disponible. Ce pourrait ĂȘtre la derniĂšre version d'unstable, toujours disponible dans l'archive d'instantanĂ©s.

Le systĂšme de gestion de versions utilisĂ© par les prĂ©cĂ©dents mainteneurs pourrait contenir des modifications utiles, y jeter un Ɠil pourrait donc ĂȘtre une bonne idĂ©e. VĂ©rifiez si le fichier control du prĂ©cĂ©dent paquet contient des en-tĂȘtes pointant vers le systĂšme de gestion de versions du paquet et s'il existe encore.

Les suppressions de paquet d'unstable (pas de testing, stable ou oldstable) dĂ©clenchent la fermeture de tous les bogues relatifs au paquet. Vous devriez passer en revue tous les bogues fermĂ©s (y compris les bogues archivĂ©s) puis extraire et rouvrir tous ceux qui ont Ă©tĂ© fermĂ©s avec une version se finissant par +rm et toujours d'actualitĂ©. Tous ceux qui ne s'appliquent plus devraient ĂȘtre marquĂ©s comme corrigĂ©s dans la version adĂ©quate si elle est connue.

Les suppressions de paquet d'unstable déclenchent aussi le marquage du paquet comme supprimé dans le Gestionnaire de sécurité Debian (« Debian Security Tracker »).Les membres de Debian devraient marquer les problÚmes supprimés comme non corrigés dans le dépÎt du suivi de sécurité et tous les autres devraient contacter l'équipe de sécurité pour rapporter les paquets réintroduits.

5.11. Portage

Debian gĂšre un nombre croissant d'architectures. MĂȘme si vous n'ĂȘtes pas un porteur et que vous utilisez une seule architecture, il est de votre responsabilitĂ© de dĂ©veloppeur d'ĂȘtre attentif aux questions de portabilitĂ©. C'est pourquoi il est important de lire ce chapitre mĂȘme si vous n'ĂȘtes pas un porteur.

Porter un paquet consiste à compiler un paquet binaire pour des architectures différentes de celle du paquet binaire du 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. Par exemple, quand un paquet source (portable) est envoyé avec les paquets binaires i386, il faut compter une compilation pour chaque autre architecture, soit un total de 10 compilations.

5.11.1. Courtoisie avec les porteurs

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 rĂ©guliĂšrement commises par les responsables Debian — problĂšmes courants qui bloquent souvent les porteurs et compliquent inutilement leur travail.

Ici, le premier et plus important point est de répondre rapidement aux rapports de bogue et problÚmes soulevés par les porteurs. Traitez-les courtoisement, comme s'ils étaient coresponsables 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.

Les problĂšmes les plus couramment rencontrĂ©s par les porteurs sont causĂ©s par des erreurs d'empaquetage dans le paquet source. Voici un pense-bĂȘte pour les points auxquels vous devez ĂȘtre attentif :

  1. vĂ©rifiez que les champs Build-Depends et Build-Depends-Indep du fichier debian/control sont corrects. Le meilleur moyen de le vĂ©rifier est d'utiliser le paquet debootstrap pour crĂ©er un environnement unstable chrootĂ© (voir debootstrap). Dans cet environnement chrootĂ©, installez le paquet build-essential et tous les paquets mentionnĂ©s dans les champs Build-Depends ou Build-Depends-Indep. Ensuite, essayez de fabriquer le paquet dans cet environnement. Ces Ă©tapes peuvent ĂȘtre automatisĂ©es en utilisant le programme pbuilder fourni par le paquet de mĂȘme nom (voir pbuilder).

    En cas de difficultĂ©s pour configurer un environnement chrootĂ©, dpkg-depcheck pourra peut-ĂȘtre vous aider (voir dpkg-depcheck).

    Consultez la Charte Debian pour en savoir plus sur les dépendances de construction ;

  2. ne choisissez pas d'autres valeurs que all ou any pour le champ architecture sans avoir de bonnes raisons. Trop souvent, les développeurs ne respectent pas les instructions de la Charte Debian. Choisir la valeur i386 ou amd64 est généralement incorrect ;

  3. Make sure your source package is correct. Do dpkg-source -x package.dsc to make sure your source package unpacks properly. Then, in there, try building your package from scratch with dpkg-buildpackage.

  4. vĂ©rifiez que les fichiers debian/files ou debian/substvars ne sont pas dans votre paquet source. Ils doivent ĂȘtre effacĂ©s par la cible clean de debian/rules ;

  5. assurez-vous de ne pas dĂ©pendre d'Ă©lĂ©ments de configuration, ou de logiciels installĂ©s ou modifiĂ©s localement. Par exemple, vous ne devriez jamais appeler des programmes du rĂ©pertoire /usr/local/bin ou de rĂ©pertoires Ă©quivalents. Essayez de ne pas dĂ©pendre de 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 ;

  6. ne vous appuyez pas sur une installation prĂ©existante du paquet (un sous-cas de la remarque prĂ©cĂ©dente). Il existe, bien sĂ»r, des exceptions Ă  cette rĂšgle, mais soyez conscient que chaque cas comme celui-ci demande une mise en place (« bootstrapping ») manuelle et ne peut ĂȘtre automatisĂ© par les services d'empaquetage ;

  7. si possible, ne dĂ©pendez pas d'une version particuliĂšre d'un compilateur. Si vous ne pouvez pas faire autrement, assurez-vous que les dĂ©pendances de construction reflĂštent cette restriction, bien que vous cherchiez sĂ»rement les problĂšmes, puisque certaines architectures s’uniformisent pour diffĂ©rents compilateurs.

  8. vérifiez que le fichier debian/rules distingue les cibles binary-arch et binary-indep 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 dpkg-buildpackage -B.

  9. When you can't support your package on a particular architecture, you shouldn't use the Architecture field to reflect that (it's also a pain to maintain correctly). If the package fails to build from source, you can just let it be and interested people can take a look at the build logs. If the package would actually build, the trick is to add a Build-Depends on unsupported-architecture [the-not-supported-arch]. The buildds will not build the package as the build dependencies are not fulfilled on that arch. To prevent building on 32-bits architectures, the architecture-is-64-bit build dependency can be used, as architecture-is-little-endian can be used to prevent building on big endian systems.

5.11.2. Conseils aux porteurs pour les mises Ă  jour

Si le paquet se construit tel quel sur l'architecture visée, 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 le paquet binaire dans l'archive Debian. Si vous devez modifier le paquet pour le rendre compilable sur la nouvelle architecture, il faudra faire une NMU sources, consultez plutÎt NMU : quand et comment.

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, y compris le fichier debian/changelog.

The way to invoke dpkg-buildpackage is as dpkg-buildpackage -B -m porter-email. Of course, set porter-email to your email address. This will do a binary-only build of only the architecture-dependent portions of the package, using the binary-arch target in debian/rules.

Si vous travaillez sur une machine Debian pour vos efforts de portage et que vous devez signer l'envoi localement pour ĂȘtre acceptĂ© dans l'archive, vous pouvez exĂ©cuter debsign sur le fichier .changes pour qu'il soit signĂ© convenablement, ou utiliser le mode de signature Ă  distance de dpkg-sig.

5.11.2.1. Recompilation ou mise Ă  jour indĂ©pendante binaire (binNMU)

Parfois, l'envoi du porteur initial pose problÚme, car l'environnement dans lequel le paquet a été construit n'était pas bon (bibliothÚques périmées 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 (dak refuse d'installer un nouveau paquet s'il n'a pas un numéro de version supérieur à celui actuellement disponible).

Vous devez vous assurer que votre binNMU 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 ont des interdĂ©pendances créées par l’utilisation de la substitution de variable de dpkg $(Source-Version).

MalgrĂ© la modification nĂ©cessaire du journal de modification (changelog), ce type de mise Ă  jour est appelĂ© binNMU — 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.

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é).

Le « numéro magique » d'une NMU pour une recompilation particuliÚre est obtenu en utilisant un suffixe ajouté au numéro de version du paquet, de la forme bnuméro. Par exemple, si la derniÚre version recompilée était la version 2.9-3, la binNMU aura pour version 2.9-3+b1. Si la derniÚre version était 3.4+b1 (c'est-à-dire un paquet natif avec une précédente NMU par recompilation), la binNMU aura le numéro de version 3.4+b2. [2]

De maniÚre similaire aux envois du porteur initial, la façon correcte d'invoquer dpkg-buildpackage est dpkg-buildpackage -B pour ne construire que les parties dépendant de l'architecture du paquet.

5.11.2.2. Quand utiliser une NMU source pour un portage

Les porteurs faisant des NMU source suivent normalement les instructions de Mises Ă  jour indĂ©pendantes (NMU), tout comme les non-porteurs. Les dĂ©lais d'attente sont cependant rĂ©duits, car les porteurs doivent manipuler un grand nombre de paquets. À nouveau, la situation diffĂšre selon la distribution visĂ©e. Elle varie Ă©galement si l'architecture est candidate pour la prochaine version stable ; les responsables de publication dĂ©cident et annoncent quelles sont les architectures candidates.

Si vous ĂȘtes porteur et faites une NMU pour unstable, 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 BTS et le moment oĂč vous pouvez faire une NMU — est de sept jours. Ce dĂ©lai peut ĂȘtre rĂ©duit 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 stable ou testing, veuillez d'abord vous coordonner avec l'Ă©quipe de publication concernĂ©e.

DeuxiĂšme diffĂ©rence, les porteurs faisant des NMU source doivent choisir une gravitĂ© serious (sĂ©rieuse) ou supĂ©rieure quand ils envoient leur rapport au BTS. Cela assure qu'un paquet source unique permet de produire un paquet binaire pour chaque architecture maintenue 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.

Les porteurs doivent Ă©viter les correctifs qui contournent les bogues des actuelles versions de l'environnement de compilation, du noyau ou de la libc. Parfois, ces contournements ne peuvent ĂȘtre amĂ©liorĂ©s. Si vous devez faire quelque chose de ce genre, marquez proprement vos modifications avec des #ifdef et documentez votre contournement pour pouvoir le retirer une fois le problĂšme externe disparu.

Les porteurs peuvent aussi avoir un dĂ©pĂŽt non officiel pour publier 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 dĂ©pĂŽts n'ont rien d'officiel, donc soyez sur vos gardes si vous les utilisez.

5.11.3. Infrastructure de portage et automatisation

Une infrastructure et plusieurs outils sont disponibles pour faciliter l'automatisation du portage des paquets. Cette section contient un bref aperçu de cette automatisation et de ces outils ; veuillez vous reporter à la documentation des paquets ou les références pour des informations complÚtes.

5.11.3.1. Listes de diffusion et pages web

Les pages web contenant l'Ă©tat de chaque portage peuvent ĂȘtre trouvĂ©es Ă  https://www.debian.org/ports/.

Chaque portage de Debian possĂšde sa propre liste de diffusion. La liste des listes de diffusion de portage peut ĂȘtre trouvĂ©e Ă  https://lists.debian.org/ports.html. Ces listes sont utilisĂ©es pour coordonner les porteurs et pour mettre en relation les utilisateurs d'un portage donnĂ© avec les porteurs.

5.11.3.2. Outils pour les porteurs

Les descriptions de plusieurs outils de portage peuvent ĂȘtre trouvĂ©es en Outils de portage.

5.11.3.3. wanna-build

Le systÚme wanna-build est un systÚme distribué pour la compilation d'une distribution. Il est habituellement utilisé en conjonction avec des automates de compilation faisant fonctionner le programme buildd. Les automates de compilation (« build daemons ») sont des machines « esclaves » qui récupÚrent la liste des paquets à compiler du systÚme principal wanna-build.

wanna-build n'est pas encore disponible sous forme de paquet ; pourtant, tous les efforts de portage l'utilisent pour automatiser la compilation de paquets. L'outil de compilation vraiment utilisĂ© est dans le paquet sbuild, voir la description en sbuild. La version empaquetĂ©e n'est pas la mĂȘme que celle utilisĂ©e sur les automates de compilation, mais suffisamment proche pour reproduire les problĂšmes.

La plupart des informations produites par wanna-build, souvent utiles pour les porteurs, sont disponibles sur la toile à l'adresse https://buildd.debian.org/. Les données disponibles sont entre autres les statistiques mises à jour chaque nuit, les informations de file d'attente et les journaux de tentatives de compilation.

Ce systĂšme est une fiertĂ© de Debian, car il a de nombreux usages potentiels. Il peut ĂȘtre utilisĂ© par des groupes de dĂ©veloppeurs indĂ©pendants pour crĂ©er diffĂ©rentes variantes de Debian d'intĂ©rĂȘt gĂ©nĂ©ral ou non (par exemple, une variante de Debian compilĂ©e avec des vĂ©rifications de limites (« bounds checking ») de gcc). Ce systĂšme permettra aussi de recompiler rapidement toute une distribution.

L'Ă©quipe de wanna-build, en charge des empaqueteurs (« buildd »), peut ĂȘtre contactĂ©e Ă  l'adresse Ă©lectronique debian-wb-team@lists.debian.org. Pour savoir qui (Ă©quipe de wanna-build, Ă©quipe de publication) et comment (courrier Ă©lectronique, BTS) contacter, se reporter Ă  https://lists.debian.org/debian-project/2009/03/msg00096.html.

Lors d'une demande de mise à jour indépendante binaire (binNMU) ou de « rendu » (« give-back » : nouvel essai suite à une compilation échouée), veuillez utiliser le format décrit en https://release.debian.org/wanna-build.txt.

5.11.4. Paquet non portable

Certains paquets ont encore des problĂšmes pour ĂȘtre construits ou pour fonctionner sur certaines architectures prises en charge par Debian, et ne peuvent pas du tout ĂȘtre portĂ©s, ou pas dans un dĂ©lai raisonnable. Par exemple, un paquet spĂ©cifique Ă  SVGA (disponible uniquement sur i386 et amd64), ou qui utilise des fonctionnalitĂ©s spĂ©cifiques au matĂ©riel non gĂ©rĂ©es sur toutes les architectures.

Pour éviter que des paquets cassés soient envoyés dans l'archive et qu'ils fassent perdre le temps des empaqueteurs (« buildd »), vous devez faire plusieurs choses :

  • tout d'abord, assurez-vous que votre paquet Ă©choue Ă  la compilation sur les architectures qu'il ne gĂšre pas. Il y a plusieurs façons de faire cela. Le meilleur moyen est d'avoir une petite suite de tests pendant la construction qui vĂ©rifiera la fonctionnalitĂ© et Ă©chouera si cela ne fonctionne pas. C'est de toute façon une bonne idĂ©e et empĂȘchera (certains) des envois cassĂ©s pour toutes les architectures, cela permettra Ă©galement au paquet d'ĂȘtre construit dĂšs que la fonctionnalitĂ© nĂ©cessaire sera disponible.

    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 debian/control. Ainsi, la construction échouera également et l'indiquera à un lecteur humain sans vraiment essayer ;

  • pour empĂȘcher les compilateurs automatiques de tenter sans raison de construire votre paquet, il doit ĂȘtre inclus dans Packages-arch-specific, une liste utilisĂ©e par le script wanna-build. La version actuelle est disponible en https://wiki.debian.org/PackagesArchSpecific ; veuillez consulter le dĂ©but du fichier pour savoir qui contacter pour le modifier.

Il ne suffit pas d'ajouter votre paquet à Packages-arch-specific sans le faire é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 par le passé, certains paquets binaires ont été envoyés pour des architectures non gérées, demandez leur suppression en remplissant un bogue sur ftp.debian.org.

5.11.5. Paquets non libres pouvant ĂȘtre automatiquement construits

By default packages from the non-free and non-free-firmware sections are not built by the autobuilder network (mostly because the license of the packages could disapprove). To enable a package to be built, you need to perform the following steps:

  1. vérifier s'il est légalement permis et techniquement possible de construire automatiquement le paquet ;

  2. ajouter XS-Autobuild: yes dans la partie en-tĂȘte de debian/control ;

  3. envoyer un courrier Ă  non-free@buildd.debian.org et expliquer pourquoi le paquet peut lĂ©galement et automatiquement ĂȘtre construit.

5.12. Mises Ă  jour indĂ©pendantes (NMU)

Chaque paquet est géré par un ou plusieurs responsables. Normalement, ce sont eux qui travaillent sur les paquets et s'occupent de les mettre à jour. Dans certains cas, il est utile que d'autres développeurs puissent aussi envoyer une nouvelle version, par exemple pour résoudre un bogue dans un paquet dont ils ne sont pas responsables, lorsque le responsable a besoin d'aide pour réagir aux problÚmes. De tels envois sont appelés mises à jour indépendantes (« ``Non-Maintainer Uploads`` » ou ``NMU``).

5.12.1. NMU : quand et comment

Avant de procéder à une NMU, veuillez prendre en considération les questions suivantes.

  • Have you geared the NMU towards helping the maintainer? As there might be disagreement on the notion of whether the maintainer actually needs help or not, the DELAYED queue exists to give time to the maintainer to react and has the beneficial side-effect of allowing for independent reviews of the NMU diff.

  • Does your NMU really fix bugs? ("Bugs" means any kind of bugs, e.g. wishlist bugs for packaging a new upstream version, but care should be taken to minimize the impact to the maintainer.) Using NMUs to make changes that are likely to be non-consensual is discouraged.

  • As more specific examples, the following changes are generally considered acceptable, unless there are good reasons for not following those practices in a particular package: using the latest released debhelper compatibility level; using dh; using 3.0 (quilt); using lintian-brush.

  • Avez-vous laissĂ© suffisamment de temps au responsable ? Quand le bogue a-t-il Ă©tĂ© reportĂ© au BTS ? Être occupĂ© pendant une semaine ou deux n'est pas exceptionnel. Le bogue est-il si grave qu'il doive ĂȘtre corrigĂ© immĂ©diatement, ou cela peut-il attendre encore quelques jours ?

  • Quelle confiance avez-vous dans vos modifications ? Souvenez-vous du serment d'Hippocrate : « je m'abstiendrai de tout 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. Si vous n'ĂȘtes pas absolument sĂ»r de vous, il pourrait ĂȘtre judicieux de chercher des conseils autour de vous. Rappelez-vous que si quelque chose est cassĂ© par votre NMU, de nombreuses personnes seront mĂ©contentes.

  • Avez-vous clairement manifestĂ© votre intention de procĂ©der Ă  une NMU, au moins dans le BTS ? En l’absence de rĂ©action, une bonne idĂ©e serait d'essayer de contacter le responsable par d'autres moyens (courriel aux responsables ou personnel, IRC).

  • Si le responsable est habituellement actif et rĂ©actif, avez-vous tentĂ© de le contacter ? En gĂ©nĂ©ral il est prĂ©fĂ©rable que le responsable prenne en charge lui-mĂȘme un problĂšme et qu'il lui soit offert une chance d'examiner et corriger votre correctif, car il est censĂ© ĂȘtre mieux placĂ© pour dĂ©couvrir d'Ă©ventuels problĂšmes que vous pourriez rater. C'est souvent un gain de temps pour tout le monde si le responsable a la possibilitĂ© d'envoyer lui-mĂȘme une correction.

Lors d'une NMU, vous devez d'abord vous assurer que votre intention est sans ambiguĂŻtĂ©. Ensuite, vous devez envoyer un correctif contenant les diffĂ©rences entre le paquet actuel et votre proposition de NMU au BTS. Le script nmudiff du paquet devscripts pourrait ĂȘtre utile.

While preparing the patch, you had better be aware of any package-specific practices that the maintainer might be using. Taking them into account reduces the burden of integrating your changes into the normal package workflow and thus increases the chances that integration will happen. A good place to look for possible package-specific practices is debian/README.source.

À moins d'avoir une excellente raison de ne pas le faire, vous devez laisser du temps au responsable pour rĂ©agir (par exemple en envoyant le paquet dans la file DELAYED). Voici quelques valeurs recommandĂ©es pour les dĂ©lais :

  • envoi corrigeant seulement un bogue critique pour la publication ouvert il y a plus de sept jours, sans action du responsable sur le bogue pendant sept jours, et sans indication qu'un correctif est en cours : zĂ©ro jour ;

  • envoi corrigeant seulement un bogue critique pour la publication ouvert il y a plus de sept jours : deux jours ;

  • envoi corrigeant seulement un bogue critique pour la publication et important : cinq jours ;

  • Other NMUs: 15 days

Ces délais sont simplement donnés à titre indicatifs. Dans certains cas, comme des envois corrigeant des problÚmes de sécurité, ou corrigeant des bogues insignifiants qui bloquent une transition, il est préférable que le paquet atteigne unstable au plus tÎt.

Parfois, les responsables de publication peuvent dĂ©cider d'encourager des dĂ©lais plus courts pour les NMU corrigeant un sous-ensemble de bogues (par exemple les bogues critiques pour la publication ouverts il y a plus de sept jours). Certains responsables s'inscrivent d'eux-mĂȘmes Ă  la liste permissive de NMU (« ``Low Threshold NMU list` ») <https://wiki.debian.org/LowThresholdNmu>`__, et acceptent que les NMU soient effectuĂ©es sans dĂ©lai. Mais mĂȘme dans ce cas, il est toujours prĂ©fĂ©rable de laisser quelques jours au responsable pour rĂ©agir avant votre envoi, d'autant plus si le correctif n'Ă©tait pas disponible auparavant dans le BTS, ou si vous savez que le responsable est habituellement actif.

After you upload an NMU, you are responsible for the possible problems that you might have introduced. You must keep an eye on the package (Subscribing to package updates is a good way to achieve this).

Il ne s'agit pas d'un permis pour faire des NMU irrĂ©flĂ©chies. Si vous procĂ©dez Ă  une NMU alors que le responsable est clairement actif et aurait pris en considĂ©ration un correctif de façon opportune, ou si vous passez outre les recommandations de ce document, votre envoi risque d'ĂȘtre une cause de conflit avec le responsable. Vous devriez toujours ĂȘtre prĂȘt Ă  dĂ©fendre le bien-fondĂ© de toute NMU effectuĂ©e.

5.12.2. NMU et debian/changelog

Comme tout autre envoi (de paquet source), les NMU doivent comporter une nouvelle entrée dans le fichier debian/changelog, expliquant les modifications effectuées dans cet envoi. La premiÚre ligne de cette entrée doit signaler explicitement qu'il s'agit d'une NMU, par exemple :

* Non-maintainer upload.

La façon de numéroter les versions lors d'une NMU est différente s'il s'agit d'un paquet natif ou non.

Si le paquet est natif (sans partie rĂ©vision Debian dans le numĂ©ro de version du paquet), la version doit ĂȘtre celle du dernier envoi du responsable, suivi de +nmuX, oĂč X est un compteur commençant Ă  1. Si le dernier envoi Ă©tait Ă©galement une NMU, le compteur devrait ĂȘtre augmentĂ©. Par exemple, si la version actuelle est 1.5, alors une NMU devrait prendre la version 1.5+nmu1.

Si le paquet n'est pas natif, vous devriez ajouter un numéro de version mineure à la partie révision Debian du numéro de version (la partie aprÚs le dernier tiret). Ce numéro supplémentaire devrait commencer à 1. Par exemple si la version actuelle est 1.5-2, alors une NMU devrait prendre la version 1.5-2.1. Si une nouvelle version amont est empaquetée lors de la NMU, la révision Debian est configurée à 0, par exemple 1.6-0.1.

Dans les deux cas, si le dernier envoi Ă©tait Ă©galement une NMU, le compteur devrait ĂȘtre augmentĂ©. Par exemple, si la version actuelle est 1.5+nmu3 (un paquet natif dĂ©jĂ  mis Ă  jour indĂ©pendamment), la NMU devrait prendre la version 1.5+nmu4.

Une numĂ©rotation de version spĂ©cifique est nĂ©cessaire pour Ă©viter de perturber le travail du responsable, car l'utilisation d'un entier dans la rĂ©vision Debian risque d'entrer en conflit avec un envoi dĂ©jĂ  en prĂ©paration lors de la NMU, ou mĂȘme dĂ©jĂ  dans la file d'attente de nouveaux paquets (NEW), Cela prĂ©sente Ă©galement l'avantage d'indiquer clairement que le paquet dans l'archive n'a pas Ă©tĂ© prĂ©parĂ© par le responsable officiel.

Lors d'un envoi de paquet vers testing ou stable, il est parfois nĂ©cessaire de crĂ©er une branche (« fork ») dans l'arbre de numĂ©rotation des versions. C'est par exemple le cas pour les mises Ă  jour de sĂ©curitĂ©. Pour cela, une version de la forme +debXuY devrait ĂȘtre utilisĂ©e, X Ă©tant le numĂ©ro de publication majeure et Y Ă©tant un compteur qui commence Ă  1. Par exemple, alors que trixie (Debian 13) est stable, une NMU de sĂ©curitĂ© pour un paquet dont la version est 1.5-3 devrait avoir la version 1.5-3+deb13u1, alors qu'une NMU de sĂ©curitĂ© vers forky devrait prendre la version 1.5-3+deb14u1.

5.12.3. Utilisation de la file d'attente DELAYED/

Attendre une rĂ©ponse aprĂšs avoir demandĂ© la permission de procĂ©der Ă  une NMU est inefficace, car cela coĂ»te au demandeur un changement de contexte (« context switch ») pour revenir sur le problĂšme. La file d'attente DELAYED/ (voir Envois diffĂ©rĂ©s) permet au dĂ©veloppeur prĂ©parant une NMU d'accomplir toutes les tĂąches nĂ©cessaire en mĂȘme temps. Par exemple, plutĂŽt que dire au responsable que vous allez envoyer le nouveau paquet dans sept jours, vous devriez envoyer le paquet vers DELAYED/7 et dire au responsable qu'il a sept jours pour rĂ©agir. Pendant ce temps, le responsable peut vous demander de retarder un peu plus votre envoi, ou l'annuler.

You can cancel your upload using dcut. In case you uploaded foo_1.2-1.1_all.changes to a DELAYED queue, you can run dcut cancel foo_1.2-1.1_all.changes to cancel your upload. The .changes file does not need to be present locally as you instruct dcut to upload a command file removing a remote filename. The .changes file name is the same that you used when uploading.

La file d'attente DELAYED ne devrait pas ĂȘtre utilisĂ©e pour augmenter la pression sur le responsable. Notamment, il est important d'ĂȘtre disponible pour annuler ou retarder l'envoi avant la fin du dĂ©lai, car le responsable ne peut pas le faire lui-mĂȘme.

Si vous procédez à une NMU vers DELAYED et que le responsable envoie son paquet avant la fin du délai, votre envoi sera rejeté, car une nouvelle version sera alors disponible dans l'archive. Dans l'idéal, le responsable se chargera d'intégrer votre proposition (ou du moins une solution pour le problÚme en question) dans son envoi.

5.12.4. NMU d'un point de vue du responsable

Quand quelqu'un réalise une NMU sur votre paquet, c'est pour vous aider à le garder en bon état. Cela permet aux utilisateurs d'obtenir un paquet corrigé au plus vite. Vous pouvez envisager de proposer à l'auteur de la NMU de devenir coresponsable du paquet. Recevoir une NMU sur un paquet n'est pas une mauvaise chose : cela signifie simplement que le paquet est suffisamment intéressant pour que d'autres personnes veuillent travailler dessus.

Pour prendre en compte une NMU, intégrez ses modifications et l'entrée de journal de modification (changelog) lors de votre envoi suivant. Si vous ne prenez pas en compte la NMU en conservant l'entrée de changelog correspondante, le bogue restera fermé dans le BTS, mais sera listé comme affectant votre version du paquet.

Notez que si vous avez besoin d’annuler une NMU qui a empaquetĂ© une nouvelle version amont, il est recommandĂ© d’utiliser une version amont factice telle que ACTUEL+reallyANCIEN jusqu’à ce que quelqu’un puisse tĂ©lĂ©verser Ă  nouveau la derniĂšre version. Plus d’informations sont disponibles dans https://www.debian.org/doc/debian-policy/ch-controlfields.html#epochs-should-be-used-sparingly.

Note that easiest way to both check if your package has been NMUed, and also automatically download and commit the changes into a git-buildpackage maintained git repository is to run gbp import-dsc --verbose --pristine-tar apt:<package>/sid. This example command assumes you are working on the debian/latest branch preparing the next upload to Debian unstable, and it assumes your apt has the deb-src line active for Debian unstable.

5.12.5. Mise Ă  jour indĂ©pendante source (NMU) vs binaire (binNMU)

Le nom complet pour une NMU est mise à jour indépendante source (« ``source NMU`` »). Il en existe aussi d'un autre type, appelé mise à jour indépendante binaire (« ``binary-only NMU`` » ou « ``binNMU`` »). Une binNMU est aussi un paquet envoyé par quelqu'un d'autre que le responsable du paquet. Cependant, seul le paquet binaire est mis à jour.

Lorsqu'une bibliothĂšque (ou toute autre dĂ©pendance) est mise Ă  jour, les paquets l'utilisant risquent de devoir ĂȘtre reconstruits. Puisque le code source n'a pas besoin d'ĂȘtre modifiĂ©, le mĂȘme paquet source est utilisĂ©.

Les binNMU sont gĂ©nĂ©ralement dĂ©clenchĂ©es sur les empaqueteurs (« buildd ») par wanna-build. Une entrĂ©e est ajoutĂ©e Ă  debian/changelog expliquant pourquoi un envoi Ă©tait requis et le numĂ©ro de version est augmentĂ© tel que dĂ©crit en Recompilation ou mise Ă  jour indĂ©pendante binaire (binNMU). Cette entrĂ©e ne devrait pas ĂȘtre gardĂ©e lors de l'envoi suivant.

Les empaqueteurs (« buildd ») envoient les paquets de leur architecture comme des mises à jour binaires. Au sens strict, ce sont des binNMU. Cependant, elles ne sont généralement pas appelées NMU, et aucune entrée n'est ajoutée à debian/changelog.

5.12.6. NMU et envoi de QA

Les NMU sont des envois effectuĂ©s par quelqu'un d'autre que le responsable attitrĂ©. Il existe un autre type d'envoi oĂč le paquet mis Ă  jour ne vous appartient pas : les envois de QA, qui sont des envois pour les paquets orphelins.

Les envois de QA ressemblent beaucoup Ă  des envois normaux de responsable : ils peuvent corriger quelque chose, mĂȘme un problĂšme mineur ; la numĂ©rotation de version est normale, et il n'est pas nĂ©cessaire d'utiliser d'envoi retardĂ©. La diffĂ©rence est que vous ne faites pas partie des responsables (Maintainer ou Uploader) du paquet. Ainsi, l'entrĂ©e du journal de modification (changelog) d'un envoi de QA commence par la ligne :

* QA upload.

Si vous voulez faire une NMU, et que le responsable ne semble pas actif, il est judicieux de vérifier le paquet pour voir s'il est orphelin (cette information est disponible sur la page du systÚme de suivi relative au paquet). Lors d'un premier envoi de QA sur un paquet orphelin, veuillez positionner le responsable à « Debian QA Group <packages@qa.debian.org> ». La liste actuelle des paquets orphelins dont le responsable n'a pas encore été modifié est disponible en https://qa.debian.org/orphaned.html.

PlutĂŽt que faire un envoi de QA, vous pouvez envisager l'adoption du paquet en devenant son responsable. Vous n'avez besoin de la permission de personne pour adopter un paquet orphelin, il suffit de vous configurer comme responsable et d'envoyer la nouvelle version (voir Adoption de paquet).

5.12.7. NMU et envoi d'Ă©quipe

Parfois, vous corrigez ou envoyez un paquet, car vous ĂȘtes membre d'une Ă©quipe de responsables (qui utilise une liste de diffusion comme responsable (Maintainer ou Uploader), voir Maintenance collective), mais vous ne voulez pas vous ajouter comme coresponsable (Uploaders), car vous n'avez pas l'intention de participer rĂ©guliĂšrement Ă  ce paquet. Si cela est conforme avec la politique de votre Ă©quipe, vous pouvez procĂ©der Ă  un envoi normal sans ĂȘtre listĂ© parmi les responsables (Maintainer ou Uploader). Dans ce cas, vous devriez commencer l'entrĂ©e du journal de modification (changelog) par la ligne suivante :

* Team upload.

5.13. Sauvetage de paquets

Le sauvetage de paquet est le processus permettant de sauver un paquet qui, tout en n'Ă©tant pas officiellement orphelin, semble peu ou complĂštement non entretenu. C’est une procĂ©dure moindre et plus rapide que de dĂ©clarer un paquet orphelin officiellement Ă  l’aide des moyens de l’équipe MIA. Sauver un paquet n’est pas destinĂ© Ă  remplacer la gestion MIA et diffĂšre en ce qu’elle n’implique aucunement l’activitĂ© complĂšte de responsable. Cela gĂšre plutĂŽt la transition de responsabilitĂ© pour un seul paquet, n’affectant pas tout autre paquet, affiliation Ă  Debian ou droits de tĂ©lĂ©versement (lorsque pertinents).

Il est a remarquer que le processus est seulement destinĂ© Ă  prendre fermement la responsabilitĂ©. Ne dĂ©marrez pas le processus de sauvetage de paquet sans la ferme intention d’entretenir le paquet pendant une pĂ©riode prolongĂ©e. Si vous voulez corriger certaines choses sans devenir responsable, vous devez utiliser le processus NMU, mĂȘme si le paquet est susceptible d’ĂȘtre sauvĂ©. Le processus NMU est expliquĂ© dans Mises Ă  jour indĂ©pendantes (NMU).

Une autre chose Ă  se souvenir est qu’il n’est pas acceptable de dĂ©tourner d’autres paquets. S'il est suivi, le processus de sauvetage vous aide Ă  ĂȘtre sĂ»r que votre initiative n’est pas un dĂ©tournement, mais une procĂ©dure (officielle) de sauvetage, et vous pourrez rĂ©futer toute allĂ©gation de dĂ©tournement en faisant rĂ©fĂ©rence Ă  ce processus. GrĂące Ă  ce processus, les nouveaux contributeurs ne devraient pas ĂȘtre effrayĂ©s de s’accaparer des paquets dĂ©laissĂ©s ou complĂštement abandonnĂ©s.

Le processus se dĂ©roule en deux phases. PremiĂšrement, vous dĂ©terminez si le paquet en question est Ă©ligible au processus de sauvetage. Seulement aprĂšs que l’éligibilitĂ© a Ă©tĂ© dĂ©terminĂ©e, vous pouvez dĂ©marrer la deuxiĂšme phase, le sauvetage effectif du paquet.

Pour des informations complémentaires, des principes et des FAQ sur le sauvetage de paquet, veuillez consulter la page Salvaging Packages sur le wiki de Debian.

5.13.1. Quand un paquet devient-il Ă©ligible au sauvetage de paquet ?

Un paquet devient Ă©ligible au sauvetage lorsqu’il est abandonnĂ© par le responsable actuel. Pour savoir qu’un paquet est rĂ©ellement abandonnĂ© par son responsable, les indicateurs suivants donnent une idĂ©e sommaire sur ce qu’il faut rechercher :

  • les NMU, spĂ©cialement s’il y a eu plusieurs NMU consĂ©cutifs ;

  • les bogues concernant le paquet, sans rĂ©ponse du responsable ;

  • l’amont a publiĂ© plusieurs versions du paquet, mais malgrĂ© un dĂ©pĂŽt de bogue en faisant la demande, elle n’a pas Ă©tĂ© empaquetĂ©e ;

  • Il existe des problĂšmes de QA avec le paquet.

Vous devez vous fier Ă  votre jugement pour dĂ©terminer si une combinaison de facteurs constitue un dĂ©laissement. En cas de dĂ©saccord du responsable, celui-ci doit seulement le signaler (voir ci-dessous). Si vous n’ĂȘtes pas sĂ»r de votre jugement ou que vous vouliez simplement ĂȘtre du bon cĂŽtĂ©, il existe un ensemble de conditions plus prĂ©cis (et conservateur) dans la page de wiki Package Salvaging. Ces conditions constituent le consensus actuel de Debian sur les critĂšres de sauvetage. Dans tous les cas, vous devriez expliquer vos raisons de penser que le paquet est dĂ©laissĂ© lorsque plus tard vous dĂ©posez un bogue « Intent to Salvage ».

5.13.2. Comment sauver un paquet ?

Si, et seulement si, un paquet a Ă©tĂ© dĂ©terminĂ© comme Ă©ligible au sauvetage, n’importe quel responsable potentiel peut dĂ©marrer la procĂ©dure de sauvetage qui suit.

  1. Ouvrez un bogue avec une sĂ©vĂ©ritĂ© « important » pour le paquet en question, exprimant votre intention de prendre la responsabilitĂ© du paquet. Pour cela, le titre du rapport doit dĂ©buter par ITS: package-name [3]. Sinon vous pouvez proposer de prendre la coresponsabilitĂ© du paquet. Lorsque vous ouvrez le bogue, vous devez informer tous les responsables, tĂ©lĂ©verseurs et si appropriĂ©, l’équipe d’empaquetage, explicitement en les ajoutant dans X-Debbugs-CC. De plus, si le ou les responsables semblent ĂȘtre gĂ©nĂ©ralement inactifs, veuillez informer l’équipe MIA en ajoutant Ă©galement mia@qa.debian.org Ă  X-Debbugs-CC. De mĂȘme que l’expression explicite de l’intention de sauvetage, veuillez aussi prendre le temps de documenter votre Ă©valuation de l’éligibilitĂ© dans le rapport de bogue, par exemple, en listant les critĂšres utilisĂ©s et en ajoutant quelques donnĂ©es pour faciliter l’évaluation de la situation par d’autres ;

  2. À ce stade, vous devez attendre au cas oĂč des objections seraient soulevĂ©es. Le responsable, n’importe quel tĂ©lĂ©verseur actuel ou n’importe quel membre de l’équipe d’empaquetage concernĂ©e par le paquet en question peut objecter publiquement en rĂ©ponse au bogue dĂ©posĂ© sous 21 jours, et cela met fin au processus de sauvetage.

    Les responsables actuels peuvent ĂȘtre d’accord avec votre volontĂ© de sauvetage en rĂ©pondant (avec signature) publiquement au bogue. Ils peuvent proposer que vous deveniez coresponsable au lieu d’ĂȘtre l’unique responsable. Pour les paquets entretenus par une Ă©quipe, un membre de cette Ă©quipe peut accepter votre proposition de sauvetage en envoyant un avis signĂ© d’accord au bogue ITS, ou autrement vous inviter Ă  devenir un coresponsable du paquet. L’équipe peut exiger que le paquet reste sous sa tutelle, mais alors vous inviter Ă  les rejoindre. Dans tous les cas, lorsque vous avez reçu le feu vert, vous pouvez tĂ©lĂ©verser le nouveau paquet immĂ©diatement en tant que nouveau (co)responsable, sans avoir besoin d’utiliser la file d’attente DELAYED comme dĂ©crit dans la prochaine Ă©tape ;

  3. AprĂšs 21 jours d’attente, si aucune rĂ©ponse n’a Ă©tĂ© envoyĂ©e au bogue par le responsable, un tĂ©lĂ©verseur ou une Ă©quipe, vous pouvez envoyez la nouvelle publication du paquet dans la file d’attente DELAYED avec un dĂ©lai minimal de sept jours. Vous devrez clore le bogue dans le changelog et vous devez aussi envoyer un nmudiff au bogue veillant que des copies soient envoyĂ©es au responsable et Ă  tous les tĂ©lĂ©verseurs (y compris les Ă©quipes) du paquet en les mettant en CC (Copie conforme) dans le courriel au BTS.

    Durant le temps d’attente de la file DELAYED, les responsables peuvent accepter le sauvetage, faire un envoi eux-mĂȘmes ou (demander Ă ) annuler l’envoi. Ces deux derniĂšres actions stopperont le processus de sauvetage, mais les responsables doivent rĂ©pondre au bogue de sauvetage avec plus d’informations sur le pourquoi.

5.14. Maintenance collective

« 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 court. Il est fortement recommandé que les paquets de priorité standard ou qui font partie de la base aient des coresponsables.

Habituellement, il y a un responsable principal et un ou plusieurs coresponsables. Le responsable principal est la personne dont le nom est indiqué dans le champ Maintainer du fichier debian/control. Les coresponsables sont tous les autres responsables, normalement listés dans le champ Uploaders du fichier debian/control.

Dans sa forme la plus simple, ajouter un nouveau coresponsable est assez facile :

  • configurer le coresponsable avec droit d'accĂšs aux sources Ă  partir desquelles vous construisez le paquet. En gĂ©nĂ©ral, cela implique que vous utilisez un systĂšme de gestion de versions en rĂ©seau, tel que Git. Salsa (voir salsa.debian.org : dĂ©pĂŽts Git et plateforme de dĂ©veloppement collaborative) fournit des dĂ©pĂŽts Git parmi d'autres outils collaboratifs.

  • ajouter les nom et adresse correctes du coresponsable au champ Uploaders dans le premier paragraphe du fichier debian/control ;

    Uploaders: John Buzz <jbuzz@debian.org>, Adam Rex <arex@debian.org>
    
  • The co-maintainers should subscribe themselves to the appropriate source package (see Subscribing to package updates).

Une autre forme de maintenance collective est une maintenance en Ă©quipe, recommandĂ©e si vous gĂ©rez plusieurs paquets avec le mĂȘme groupe de dĂ©veloppeurs. Dans ce cas, les champs de responsable (Maintainer et Uploaders) de chaque paquet doivent ĂȘtre gĂ©rĂ©s avec attention. Il est conseillĂ© de choisir entre les deux possibilitĂ©s suivantes :

  1. placer un membre de l'équipe comme responsable principal du paquet dans le champ Maintainer. En Uploaders, placer l'adresse de la liste de diffusion et les membres de l'équipe qui s'occupent du paquet ;

  2. placer l'adresse de la liste de diffusion dans le champ Maintainer. En Uploaders, placer les membres de l'équipe qui s'occupent du paquet. Dans ce cas, vous devez vous assurer que la liste de diffusion peut recevoir les rapports de bogue sans interaction humaine (modération pour les non inscrits par exemple).

En tout cas, il faut Ă©viter de placer automatiquement tous les membres de l'Ă©quipe dans le champ Uploaders. Cela encombre la vue d'ensemble des paquets d'un dĂ©veloppeur (voir Vue d'ensemble des paquets d'un dĂ©veloppeur) avec des paquets dont il ne s'occupe pas vraiment et donne la fausse impression d'un bon suivi. De mĂȘme, les membres de l'Ă©quipe n'ont pas besoin de s'ajouter dans le champ Uploaders pour faire un envoi ponctuel, ils peuvent le faire en « envoi d'Ă©quipe » (voir NMU et envoi d'Ă©quipe). En revanche, c'est une mauvaise idĂ©e de garder un paquet avec seulement l'adresse de la liste de diffusion dans le champ Maintainer et sans Uploaders.

5.15. La distribution testing

5.15.1. Bases

Les paquets sont habituellement installés dans la distribution testing aprÚs avoir subi suffisamment de tests dans unstable.

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 ĂȘtre exempts de bogue critique pour la publication (« release-critical ») au moment oĂč ils sont installĂ©s dans testing. Ainsi, testing devrait toujours ĂȘtre prĂȘte Ă  devenir une version candidate pour la publication. Veuillez voir ci-dessous pour les dĂ©tails.

5.15.2. Mise Ă  jour depuis unstable

Les scripts de mise à jour de la distribution testing sont exécutés deux fois par jour, juste aprÚs l'installation des paquets mis à jour ; ces scripts sont appelés britney. Ils fabriquent les fichiers Packages pour la distribution testing, mais ils le font d'une maniÚre intelligente pour éviter toute incohérence et essayer de n'utiliser que des paquets sans bogue.

L'inclusion d'un paquet d'unstable est soumise aux conditions suivantes :

  • The package must have been available in unstable for a certain number of days, see SĂ©lection de l’urgence du tĂ©lĂ©versement. Please note that the urgency is sticky, meaning that the highest urgency uploaded since the previous testing transition is taken into account;

  • il ne doit pas introduire de nouveau bogue critique pour la publication (« RC bug » affectant la version disponible dans unstable, mais pas celle de testing) ;

  • il doit ĂȘtre disponible pour toutes les architectures pour lesquelles il a dĂ©jĂ  Ă©tĂ© construit dans unstable. Utilitaire dak ls permet de vĂ©rifier cette information ;

  • il ne doit pas casser les dĂ©pendances d'un paquet dĂ©jĂ  disponible dans testing ;

  • les paquets dont il dĂ©pend doivent soit ĂȘtre dĂ©jĂ  disponibles dans testing, soit ĂȘtre acceptĂ©s dans testing au mĂȘme moment (et ils doivent remplir tous les critĂšres nĂ©cessaires) ;

  • l'Ă©tat du projet. C'est-Ă -dire que les transitions automatiques sont arrĂȘtĂ©es pendant le freeze (gel) de la distribution testing.

Pour savoir si un paquet a progressé ou non dans testing, veuillez voir la sortie du script de testing sur la page web de la distribution `testing <https://www.debian.org/devel/testing>`__ ou utilisez le programme grep-excuses du paquet devscripts. Pour rester informé de la progression de vos paquets dans testing, vous pouvez facilement le mettre dans une crontab 5.

Le fichier update_excuses ne donne pas toujours la raison prĂ©cise pour laquelle un paquet est refusé ; il peut ĂȘtre nĂ©cessaire de la chercher soi-mĂȘme en regardant ce qui serait cassĂ© avec l'inclusion du paquet. La page web de la distribution testing donne plus d'informations sur les problĂšmes courants pouvant occasionner cela.

Parfois, certains paquets n'entrent jamais dans testing parce que le jeu des interrelations est trop compliquĂ© et ne peut ĂȘtre rĂ©solu par le script. Voir ci-dessous pour des dĂ©tails.

Des analyses de dĂ©pendances plus avancĂ©es sont prĂ©sentĂ©es sur https://release.debian.org/migration/ — mais, attention, cette page affiche Ă©galement des dĂ©pendances de construction qui ne sont pas prises en compte par britney.

5.15.2.1. DĂ©synchronisation

Pour le script de migration de testing, périmé signifie : il y a différentes versions dans unstable pour les architectures publiées (sauf les architectures dans outofsync_arches ; outofsync_arches est la liste des architectures qui sont abandonnées (dans britney.py), mais actuellement la liste est vide). Le caractÚre périmé n'a absolument rien à voir avec les architectures de ce paquet dans testing.

Considérons cet exemple :

alpha

arm

testing

1

-

unstable

1

2

Le paquet est désynchronisé pour alpha dans unstable et n'entrera pas dans testing. Supprimer le paquet de testing n'aiderait en rien, le paquet serait toujours désynchronisé pour alpha et ne se propagerait pas dans testing.

Cependant, si ftp-master supprime un paquet d'unstable (ici pour arm) :

alpha

arm

hurd-i386

testing

1

1

-

unstable

2

-

1

Dans ce cas, le paquet est synchronisé pour toutes les architectures de version dans unstable (et l'architecture supplémentaire hurd-i386 ne compte pas, car ce n'est pas une architecture de publication).

Quelquefois, la question est soulevĂ©e de savoir s'il est possible de permettre Ă  des paquets de passer dans testing alors qu'ils ne sont pas encore construits pour toutes les architectures : non. Simplement non. (ExceptĂ© si vous ĂȘtes responsable de glibc ou Ă©quivalent).

5.15.2.2. Suppression de testing

Parfois, un paquet est supprimĂ© pour permettre l'inclusion d'un autre paquet : cela ne se produit que pour permettre Ă  un autre paquet d'entrer, ce dernier doit ĂȘtre prĂȘt pour tous les autres critĂšres. Par exemple, si un paquet a ne peut pas ĂȘtre installĂ© avec la nouvelle version de b, alors a peut ĂȘtre supprimĂ© pour permettre l'entrĂ©e de b.

Bien sĂ»r, il existe une autre raison pour supprimer un paquet de testing : le paquet est trop boguĂ© (et avoir un seul bogue critique pour la publication est suffisant pour ĂȘtre dans cet Ă©tat).

De plus, si un paquet a été supprimé d'unstable et que plus un seul paquet de testing n'en dépend, il sera alors automatiquement supprimé.

5.15.2.3. DĂ©pendances circulaires

Une situation mal gérée par britney est si un paquet a dépend de la nouvelle version d'un paquet b et vice versa.

Voici un exemple :

testing

unstable

a

1 ; dépend de : b=1

2 ; dépend de : b=2

b

2 ; dépend de : a=1

2 ; dépend de : a=2

Aucun des paquets a et b ne sera considéré pour une mise à jour.

Actuellement, cela nécessite un coup de pouce manuel de l'équipe de publication. Veuillez les contacter à l'adresse debian-release@lists.debian.org si cela se produit pour l'un de vos paquets.

5.15.2.4. Influence d'un paquet dans testing

En gĂ©nĂ©ral, rien n'est indiquĂ© par l'Ă©tat d'un paquet dans testing pour une transition de la versions suivante d'unstable vers testing, avec deux exceptions : la premiĂšre si le nombre de bogues critiques pour la publication diminue, il peut entrer mĂȘme s'il comporte encore des bogues critiques. La seconde exception, c'est si la version du paquet dans testing est dĂ©synchronisĂ©e sur les diffĂ©rentes architectures : alors une architecture pourrait seulement ĂȘtre mise Ă  niveau vers la version du paquet source ; nĂ©anmoins, cela peut se produire seulement si auparavant le passage du paquet a Ă©tĂ© forcĂ©, si l'architecture est dans outofsync_arches ou s'il n'y avait aucun paquet binaire de cette architecture prĂ©sent dans unstable durant la migration de testing.

En rĂ©sumĂ©, cela signifie : la seule influence qu'un paquet de testing a sur la nouvelle version du mĂȘme paquet est que la nouvelle version peut entrer plus facilement.

5.15.2.5. DĂ©tails

Si vous ĂȘtes intĂ©ressĂ©s par les dĂ©tails, voici quelques informations sur le fonctionnement de britney.

Les paquets sont examinés pour savoir si ce sont des candidats valables. Cela génÚre les dispenses de mise à jour (« update excuses »). Les raisons habituelles pour lesquelles un paquet n'est pas considéré sont la jeunesse du paquet, le nombre de bogues critiques pour la publication et la désynchronisation pour certaines architectures. Pour cette partie de britney, les responsables de publication ont des marteaux de toute taille, appelés coups de pouce (« hints », voir ci-dessous) pour forcer britney à examiner un paquet.

Maintenant, la partie la plus complexe se produit : britney tente de mettre Ă  jour testing avec des candidats valables. Pour ce faire, britney essaye d'ajouter chaque candidat valable Ă  la distribution testing. Si le nombre de paquets non installables dans testing n'augmente pas, le paquet est acceptĂ©. À partir de lĂ , le paquet acceptĂ© est considĂ©rĂ© comme partie de testing, de telle sorte qu'il sera considĂ©rĂ© dans les tests suivants d'installabilitĂ©. Avant et aprĂšs cette partie, certains coups de pouce (« hints ») de l'Ă©quipe de publication sont traitĂ©s.

Pour obtenir plus de précisions, vous pouvez consulter https://release.debian.org/britney/update_output/.

Les coups de pouce (« hints ») sont disponibles sur https://release.debian.org/britney/hints/, qui contient aussi une description. Avec les coups de pouce, l'équipe en charge de la publication de Debian peut bloquer ou débloquer des paquets, faciliter ou forcer le passage de paquets dans testing, enlever des paquets de testing, approuver des envois vers les Mises à jour directes dans testing ou outrepasser l'urgence.

5.15.3. Mises Ă  jour directes dans testing

La distribution testing est remplie de paquets en provenance d'unstable selon des rÚgles expliquées ci-dessus. Cependant, dans certains cas, il est nécessaire d'envoyer des paquets construits seulement pour testing. Pour cela, vous pouvez envoyer vos paquets vers testing-proposed-updates.

Souvenez-vous que les paquets envoyés là ne sont pas traités automatiquement, ils doivent passer entre les mains des responsables 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 publication, vous devriez lire les instructions qu'ils envoient réguliÚrement sur debian-devel-announce@lists.debian.org.

Vous ne devriez pas envoyer de paquet Ă  testing-proposed-updates quand vous pouvez le mettre Ă  jour par unstable. Si vous ne pouvez faire autrement (par exemple, parce que vous avez une nouvelle version de dĂ©veloppement dans unstable), vous pouvez utiliser cette fonction. MĂȘme si un paquet est gelĂ©, des mises Ă  jour par unstable sont possibles si l'envoi dans unstable ne crĂ©e pas de nouvelles dĂ©pendances.

Les numĂ©ros de version sont habituellement choisis en ajoutant +debXuY, oĂč X est le numĂ©ro de publication majeure de Debian et Y est un compteur dĂ©marrant à 1, par exemple, 1:2.4.3-4+deb13u1.

Veuillez vous assurer de n'avoir oublié aucun des éléments suivants lors de votre envoi :

  • vĂ©rifiez que le paquet doit vraiment aller dans testing-proposed-updates, et ne peut pas passer par unstable ;

  • vĂ©rifiez de n'avoir intĂ©grĂ© qu'un minimum de changements ;

  • vĂ©rifiez d'avoir ajoutĂ© une explication appropriĂ©e dans le journal de modification (changelog) ;

  • vĂ©rifiez d'avoir ajoutĂ© les Noms de code des distributions de testing (par exemple, forky) comme distribution cible ;

  • vĂ©rifiez d'avoir construit et testĂ© votre paquet dans testing, et non dans unstable ;

  • vĂ©rifiez que le numĂ©ro de version est plus Ă©levĂ© que les versions de testing et de testing-proposed-updates, et moins Ă©levĂ© que celui d'unstable ;

  • demandez l'autorisation d'envoi aux responsables de publication ;

  • aprĂšs l'envoi et la construction rĂ©ussie sur toutes les plates-formes, contactez l'Ă©quipe de publication Ă  debian-release@lists.debian.org et demandez-leur d'approuver votre envoi.

5.15.4. Foire aux questions

5.15.4.1. Quels sont les bogues bloquant l'intĂ©gration dans la version stable et comment sont-ils pris en compte ?

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 critical (critique), grave (grave) et serious (sérieux).

Certains bogues sont supposĂ©s avoir un impact sur la probabilitĂ© d'un paquet a ĂȘtre diffusĂ© dans la version stable de Debian : en gĂ©nĂ©ral, si un paquet a des bogues bloquants, il n'ira pas dans testing, et par consĂ©quent, ne pourra pas ĂȘtre diffusĂ© dans stable.

Le décompte des bogues d'unstable inclut tous les bogues critiques pour la publication marqués pour s'appliquer à des combinaisons de paquet/version disponibles dans unstable pour une architecture concernée par la publication. Le décompte des bogues de testing est défini de façon analogue.

5.15.4.2. Comment l'installation d'un paquet dans testing peut-elle casser d'autres paquets ?

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 testing avec ses paquets binaires acme-foo-bin, acme-bar-bin, libacme-foo1 et libacme-foo-dev, l'ancienne version est supprimée.

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.

Évidemment, cela touche principalement des paquets qui fournissent des jeux variables de paquets binaires pour diffĂ©rentes versions (principalement des bibliothĂšques). Cependant, cela va aussi concerner des paquets sur lesquels une dĂ©pendance versionnĂ©e du type ==, <=, ou << a Ă©tĂ© dĂ©clarĂ©e.

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 plutĂŽt de la nouvelle version. Comme l'installation d'un tel paquet source dans testing casse tous les paquets qui en dĂ©pendent dans testing, une attention particuliĂšre doit y ĂȘtre portĂ©e : tous les paquets en dĂ©pendant doivent ĂȘtre mis Ă  jour et prĂȘts Ă  ĂȘtre installĂ©s eux-mĂȘmes pour ne pas casser et, une fois que tout est prĂȘt, une intervention manuelle des responsables de publication est normalement requise.

Si vous avez des problÚmes avec des groupes compliqués de paquets comme cela, demandez de l'aide sur debian-devel@lists.debian.org ou debian-release@lists.debian.org.

5.16. The Stable backports archive

5.16.1. Bases

Once a package reaches the testing distribution, it is possible for anyone with upload rights in Debian (see below about this) to build and upload a backport of that package to stable-backports, to allow easy installation of the version from testing onto a system that is tracking the stable distribution.

One should not upload a version of a package to stable-backports until the matching version has already reached the testing archive.

5.16.2. Exception to the testing-first rule

The only exception to the above rule, is when there's an important security fix that deserves a quick upload: in such a case, there is no need to delay an upload of the security fix to the stable-backports archive. However, it is strongly advised that the package is first fixed in unstable before uploading a fix to the stable-backports archive.

5.16.3. Who can maintain packages in the stable-backports archive?

It is not necessarily up to the original package maintainer to maintain the stable-backports version of the package. Anyone can do it, and one doesn't even need approval from the original maintainer to do so. It is however good practice to first get in touch with the original maintainer of the package before attempting to start the maintenance of a package in stable-backports. The maintainer can, if they wish, decide to maintain the backport themselves, or help you doing so. It is not uncommon, for example, to apply a patch to the unstable version of a package, to facilitate its backporting.

5.16.4. When can one start uploading to stable-backports?

The new stable-backports is created before the freeze of the next stable suite. However, it is not allowed to upload there until the very end of the freeze cycle. The stable-backports archive is usually opened a few weeks before the final release of the next stable suite, but it doesn't make sense to upload until the release has actually happened.

5.16.5. How long must a package be maintained when uploaded to stable-backports?

The stable-backports archive is maintained for bugs and security issues during the whole life-cycle of the Debian stable suite. Therefore, an upload to stable-backports, implies a willingness to maintain the backported package for the duration of the stable suite, which can be expected to be about 3 years from its initial release.

The person uploading to backports is also supposed to maintain the backported packages for security during the lifetime of stable.

It is to be noted that the stable-backports isn't part of the LTS or ELTS effort. The stable-backports FTP masters will close the stable-backports repositories for uploads once stable reaches end-of-life (ie: when stable becomes maintained by the LTS team only). Therefore there won't be any maintenance of packages from stable-backports after the official end of life of the stable suite, as uploads will not be accepted.

5.16.6. How often shall one upload to stable-backports?

The packages in backports are supposed to follow the developments that are happening in Testing. Therefore, it is expected that any significant update in testing should trigger an upload into stable-backports, until the new stable is released. However, please do not backport minor version changes without user visible changes or bugfixes.

5.16.7. How can one learn more about backporting?

You can learn more about how to contribute directly on the backport web site.

It is also recommended to read the Frequently Asked Questions (FAQ).