[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ A ] [ suivant ]

Référence du développeur Debian
Chapitre 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. Vous pourrez ainsi vérifier que personne ne travaille déjà sur ce paquet et éviter un double travail. 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 Rapporter des bogues, Section 7.1) concernant le pseudo-paquet wnpp. Ce courrier devra décrire le paquet que vous projetez de créer, la licence de ce paquet et l'URL à laquelle le source peut être téléchargé. Cette liste n'est pas limitative.

Le sujet de votre rapport de bogue devra être <ITP[19] : NomDuPaquetcourte description>, en remplaçant NomDuPaquet par le nom du paquet. La gravité du bogue sera wishlist. Si vous le jugez nécessaire, envoyez une copie à debian-devel@lists.debian.org en mettant cette adresse dans le champ X-Debbugs-CC: de l'en-tête du message. N'utilisez pas le champ CC: car de cette manière le sujet du message ne contiendrait pas le numéro du bogue.

Il faudra aussi ajouter une entrée Closes: bug#nnnnn dans le fichier changelog du nouveau paquet. Cette indication fermera automatiquement le rapport de bogue à l'installation du nouveau paquet sur les serveurs d'archivage (voir Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4).

Plusieurs raisons nous poussent à demander aux responsables d'annoncer leur intention :


5.2 Enregistrer les modifications dans le paquet

Les modifications que vous apportez au paquet doivent être notifiées dans le fichier debian/changelog. Ces notes doivent donner une description concise des changements, expliquer les raisons de ceux-ci (si ce n'est pas clair) et indiquer si des 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 dans Choisir une distribution, Section 5.5. Vous trouverez plus d'informations sur la structure de ce fichier dans la section « debian/changelog » de la charte Debian.

Les entrées du fichier changelog peuvent être utilisées pour fermer des rapports de bogue au moment où le paquet est installé dans l'archive. Voir la section Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4.

Par convention, l'entrée changelog d'un paquet contenant une nouvelle version amont ressemble à :

       * new upstream version

Quelques outils peuvent vous aider à créer des entrées et à finaliser le fichier changelog pour une livraison — voir les sections devscripts, Section A.6.1 et dpkg-dev-el, Section A.6.6.

Voir aussi Les meilleures pratiques pour le fichier debian/changelog, Section 6.3.


5.3 Tester le paquet

Avant d'envoyer votre paquet, vous devriez faire quelques tests de base. Vous devriez au moins faire les tests suivants (il vous faut une ancienne version du paquet) :


5.4 Disposition du paquet source

Il existe deux types de paquets source Debian :

Pour les paquets natifs, le paquet source inclut un fichier de contrôle source Debian (.dsc) et l'archive source (.tar.gz). Un paquet source d'un paquet non natif inclut un fichier de contrôle source Debian, l'archive source d'origine (.orig.tar.gz) et les correctifs Debian (.diff.gz).

Le caractère natif d'un paquet est déterminé lorsqu'il est construit par dpkg-buildpackage(1). Le reste de cette section ne se rapporte qu'aux 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 téléchargé et mentionné dans le fichier .changes. Par la suite, ce fichier tar sera utilisé pour générer les fichiers diff et .dsc et il ne sera pas nécessaire de le télécharger à nouveau.

Par défaut, dpkg-genchanges et dpkg-buildpackage incluront le fichier tar amont si et seulement si le numéro de révision du paquet source est 0 ou 1, ce qui indique une nouvelle version amont. 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 originaux, dpkg-source doit, pour construire les fichiers .dsc et diff de la mise à jour, utiliser un fichier tar identique à l'octet près à celui déjà présent dans l'archive.


5.5 Choisir une distribution

Chaque envoi doit spécifier à 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.

Il existe plusieurs valeurs possibles pour ce champ : « stable », « unstable », « testing-proposed-updates » et « experimental ».

En fait, il y a deux autres possibilités : « stable-security » et « testing-security », mais veuillez lire Gérer les bogues de sécurité, Section 5.8.5 pour plus d'informations sur celles-ci.

Il est techniquement possible d'envoyer un paquet dans plusieurs distributions en même temps, mais ceci n'a habituellement aucun sens d'utiliser cette fonctionnalité car les dépendances d'un paquet peuvent varier selon les distributions. En particulier, il est absurde de combiner la distribution experimental avec tout autre chose.


5.5.1 Cas spécial  mise à jour d'un paquet de la distribution stable

Livrer un paquet pour la distribution stable signifie que le paquet sera dirigé vers le répertoire stable-proposed-updates des archives Debian pour y être testé avant d'être effectivement inclus dans stable.

Une livraison pour la distribution stable requiert des soins supplémentaires. Un paquet de cette distribution ne devrait être mis à jour que dans les cas suivants :

Par le passé, des envois vers stable étaient également utilisés pour corriger les problèmes de sécurité. Cependant, cette pratique est dépréciée car les envois utilisés pour les avis de sécurité Debian[20] sont automatiquement copiés dans l'archive proposed-updates appropriée quand l'avis est publié. Reportez-vous à Gérer les bogues de sécurité, Section 5.8.5 pour des informations plus détaillées sur la gestion des problèmes de sécurité.

Il est fortement déconseillé de changer quoi que ce soit si ce n'est pas important car même une modification triviale peut provoquer un bogue.

Les paquets livrés pour stable doivent être compilés avec la distribution stable pour que leurs dépendances se limitent aux bibliothèques (et autres paquets) disponibles dans stable ; un paquet livré pour la distribution stable qui dépend d'une bibliothèque qui n'est disponible que dans unstable sera rejeté. Modifier les dépendances d'autres paquets (en manipulant le champ Provides ou les fichiers shlibs) et, peut-être, rendre ces paquets ininstallables, est fortement déconseillé.

L'équipe responsable de la distribution[21] (joignable à l'adresse debian-release@lists.debian.org) évaluera régulièrement le contenu de stable-proposed-updates et décidera si votre paquet peut être inclus dans la distribution stable. Soyez précis (et, si nécessaire, prolixe) quand vous décrivez, dans le fichier changelog, vos changements pour une livraison vers stable, sinon le paquet ne sera pas pris en considération.


5.5.2 Cas spécial : Mise à jour d'un paquet de la distribution testing-proposed-updates

La distribution testing est peuplée avec des paquets en provenance d'unstable selon des règles expliquées dans Informations complémentaires sur la distribution « testing », Section 4.6.4.2. Cependant, le responsable de distribution peut stopper les scripts de testing quand il veut geler la distribution. Dans ce cas, vous pouvez envoyer vos paquets vers testing-proposed-updates pour fournir des paquets corrigés durant le gel.

Souvenez-vous que les paquets envoyés là ne sont pas traités automatiquement, ils doivent passer entre les mains du responsable de distribution. Vous devez donc avoir une bonne raison pour les y envoyer. Pour savoir ce que représente une bonne raison aux yeux du responsable de distribution, vous devriez lire les instructions données qu'il envoie régulièrement sur debian-devel-announce@lists.debian.org.

Vous ne devriez pas envoyer un 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 dans unstable), vous pouvez l'utiliser, mais il est recommandé de demander l'autorisation du responsable de distribution auparavant.


5.6 Mettre à jour un paquet


5.6.1 Installer un paquet sur ftp-master

Pour installer un paquet, vous avez besoin d'un compte sur ftp-master.debian.org, ce que vous devriez déjà avoir en tant que développeur Debian. Si vous utilisez scp ou rsync pour télécharger vos paquets, placez-les dans /org/ftp.debian.org/incoming/. Si vous utilisez un FTP anonyme, placez-les dans /pub/UploadQueue/.

Si vous désirez utiliser la fonctionnalité de délai décrite dans Incoming différé, Section 4.8.1, vous devez effectuer votre envoi vers ftp-master. Il s'agit de la seule destination d'envoi supportant l'incoming différé.

Attention, il est préférable de transférer le fichier changes en dernier. Dans le cas contraire, votre livraison pourrait être rejetée car l'outil de maintenance de l'archive pourrait lire le fichier changes et constater que les fichiers ne sont pas tous présents. Si vous ne voulez pas vous embêter avec l'ordre de transfert des fichiers, vous pouvez tout simplement copier vos fichiers dans un répertoire temporaire de ftp-master et les déplacer ensuite vers /org/ftp.debian.org/incoming/.

Note : ne téléchargez pas sur ftp-master de paquets concernant la cryptographie qui appartiendraient à contrib ou non-free. Ces logiciels doivent aller sur non-us (voir Installer un paquet sur non-US, Section 5.6.2). De plus, les paquets contenant un logiciel protégé par des brevets américains ne peuvent pas être envoyés sur ftp-master ; selon le cas, ils peuvent peut-être pourtant être envoyés vers non-US/non-free (le paquet est dans non-free à cause de problèmes de distribution et non pas à cause de la licence du logiciel). Quand vous ne pouvez télécharger sur ftp-master, vous ne pouvez pas non plus télécharger sur chiark ou erlangen. Si vous ne savez pas si votre paquet est protégé par un brevet ou s'il est soumis aux lois de contrôle des exportations américaines, posez la question sur la liste debian-devel@lists.debian.org.

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

Après avoir téléchargé votre paquet, vous pouvez vérifier ce qu'en fera le logiciel de maintenance de l'archive en exécutant dinstall sur votre fichier .changes :

     dinstall -n foo.changes

Notez que dput peut le faire automatiquement pour vous.


5.6.2 Installer un paquet sur non-US

Comme nous l'avons dit un peu plus haut, les programmes soumis au contrôle des exportations américaines ne doivent pas être installés sur ftp-master. Installez le paquet sur non-us.debian.org dans le répertoire /org/non-us.debian.org/incoming/ (dupload, Section A.5.1 et dput, Section A.5.2 avec les options adéquates peuvent tous deux être utilisés pour cela). Par défaut, vous pouvez utiliser le même login/mot de passe que pour ftp-master. Si vous utilisez une connexion FTP anonyme pour le téléchargement, placez vos fichiers dans le répertoire /pub/UploadQueue/.

Tout comme sur ftp-master, vous pouvez vérifier votre téléchargement avec :

     dinstall -n foo.changes

Attention, les personnes résidant aux États-Unis et les citoyens américains sont soumis à des restrictions sur l'exportation des logiciels de cryptographie. Au moment où j'écris, les citoyens américains peuvent exporter quelques logiciels de cryptographie soumis à une obligation de déclaration auprès du département du commerce américain. Toutefois, cette restriction a été abandonnée pour des logiciels qui sont déjà disponibles en dehors des États-Unis. En conséquence, tout logiciel de cryptographie de la section main de l'archive Debian qui ne dépend d'aucun paquet d'une autre section — il ne doit pas dépendre de non-US/main — peut être téléchargé sur ftp-master ou l'une de ses files d'attente décrites plus haut.

La charte Debian n'empêche pas les résidents et citoyens américains de livrer des paquets sur non-US mais ils devront être vigilants en le faisant. Nous recommandons aux responsables concernés de prendre toutes les précautions nécessaires, y compris la consultation d'un juriste, pour s'assurer qu'ils n'enfreignent pas une loi américaine en livrant un paquet sur non-US.

Pour les paquets des sections non-US/main et non-US/contrib, les responsables devraient au moins suivre la procédure décrite par le gouvernement américain. Les responsables de paquets non-US/non-free devront en plus consulter les règles de déclaration d'exportation pour les logiciels commerciaux.

Cette section a pour seul but d'informer, elle n'a pas valeur de conseil juridique. Une fois encore, nous recommandons aux résidents et citoyens américains de consulter un juriste avant de livrer un paquet sur non-US.


5.6.3 Installer un paquet via chiark

Si votre connexion vers ftp-master est lente, vous avez plusieurs possibilités. L'une d'elles consiste à télécharger vos fichiers dans Incoming en passant par le serveur chiark en Europe. Pour les détails, consultez ftp://ftp.chiark.greenend.org.uk/pub/debian/private/project/README.how-to-upload.

Attention, ne téléchargez pas de paquet contenant un logiciel soumis aux lois de contrôle des exportations américaines sur chiark. Les paquets téléchargés sur ce serveur sont redirigés vers ftp-master, les indications de la section Installer un paquet sur ftp-master, Section 5.6.1 sont applicables ici aussi.

Le programme dupload est capable de télécharger sur chiark ; consultez la documentation de ce programme pour en savoir plus.


5.6.4 Installer un paquet via erlangen

Vous pouvez aussi accéder à un serveur situé en Allemagne : il vous suffit d'ouvrir une connexion anonyme sur ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue/.

Le téléchargement fait sur ce serveur doit être aussi complet que s'il était fait dans le répertoire Incoming sur ftp-master : il doit comporter le fichier .changes et tous les fichiers mentionnés dans ce dernier. Le serveur vérifie que le fichier .changes est bien signé avec la clé PGP d'un développeur Debian pour éviter que des faux paquets n'atteignent ftp-master. Vérifiez bien que le champ Maintainer du fichier .changes contient votre adresse électronique. De même que sur ftp-master, cette adresse est ensuite utilisée pour toutes les réponses.

Il n'est pas nécessaire de déplacer votre fichier dans un autre répertoire après le téléchargement, contrairement au serveur chiark. Vous devriez ensuite recevoir un courrier du serveur expliquant ce qu'il a fait de votre paquet. Normalement, il devrait avoir été déplacé vers ftp-master ; vous serez informé par le même biais si une erreur s'est produite au cours du processus.

Attention, ne téléchargez pas de paquet contenant un logiciel soumis aux lois de contrôle des exportations américaines sur erlangen. Les paquets téléchargés sur ce serveur sont redirigés vers ftp-master, les indications de la section Installer un paquet sur ftp-master, Section 5.6.1 sont applicables ici aussi.

Le programme dupload est capable de télécharger sur erlangen ; consultez la documentation de ce programme pour en savoir plus.


5.6.5 Les autres serveurs

Un autre serveur est disponible aux États-Unis ; c'est un bon point de repli quand il est difficile de joindre ftp-master. Livrez vos paquets à l'adresse ftp://samosa.debian.org/pub/UploadQueue/ comme vous le feriez sur erlangen.

Il existe aussi un serveur au Japon : téléchargez vos paquet par FTP anonyme sur ftp://master.debian.or.jp/pub/Incoming/upload/.


5.6.6 Notification de l'installation d'un nouveau paquet

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 katie. Les mises à jour de paquets sur la distribution unstable sont installées ainsi. Dans les autres cas et notamment dans le cas d'un nouveau paquet, celui-ci sera installé manuellement. Il peut s'écouler jusqu'à un mois entre le téléchargement d'un paquet vers un serveur et son installation effective. Soyez 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 bogues ont été clos. Lisez attentivement ce courrier et vérifiez 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).


5.7 Déterminer la section et la priorité d'un paquet

Les champs Section et Priority du fichier debian/control n'indiquent ni où le paquet sera installé dans l'archive Debian, ni sa priorité. Afin de conserver la cohérence de l'archive, ce sont les administrateurs qui contrôlent ces champs. Les valeurs du fichier debian/control sont juste des indications.

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 de votre paquet diffèrent, vous en serez informé par courrier électronique quand votre paquet sera installé dans l'archive. Vous pourrez corriger votre fichier debian/control avant votre prochain téléchargement ou alors vous pourrez vouloir modifier le fichier override.

Pour modifier la section dans laquelle un paquet est archivé, vous devez d'abord vérifier que fichier debian/control est correct. Ensuite, envoyez un courrier à override-change@debian.org ou un rapport de bogue sur le pseudo-paquet ftp.debian.org demandant la modification de la section ou de la priorité de votre paquet. Exposez bien les raisons qui vous amènent à demander ces changements.

Pour en savoir plus sur les fichiers override, reportez-vous à dpkg-scanpackages(8) et http://www.debian.org/Bugs/Developer#maintincorrect.

Notez également que le terme « section » est utilisé pour la séparation des paquets selon leur licence, e.g main, contrib et non-free. Ceci est décrit dans une autre section, L'archive Debian, Section 4.6.


5.8 Gérer les bogues

Chaque développeur doit être capable de travailler avec le système de suivi des bogues Debian. Il faut savoir comment remplir des rapports de bogue correctement (voir Rapporter des bogues, Section 7.1), comment les mettre à jour et les réordonner et comment les traiter et les fermer.

Les fonctionnalités du système de suivi des bogues qui intéressent les développeurs sont décrites dans la documentation du BTS pour les développeurs. Ceci inclut la fermeture des bogues, l'envoi des messages de suivi, l'assignation des niveaux de gravité et des marques, l'indication que les bogues ont été envoyés au développeur amont et autres problèmes.

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 réouvrir des bogues quand ils ont été prématurément fermés, sont gérées en utilisant le serveur de courrier de contrôle. Toutes les commandes disponibles pour ce serveur sont décrites dans la documentation du serveur de contrôle du BTS.


5.8.1 Superviser les rapports de bogue

Si vous voulez être un bon responsable, consultez régulièrement la page du système de suivi des bogues. Cette page contient tous les rapports de bogue qui concernent vos paquets. Vous pouvez les vérifier avec cette page : http://bugs.debian.org/votre_compte@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 http://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 bogues 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 :

     # Synthèse hebdomadaire des rapports de bogue qui me concernent
     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épondre à des rapports de bogue

Lorsque vous répondez à des rapports de bogue, assurez-vous que toutes vos discussions concernant les bogues sont envoyées au rapporteur du bogue et au bogue lui-même (123@bugs.debian.org par exemple). Si vous rédigez un nouveau courrier et que vous ne vous souvenez plus de l'adresse du rapporteur de bogue, vous pouvez utiliser l'adresse 123-submitter@bugs.debian.org pour contacter le rapporteur et enregistrer votre courrier dans le journal du bogue (ce qui veut dire que vous n'avez pas besoin d'envoyer une copie du courrier à 123@bugs.debian.org).

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

Une fois que vous avez traité un rapport de bogue (i.e. que vous l'avez corrigé), marquez-le comme done (fermez-le) 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 dans Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4.

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 générale des bogues

En tant que responsable de paquet, vous trouverez fréquemment des bogues dans d'autres paquets ou vous aurez des bogues sur vos paquets qui sont en fait des bogues sur d'autres paquets. Les fonctions intéressantes du système de suivi des bogues pour les développeurs 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 paquet est l'une des « obligations civiques » du responsable, reportez-vous à Rapporter des bogues, Section 7.1 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 gérer un rapport de bogue :

  1. Décider si le rapport correspond à un bogue réel ou non. Parfois, les utilisateurs exécutent simplement un programme de la 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 présenté à l'auteur amont.

    Si le rapporteur de bogue n'est pas d'accord avec votre décision de fermeture du bogue, il peut le ré-ouvrir 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 avec wontfix pour indiquer aux personnes que le bogue existe, mais ne sera pas corrigé. Si cette situation n'est pas acceptable, vous (ou le rapporteur) pouvez vouloir demander une décision par le comité technique en réattribuant le bogue à tech-ctte (vous pouvez utiliser la commande clone du BTS si vous désirez garder le bogue comme rapporté sur votre paquet). Avant de faire cela, veuillez lire la procédure recommandée.

  1. Si le bogue est réel, mais est causé par un autre paquet, réattribuez simplement le bogue à l'autre paquet. Si vous ne savez pas à quel paquet il doit être réattribué, vous pouvez demander de l'aide sur debian-devel@lists.debian.org ou vous pouvez le réattribuer à debian-policy pour les laisser décider dans quel paquet est située l'erreur.

    Parfois, vous devez également ajuster la gravité du bogue pour qu'elle corresponde à notre 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 d'ordre cosmétique.

  1. 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é.
  1. 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é, vous le fermez simplement, sinon vous devez le rappeler à l'auteur. Si vous avez les compétences nécessaires, vous pouvez préparer un correctif pour corriger 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).
  1. Si vous avez corrigé un bogue sur votre copie locale ou si un correctif a été inclus dans le référentiel CVS, vous pouvez marquer le bogue avec pending (en attente) pour informer que le bogue est corrigé et qu'il sera fermé lors du prochain envoi (ajoutez le closes: dans le changelog). C'est particulièrement utile si plusieurs développeurs travaillent sur le même paquet.
  1. Une fois que le paquet corrigé est disponible dans la distribution unstable, vous pouvez fermer le bogue. Ceci peut être fait automatiquement, pour cela, reportez-vous à Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4.

5.8.4 Quand les rapports de bogue sont-ils fermés par une mise à jour ?

Au fur et à mesure que les bogues et problèmes sont corrigés dans vos paquets, il est de votre responsabilité de fermer le rapport de bogue associé. Cependant, vous ne devez pas le fermer avant que le paquet n'ait été accepté dans l'archive Debian. C'est pourquoi, vous pouvez et vous devez clore le rapport 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.

Cependant, il est possible d'éviter d'avoir à fermer manuellement les bogues après l'envoi — indiquez simplement les bogues corrigés dans le fichier changelog en suivant une syntaxe précise. 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.

Techniquement parlant, l'expression rationnelle Perl suivante décrit comment les lignes de changelogs de fermeture de bogues sont identifiées :

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

Nous préfèrons la syntaxe closes: #XXX, car c'est l'entrée la plus concise et la plus facile à intégrer dans le texte du fichier changelog.

Si vous entrez un numéro de bogue incorrect ou si vous oubliez un bogue dans les entrées du fichier changelog, n'hésitez pas à annuler tout dommage que l'erreur a entraîné. Pour réouvrir un bogue fermé par erreur, envoyez une commande reopen XXX à l'adresse de contrôle du système de suivi des bogues, control@bugs.debian.org. Pour fermer tous les bogues restants qui ont été corrigés par votre envoi, envoyez le fichier .changes à XXX-done@bugs.debian.orgXXX est le numéro du bogue.

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 pas pas fermer des bogues dans une entrée de changelog d'une version si les changements dans cette version n'ont rien à voir avec le bogue.

Pour une information plus générale sur ce qu'il faut mettre dans les entrées de changelog, veuillez vous reporter aux Les meilleures pratiques pour le fichier debian/changelog, Section 6.3.


5.8.5 Gérer les bogues de sécurité

À cause de leur nature sensible, les bogues liés à la sécurité doivent être soigneusement traités. L'équipe de sécurité de Debian est là pour coordonner cette activité, pour faire le suivi des problèmes de sécurité en cours, pour aider les responsables ayant des problèmes de sécurité ou pour les corriger elle-même, pour envoyer les annonces de sécurité et pour maintenir le site security.debian.org.

Si vous prenez connaissance d'un bogue lié à un problème de sécurité sur un paquet Debian, que vous soyez ou non le responsable, regroupez les informations pertinentes sur le problème et contactez rapidement l'équipe de sécurité à team@security.debian.org dès que possible. Les informations utiles incluent, par exemple :


5.8.5.1 Confidentialité

À la différence de la plupart des autres activités au sein de Debian, les informations sur les problèmes de sécurité doivent parfois être gardées en privé pour un certain temps. Ceci permet les distributeurs de logiciels de coordonner leur dévoilement afin de minimiser l'exposition de leurs utilisateurs. Cette décision dépend de la nature du problème et de l'existence d'une solution correspondante et également s'il s'agit d'un fait connu publiquement.

Il existe plusieurs façons pour un développeur de prendre connaissance d'un problème de sécurité :

Dans les deux premiers cas, l'information est publique et il est important d'avoir une solution le plus vite possible. Dans le dernier cas, cependant, ce n'est peut-être pas une information publique. Dans ce cas, il existe quelques options possibles pour traiter le problème :

Dans tous les cas, si la personne qui indique le problème demande à ce que l'information ne soit pas diffusée, cela devrait être respecté avec l'évidente exception d'informer l'équipe de sécurité pour qu'une correction puisse être effectuée pour la version stable de Debian. Quand vous envoyez des informations confidentielles à l'équipe de sécurité, assurez-vous de bien mentionner ce fait.

Veuillez noter que si le secret est nécessaire, vous ne pourrez pas envoyer un correctif vers unstable (ou ailleurs) puisque les informations de changelog et de diff sont publiques pour unstable.

Il existe deux raisons pour diffuser l'information même si le secret est demandé : le problème est connu depuis un certain temps ou le problème ou son exploitation est devenu public.


5.8.5.2 Annonces de sécurité

Les annonces de sécurité ne sont émises que pour la distribution actuelle diffusée stable, PAS pour testing ou unstable. Quand elle est diffusée, l'annonce est envoyée à la liste de diffusion debian-security-announce@lists.debian.org et elle est postée sur la page de sécurité. Les annonces de sécurité sont écrites et postées par les membres de l'équipe de sécurité. Cependant, ils ne verront aucun inconvénient à ce qu'un responsable leur apporte des informations ou écrive une partie du texte. Les informations qui devraient être présentes dans une annonce incluent :


5.8.5.3 Préparer les paquets pour corriger des problèmes de sécurité

Une façon d'aider l'équipe de sécurité dans ses travaux est de leur fournir des paquets corrigés convenables pour une annonce de sécurité pour la version stable de Debian

Quand une mise à jour de la version stable est effectuée, un soin particulier doit être apporté pour éviter de modifier le comportement du système ou d'introduire de nouveaux bogues. Pour cela, faites le moins de changements possibles pour corriger le bogue. Les utilisateurs et les administrateurs s'attendent à un comportement identique dans une version lorsque celle-ci est diffusée, donc tout changement qui est fait est susceptible de casser le système de quelqu'un. Ceci est spécialement vrai pour les bibliothèques : assurez-vous ne de jamais changer l'API ou l'ABI, quelque minimal que soit le changement.

Cela veut dire que passer à une version amont supérieure n'est pas une bonne solution. À la place, les changements pertinents devraient être rétroportés vers la version présente dans la distribution stable de Debian. Habituellement, les développeurs amont veulent bien aider. Sinon, l'équipe de sécurité Debian peut le faire.

Dans certains cas, il n'est pas possible de rétroporter un correctif de sécurité, par exemple, quand de grandes quantités de code source doivent être modifiées ou réécrites. Si cela se produit, il peut être nécessaire de passer à une nouvelle version amont. Cependant, ceci n'est fait que dans des situations extrêmes et vous devez toujours coordonner cela avec l'équipe de sécurité au préalable.

Il existe une autre règle de conduite liée à cela : testez toujours vos changements. Si une exploitation du problème existe, essayez-la et vérifiez qu'elle réussit sur le paquet non corrigé et échoue sur le paquet corrigé. Testez aussi les autres actions normales car parfois un correctif de sécurité peut casser de manière subtile des fonctionnalités qui ne semblent pas liées.

Examinez et testez autant que possible vos changements. Vérifiez les différences avec la version précédente de manière répétée (interdiff du paquet patchutils et debdiff du paquet devscripts sont des outils utiles pour cela, voir debdiff, Section A.2.3).

Lors de la construction de la correction, gardez les points suivants à l'esprit :


5.8.5.4 Mettre à jour le paquet corrigé

Vous NE devez PAS envoyer un paquet dans la file d'attente des envois de sécurité (oldstable-security, stable-security, etc.) sans l'accord préalable de l'équipe de sécurité. Si le paquet ne remplit pas exactement les exigences de l'équipe, il causera beaucoup de problèmes, ainsi que des délais dans la gestion de l'envoi indésirable.

Vous NE devez PAS envoyer votre correction dans proposed-updates sans vous coordonner avec l'équipe de sécurité. Les paquets seront copiés de security.debian.org dans le répertoire proposed-updates automatiquement. Si un paquet avec le même numéro de version ou un numéro plus grand est déjà installé dans l'archive, la mise à jour de sécurité sera rejetée par le système d'archive. Ainsi, la distribution stable se retrouvera à la place sans la mise à jour de sécurité de ce paquet.

Une fois que vous avez créé et testé le nouveau paquet et qu'il a été approuvé par l'équipe de sécurité, il doit être envoyé pour être installé dans les archives. Pour les envois de sécurité, l'adresse d'envoi est ftp://security.debian.org/pub/SecurityUploadQueue/.

Une fois que l'envoi vers la file d'attente de sécurité a été accepté, le paquet sera automatiquement recompilé pour toutes les architectures et stocké pour vérification par l'équipe de sécurité.

Les envois en attente d'acceptation ou de vérification ne sont accessibles que par l'équipe de sécurité. C'est nécessaire car il pourrait y avoir des correctifs pour des problèmes de sécurité qui ne peuvent pas encore être diffusés.

Si une personne de l'équipe de sécurité accepte un paquet, il sera installé sur security.debian.org ainsi que dans le répertoire distribution-proposed-updates qui convient sur ftp-master ou dans l'archive non-US.


5.9 Déplacer, effacer, changer le nom, adopter et abandonner des paquets

Certaines manipulations de l'archive ne sont pas possibles avec le processus de mise à jour automatisé. Elles sont appliquées manuellement par les développeurs. Ce chapitre décrit ce qu'il faut faire dans ces situations.


5.9.1 Déplacer des paquets

Il se peut qu'un paquet puisse changer de section. Une nouvelle version d'un paquet de la section non-free pourrait, par exemple, être distribuée sous licence GNU GPL ; dans ce cas, le paquet doit être déplacé dans la section main ou contrib[22].

Si vous avez besoin de modifier la section de l'un de vos paquets, modifiez les informations de contrôle du paquet pour le placer dans la section désirée et téléchargez à nouveau votre paquet dans l'archive. Reportez-vous à la charte Debian pour en savoir plus. Si votre nouvelle section est valide, il sera déplacé automatiquement. Si ce n'est pas le cas, contactez les responsables ftp pour comprendre ce qui s'est passé.

Si vous avez besoin de modifier la sous-section de l'un de vos paquets (devel ou admin par exemple), la procédure est légèrement différente. Modifiez la sous-section dans le fichier de contrôle de votre paquet et téléchargez-le. Il vous faudra ensuite demander la modification du fichier override comme décrit dans la section Déterminer la section et la priorité d'un paquet, Section 5.7.


5.9.2 Supprimer des paquets

Si, pour une raison ou une autre, vous avez besoin de supprimer un paquet de l'archive (disons qu'il s'agit d'une vieille bibliothèque devenue inutile, que l'on conservait pour des raisons de compatibilité), il vous faudra envoyer un rapport de bogue concernant le pseudo-paquet ftp.debian.org et demander sa suppression. N'oubliez pas de préciser de quelle distribution le paquet doit être supprimé. Normalement, vous ne devriez avoir à supprimer que des paquets d'unstable ou de experimental. Les paquets de testing ne sont pas supprimés directement. Ils sont plutôt enlevés automatiquement après que le paquet a été supprimé d'unstable et si aucun paquet de testing n'en dépend.

Vous devez également détailler les raisons justifiant cette demande. Ceci a pour but d'éviter les suppressions non désirées et de garder une trace de la raison pour laquelle un paquet a été supprimé. Par exemple, vous pouvez fournir le nom du paquet qui remplace celui à supprimer.

Vous ne pouvez demander la suppression d'un paquet que si vous en êtes le responsable. Si vous voulez supprimer un autre paquet, vous devez obtenir l'accord de son dernier responsable.

Si vous ne savez pas bien si un paquet peut être supprimé, demandez l'avis des autres développeurs sur la liste debian-devel@lists.debian.org. Le programme apt-cache du paquet apt pourra aussi vous être utile. La commande apt-cache showpkg paquet vous indiquera, entre autres, les paquets qui dépendent de paquet.

Une fois que le paquet a été supprimé, les bogues du paquet doivent être gérés. Soit ils sont réattribués à un autre paquet dans le cas où le code actuel a évolué en un autre paquet (par exemple, libfoo12 a été supprimé parce que libfoo13 le remplace) ou ils sont fermés si le logiciel ne fait simplement plus partie de Debian.


5.9.2.1 Supprimer des paquets dans Incoming

Par le passé, il était possible de supprimer un paquet de Incoming. Cependant, ce n'est plus possible depuis la mise en place du nouveau système de file d'attente. Il vous faudra télécharger une nouvelle version de votre paquet avec un numéro de version postérieur à celui que vous voulez remplacer. Les deux versions seront installées dans l'archive mais seule la plus récente sera accessible dans unstable car la précédente sera immédiatement remplacée par la nouvelle. Toutefois, si vous testez correctement vos paquets, le besoin d'en remplacer un ne devrait pas être trop fréquent.


5.9.3 Remplacer un paquet ou changer son nom

Il peut vous arriver de vous tromper en nommant un paquet et de vouloir changer son nom. Dans ce cas, vous devrez intervenir en deux étapes. D'abord, modifiez votre fichier debian/control pour que votre nouveau paquet remplace et entre en conflit avec l'ancien paquet que vous voulez remplacer (reportez-vous à la charte Debian pour les détails). Une fois que votre paquet est installé dans l'archive, faites un rapport de bogue concernant le pseudo-paquet ftp.debian.org et demandez la suppression du paquet mal nommé. N'oubliez pas de réattribuer correctement les bogues du paquet en même temps.

D'autres fois, vous pouvez commettre une erreur en construisant le paquet et vous désirez le remplacer. La seule façon de faire est d'incrémenter le numéro de version et d'envoyer une nouvelle version. L'ancienne version expirera de la façon habituelle. Notez que ceci s'applique à chaque partie de votre paquet, y compris les sources : si vous désirez remplacer l'archive source amont de votre paquet, vous devez l'envoyer avec un numéro de version différent. Une possibilité simple est de remplacer foo_1.00.orig.tar.gz par foo_1.00+0.orig.tar.gz. Cette restriction donne à chaque fichier du site ftp un nom unique, ce qui aide à garantir la consistance dans le réseau des miroirs.


5.9.4 Abandonner un paquet

Si vous ne pouvez plus maintenir un paquet, vous devez en informer les autres et faire le nécessaire pour qu'il soit marqué abandonné (i.e. orphaned). Vous devriez aussi remplacer votre nom par Debian QA Group <packages@qa.debian.org> dans le champ maintainer du paquet et faire un rapport de bogue sur le pseudo-paquet wnpp. Le titre de votre rapport de bogue devrait être « O[23]: paquetcourte description » pour indiquer que le paquet est abandonné. La gravité du bogue sera normale. Si vous le jugez nécessaire, envoyez une copie à debian-devel@lists.debian.org en mettant cette adresse dans le champ X-Debbugs-CC: de l'en-tête du message. N'utilisez pas le champ CC: car de cette manière le sujet du message ne contiendra pas le numéro du bogue.

Si le paquet est particulièrement important pour la distribution, il vous faudra faire un rapport de bogue sur le pseudo-paquet wnpp, l'intituler « RFA[24]: paquetcourte description » et lui affecter la gravité importante. Envoyez une copie de votre rapport de bogue à la liste debian-devel comme décrit ci-dessus.

Reportez-vous à la page WNPP[25] http://www.debian.org/devel/wnpp/ pour en savoir plus.


5.9.5 Adopter un paquet

Une liste des paquets en attente de nouveau responsable est disponible à la page paquets en souffrance et paquets souhaités. Si vous voulez prendre en charge un paquet de cette liste, reportez-vous à la page mentionnée ci-dessus pour connaître la procédure à suivre.

Prendre un paquet parce qu'il vous semble que celui-ci est négligé n'est pas correct — ce serait un détournement de paquet. Vous pouvez prendre contact avec le responsable actuel et lui demander si vous pouvez prendre en charge ce paquet. Si vous avez le sentiment qu'un responsable est parti sans prévenir depuis un moment, veuillez vous reporter à Gérer les responsables non joignables, Section 7.4).

Généralement, vous ne pouvez pas adopter un paquet sans l'accord du responsable actuel. Même s'il vous ignore, ce n'est pas une raison pour le faire. Les plaintes à propos des responsables devraient être portées sur la liste de diffusion des développeurs. Si la discussion ne se termine pas par une conclusion positive et que le problème est de nature technique, considérez de porter le cas à l'attention du comité technique (voir la page web du comité technique pour plus d'information).

Si vous reprenez un vieux paquet, vous voudrez sûrement que le système de suivi des bogues indique que vous êtes le responsable du paquet. Cela se produira automatiquement une fois que vous aurez installé une nouvelle version du paquet dans l'archive avec le champ Maintainer à jour. Cela peut prendre quelques heures après le téléchargement. Si vous pensez ne pas avoir de mise à jour à faire pour un moment, vous pouvez utiliser le Système de suivi des paquets, Section 4.10 pour recevoir les rapports de bogue. Cependant, assurez-vous que cela ne pose aucun problème à l'ancien responsable de continuer à recevoir les bogues durant ce temps.


5.10 Le portage

Debian accepte un nombre croissant d'architectures. Même si vous n'êtes pas un porteur et même si vous n'utilisez qu'une architecture, il est de votre responsabilité de développeur d'être attentif aux questions de portabilité. C'est pourquoi il est important que vous lisiez ce chapitre même si vous n'êtes pas un porteur.

Porter un paquet consiste à faire un paquet binaire pour une architecture différente de celle du paquet binaire fait par le responsable du paquet. C'est une activité remarquable et essentielle. En fait, les porteurs sont à l'origine de la plupart des compilations de paquets Debian. Pour un paquet binaire i386, par exemple, il faut compter une recompilation pour chaque autre architecture, soit un total de 12 recompilations.


5.10.1 Être gentil 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 commises régulièrement par les responsables Debian — problèmes courants qui bloquent souvent les porteurs et compliquent inutilement leur travail.

Ici, le mot d'ordre est de répondre rapidement aux rapports de bogues et remarques soulevées par les porteurs. Traitez-les courtoisement, comme s'ils étaient co-responsables de vos paquets (ce qu'ils sont d'une certaine manière). Merci pour votre indulgence envers des rapports de bogue succincts ou peu clairs ; faites de votre mieux pour éliminer le problème.

Les problèmes les plus couramment rencontrés par les porteurs sont causés par des erreurs de mise en paquet dans le paquet source. Voici un pense-bête pour les choses auxquelles vous devez être attentif :

  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, Section A.4.2). Dans cet environnement chrooté, il faudra installer le paquet build-essential et tous les paquets mentionnés dans les champs Build-Depends et Build-Depends-Indep. Ensuite, vous essayerez de fabriquer votre paquet dans cet environnement. Ces étapes peuvent être automatisées en utilisant le programme pbuilder qui est fourni par le paquet de même nom (voir pbuilder, Section A.4.3).

    Si vous n'arrivez pas à installer un environnement chrooté, dpkg-depcheck pourra peut-être vous aider (voir dpkg-depcheck, Section A.6.7).

    Consultez la charte Debian pour en savoir plus sur les dépendances de fabrication.

  1. Ne choisissez pas d'autres valeurs que all ou any pour le champ architecture sans avoir de bonnes raisons pour le faire. Trop souvent, les développeurs ne respectent pas les instructions de la charte Debian. Choisir la valeur « i386 » est la plupart du temps incorrect.
  1. Vérifiez que votre paquet source est bon. Faites dpkg-source -x paquet.dsc pour vous assurer que le paquet se décompresse correctement. En utilisant le résultat de ce test, construisez votre paquet binaire à l'aide de la commande dpkg-buildpackage.
  1. Vérifiez que les fichiers debian/files et debian/substvars ne sont pas dans votre paquet source. Ils doivent être effacés par la cible clean de debian/rules.
  1. Assurez-vous que vous ne vous appuyez pas sur des éléments de configuration ou des logiciels installés ou modifiés localement. Par exemple, vous ne devriez jamais appeler des programmes du répertoire /usr/local/bin ou de répertoires équivalents. Essayez de ne pas vous appuyer sur des logiciels configurés de manière spéciale. Essayez de construire votre paquet sur une autre machine, même s'il s'agit de la même architecture.
  1. Ne vous appuyez pas sur une installation préexistante de votre paquet (un sous-cas de la remarque précédente).
  1. Si possible, ne vous appuyez pas sur une particularité présente dans un compilateur précis ou dans une certaine version d'un compilateur. Si vous ne pouvez pas faire autrement, assurez-vous que les dépendances de fabrication reflètent bien cette restriction. Dans ce cas, vous cherchez sûrement les problèmes car quelques architectures pourraient choisir un compilateur différent.
  1. Vérifiez que votre 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.

5.10.2 Instructions pour les mises à jour des porteurs

Si le paquet se construit tel quel sur l'architecture que vous visez, vous avez de la chance et votre travail est facile. Cette section s'applique dans ce cas ; elle décrit comment construire et installer correctement votre paquet binaire dans l'archive Debian. Si vous devez modifier le paquet pour le rendre compilable sur votre architecture cible vous devez faire une mise à jour des sources, consultez la section Comment faire une mise à jour indépendante source ?, Section 5.11.4.

Pour un envoi de portage, ne faites pas de changement dans les sources. Vous n'avez pas besoin de modifier les fichiers du paquet source (cela inclut le fichier debian/changelog).

La manière d'invoquer dpkg-buildpackage est la suivante : dpkg-buildpackage -B -madresse-porteur. Bien sûr, remplacez adresse-porteur par votre adresse électronique. Cette commande construira les parties du paquet qui dépendent de l'architecture, en utilisant la cible binary-arch de debian/rules.


5.10.2.1 Mises à jour indépendantes binaires ou recompilations

Parfois, l'envoi du portage initial pose problème car l'environnement dans lequel le paquet a été construit n'était pas bon (bibliothèques plus à jour ou obsolètes, mauvais compilateur, etc.). Il se peut que vous ayez à le recompiler dans un environnement mis à jour. Cependant, dans ce cas, vous devez changer le numéro de version pour que les mauvais anciens paquets soient remplacés dans l'archive Debian (katie refuse d'installer de nouveaux paquets s'ils n'ont pas un numéro de version supérieur à celui actuellement disponible). Malgré les modifications nécessaires du changelog, ce type de mise à jour reste une mise à jour indépendante binaire — il n'est pas nécessaire de reconsidérer le statut des paquets binaires des autres architectures pour les marquer périmés ou à recompiler.

Ces recompilations nécessitent des numéros de version « magiques » pour que le système de maintenance de l'archive comprennent 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é).

Cette « magie » associée à une mise à jour par recompilation est déclenchée en utilisant un troisième nombre dans la partie debian du numéro de version. Si, par exemple, la dernière version du paquet que vous recompilez était « 2.9-3 », votre mise à jour portera le numéro « 2.9-3.0.1 ». Si cette version était « 3.4-2.1 » votre mise à jour portera le numéro « 3.4-2.1.1 ».


5.10.2.2 Quand faire une mise à jour indépendante source pour un portage ?

Les porteurs qui font des mises à jour indépendantes sources suivent généralement les instructions de la section Mise à jour indépendante, Section 5.11 tout comme les non-porteurs. Les délais d'attente sont cependant plus courts car les porteurs doivent manipuler un grand nombre de paquets. À nouveau, la situation diffère selon la distribution visée.

Si vous êtes porteur et faites une mise à jour 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 système de suivi des bogues et le moment où vous pouvez faire une mise à jour indépendante (NMU) — est de sept jours. Ce délai peut être raccourci si le problème est crucial et met l'effort de portage en difficulté : c'est à la discrétion de l'équipe de portage. (Souvenez-vous, il ne s'agit pas d'un règlement, mais de recommandations communément acceptées).

Deuxième différence, les porteurs qui font des mises à jour indépendantes sources doivent choisir une gravité sérieuse (i.e. serious) ou supérieure quand ils envoient leur rapport au système de suivi des bogues. Ceci assure qu'un paquet source unique permet de produire un paquet binaire pour chaque architecture supportée au moment de la sortie de la distribution. Il est très important d'avoir un paquet source et un paquet binaire pour toutes les architectures pour être conforme à plusieurs licences.

Les porteurs doivent éviter d'implémenter des contournements pour des bogues de l'environnement de compilation, du noyau ou de la libc. Quelques fois, ces contournements sont inévitables. Si vous devez faire quelque chose de ce genre, marquez proprement vos modifications avec des #ifdef et documentez votre contournement pour que l'on sache le retirer une fois que le problème aura disparu.

Les porteurs peuvent aussi avoir une adresse où ils publient le résultat de leur travail pendant le délai d'attente. Ainsi, d'autres personnes peuvent bénéficier du travail du porteur même pendant ce délai. Bien sûr, ces adresses n'ont rien d'officiel, alors soyez sur vos gardes si vous les utilisez.


5.10.3 Infrastructure de portage et automatisation

Il existe une infrastructure et plusieurs outils pour faciliter l'automatisation du portage des paquets. Cette section contient un bref aperçu de cette automatisation et du portage de ces outils ; veuillez vous reporter à la documentation des paquets ou les références pour une information complète.


5.10.3.1 Listes de diffusion et pages web

Les pages web contenant l'état de chaque portage peuvent être trouvées à http://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 à http://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.10.3.2 Outils pour les porteurs

Les descriptions de plusieurs outils de portage peuvent être trouvées dans les Outils de portage, Section A.7.


5.10.3.3 buildd

Le système buildd est un système distribué pour la compilation d'une distribution. Il est habituellement utilisé en conjonction avec des automates de compilation ; ce sont des machines « esclaves » qui récupèrent des paquets sources et tentent de les compiler. Il est aussi possible d'interagir par courrier électronique avec ce système. Cette interface est utilisée par les porteurs pour récupérer un paquet source (en général, un paquet qui ne peut être compilé automatiquement) et travailler dessus.

buildd n'est pas disponible sous forme de paquet ; pourtant, la plupart des équipes de porteurs l'utilisent aujourd'hui ou ont prévu de l'utiliser bientôt. L'outil de construction automatisé réel est dans le paquet sbuild, voir la description dans sbuild, Section A.4.4. Le système buildd regroupe également un ensemble de composants très utiles, continuellement utilisés, mais non encore mis en paquet, tels que andrea et wanna-build.

Une partie des informations produites par buildd — utiles pour les porteurs — est disponible sur la toile à l'adresse http://buildd.debian.org/. Ces informations incluent les résultats produits toutes les nuits par andrea (dépendances des sources) et quinn-diff (paquets à recompiler).

Nous sommes très fiers de ce système car il a de nombreux usages potentiels. Des groupes de développeurs indépendants peuvent utiliser ce système pour créer différentes saveurs de Debian — qui peuvent être ou ne pas être intéressantes pour tous (par exemple, une version de Debian compilée avec des vérifications relatives à gcc). Ce système nous permettra aussi de recompiler rapidement toute une distribution.


5.11 Mise à jour indépendante

Dans certaines circonstances, il est nécessaire qu'une personne autre que le responsable d'un paquet fasse une mise à jour de ce paquet. Ce type de mise à jour est désigné en anglais par l'expression non-maintainer upload (NMU). Dans le présent document, nous traduisons librement cette expression par « mise à jour indépendante ».

Ces mises à jour indépendantes de binaires font de temps en temps partie du travail normal des porteurs qui compilent les paquets pour d'autres architectures (voir Le portage, Section 5.10). Un développeur peut aussi faire des mises à jour indépendantes quand il corrige le paquet d'un autre développeur pour éliminer un problème de sécurité ou un bogue bloquant. Cela se produit plus particulièrement en période de gel de la distribution de développement ou quand le responsable officiel du paquet ne peut pas fournir une correction dans un délai raisonnable.

Ce chapitre contient des informations qui vous expliqueront quand et comment faire des mises à jour indépendantes. Une distinction fondamentale doit être faite entre les mises à jour indépendantes sources et les mises à jour indépendantes binaires. Elle est explicitée dans la section suivante.


5.11.1 Terminologie

Deux nouvelles expressions sont introduites dans cette section : « mise à jour indépendante source » et « mise à jour indépendante binaire ». Ces expressions ont une définition précise dans le monde Debian. Elles correspondent toutes deux au même type d'activité ; elles impliquent toutes deux qu'une personne fait une mise à jour d'un paquet alors qu'elle n'est pas officiellement responsable de ce paquet. C'est pourquoi nous qualifions ces mises à jours d'indépendantes[26].

Une mise à jour indépendante source est une livraison de paquet faite par une personne qui n'est pas le responsable officiel de ce paquet avec pour objectif de corriger un bogue dans le paquet. Une mise à jour indépendante source implique toujours une modification des sources du paquet, même s'il ne s'agit que d'un changement dans le fichier debian/changelog. Ce changement peut tout aussi bien concerner la partie amont du source que la partie spécifique à Debian. Une mise à jour indépendante source peut aussi inclure des paquets spécifiques à une architecture tout comme un fichier diff modifié.

Une mise à jour indépendante binaire est constitué par la recompilation et l'archivage d'un paquet pour une architecture donnée. Il s'agit souvent du résultat d'un effort de portage. Une mise à jour indépendante binaire est la livraison d'un paquet compilé (souvent pour une autre architecture) à condition que cette compilation n'ait pas nécessité de modifications des sources. Dans de nombreux cas, les porteurs sont obligés de modifier les sources pour les rendre compilables sur leur architecture cible ; il s'agira alors d'une mise à jour indépendante source et non d'une mise à jour indépendante binaire. Comme vous pouvez le remarquer, nous ne faisons pas de distinction entre les mises à jour indépendantes faites par des porteurs et les autres mises à jour indépendantes.

Les mises à jour indépendantes sources et binaires sont toutes deux couvertes par l'expression « mise à jour indépendante » (NMU[27]). Pourtant, cela conduit souvent à des confusions car beaucoup associent « mise à jour indépendante » et « mise à jour indépendante source ». Il faut donc rester vigilant. Dans ce chapitre, si nous utilisons l'expression « mise à jour indépendante » seule, il s'agit des deux types de livraisons.


5.11.2 Qui peut faire une mise à jour indépendante ?

Seuls les responsables Debian officiels peuvent faire des mises à jour indépendantes. Un responsable officiel est une personne dont la clé est dans le porte-clés Debian. Toute personne est invitée à télécharger les paquets sources pour corriger des bogues ; au lieu de faire des mises à jour indépendantes, ils pourront soumettre les correctifs qui le méritent au système de suivi des bogues. Les responsables apprécient presque toujours les correctifs et les rapports de bogue soignés.


5.11.3 Quand faire une mise à jour indépendante source ?

Les recommandations pour déterminer quand faire une mise à jour indépendante source dépendent de la distribution visée (i.e. stable, unstable ou experimental). Les porteurs, ayant une activité particulière, obéissent à des règles légèrement différentes (voir Quand faire une mise à jour indépendante source pour un portage ?, Section 5.10.2.2).

Quand une bogue de sécurité est détecté, l'équipe de sécurité peut faire une mise à jour indépendante. Veuillez vous reporter à Gérer les bogues de sécurité, Section 5.8.5 pour plus d'informations.

Pendant le cycle de mise au point (release cycle, voir Stable, testing et unstable, Section 4.6.4.1), les livraisons qui corrigent les bogues de gravité sérieuse (i.e. serious) et supérieures sont encouragées et acceptées. Même pendant cette période, vous devriez tenter d'entrer en contact avec le responsable du paquet ; il pourrait bien être sur le point de livrer un paquet corrigé lui aussi. Comme pour n'importe quelle mise à jour indépendante source, les recommandations de la section Comment faire une mise à jour indépendante source ?, Section 5.11.4 doivent être respectées. Des exceptions spéciales sont effectuées pour Les chasses aux bogues, Section 7.2.2.

Envoyer des corrections de bogues vers unstable par une autre personne que le responsable ne devrait être fait qu'en suivant ce protocole :

Parfois, le responsable de version ou un groupe organisé de développeurs peut annoncer une certaine période de temps au cours de laquelle les règles de mise à jour indépendante seront plus souples. Ceci implique habituellement une période plus courte d'attente avant d'envoyer des correctifs et une période de délai plus courte. Il est important de noter que, même au cours de ces « chasses aux bogues », la personne désirant faire la mise à jour indépendante doit remplir des bogues et contacter en premier le développeur, et ensuite seulement passer à l'action.


5.11.4 Comment faire une mise à jour indépendante source ?

Les règles qui suivent s'appliquent aux porteurs tant qu'ils jouent le double rôle de correcteur de bogue et de porteur. Si un porteur doit modifier le paquet source, cette mise à jour est automatiquement une mise à jour indépendante source et est soumise aux règles qui suivent. Si un porteur construit un paquet binaire recompilé, les règles sont différentes (voir Instructions pour les mises à jour des porteurs, Section 5.10.2.

Tout d'abord, il est capital que ces mises à jour indépendantes soient aussi peu intrusives que possible. Ne faites pas de ménage, ne modifiez pas le nom des modules ou des fichiers, ne déplacez pas les répertoires ; plus généralement, ne corrigez pas ce qui n'est pas cassé. Faites un correctif aussi petit que possible. Si certaines choses froissent votre sens de l'esthétique, parlez-en au responsable du paquet, au responsable amont ou soumettez un rapport de bogue. Quoiqu'il en soit, les changements esthétiques ne doivent pas être effectués lors d'une mise à jour indépendante.


5.11.4.1 Numéro de version pour les mises à jour indépendantes sources

Chaque fois que vous modifiez un paquet, le numéro de version de ce paquet doit changer, même pour la plus triviale des modifications. Notre système de gestion de paquets s'appuie sur ces numéros de version.

Si vous faites une mise à jour indépendante (NMU), vous devez ajouter un numéro de version mineur à la partie révision-debian du numéro de version (la partie qui suit le dernier trait d'union). Ce numéro supplémentaire débutera à « 1 ». Prenons pour exemple le paquet « foo » qui porte le numéro de version 1.1-3. Dans l'archive, le fichier de contrôle du paquet source serait foo_1.1-3.dsc. La version amont est « 1.1 » et la révision Debian est « 3 ». La mise à jour indépendante suivante ajouterait le numéro de version mineur « .1 » au numéro de révision Debian ; le nouveau fichier de contrôle du paquet source serait alors foo_1.1-3.1.dsc.

Le numéro de révision mineur est nécessaire pour éviter de prendre un numéro de version au responsable officiel du paquet, ce qui pourrait perturber son travail. Cela a aussi l'avantage de montrer clairement que le paquet n'a pas été livré par le responsable officiel.

S'il n'y a pas de partie révision-debian dans le numéro de version du paquet, il faut en créer une en démarrant à « 0.1 ». S'il est absolument nécessaire qu'une personne qui n'est pas responsable d'un paquet fasse une livraison basée sur une nouvelle version amont, cette personne doit choisir « 0.1 » comme numéro de révision Debian. Le mainteneur du paquet doit, lui, démarrer sa numérotation à « 1 ».


5.11.4.2 Les mises à jour indépendantes sources doivent être mentionnées dans le fichier changelog

Une personne qui fait une mise à jour indépendante source doit ajouter une entrée dans le fichier changelog qui indique les bogues corrigés et qui précise pourquoi cette mise à jour était nécessaire. Cette entrée comportera l'adresse de la personne ayant fait la mise à jour ainsi que la version livrée.

Par convention, dans le cas d'une mise à jour indépendante source (NMU), l'entrée du fichier changelog débute par la ligne :

       * Non-maintainer upload

5.11.4.3 Mise à jour indépendante source et système de suivi des bogues

Un développeur qui n'est pas responsable d'un paquet doit faire aussi peu de modifications que possible et doit toujours envoyer ses modifications au système de suivi des bogues au format diff unifié (diff -u).

Et si vous recompilez simplement le paquet ? Si vous avez simplement besoin de recompiler le paquet pour une seule architecture, vous pouvez faire une NMU binaire seulement comme décrit dans Mises à jour indépendantes binaires ou recompilations, Section 5.10.2.1 qui ne nécessite pas qu'un correctif soit envoyé. Si vous désirez que le paquet soit recompilé pour toutes les architectures, vous devez alors faire une NMU source et vous devrez envoyer un correctif.

Si la mise à jour indépendante source (source NMU) corrige des bogues, ceux-ci doivent être marqués fixed (corrigé) dans le système de suivi des bogues plutôt que clos. Par convention, seul le responsable du paquet et la personne qui a ouvert le rapport de bogue peuvent clore ce rapport. Heureusement, le système d'archivage Debian reconnaît les mises à jours indépendantes et positionne correctement le statut des bogues à fixed si la personne qui fait la mise à jour a listé tous les bogues dans le fichier changelog en utilisant la syntaxe Closes: bug#nnnnn (voir Quand les rapports de bogue sont-ils fermés par une mise à jour ?, Section 5.8.4 pour en savoir plus sur la fermeture de bogue par le fichier changelog). Ce passage au statut fixed assure que chacun sait que le bogue est corrigé par une mise à jour indépendante tout en laissant le rapport de bogue ouvert jusqu'à ce que le responsable du paquet incorpore les modifications de cette mise à jour dans la version officielle du paquet.

Après avoir fait une mise à jour indépendante, il vous faudra aussi ouvrir un nouveau rapport de bogue qui inclura un correctif contenant toutes les modifications que vous avez faites. Sinon, vous pouvez envoyer cette information aux bogues qui sont fixés par votre NMU. Le responsable officiel pourra choisir d'appliquer le correctif, il pourra aussi employer une autre méthode pour régler le problème. Certains bogues sont corrigés dans la version amont, ce qui est une bonne raison pour annuler les modifications d'une mise à jour indépendante. Si le responsable choisit de mettre à jour le paquet plutôt que d'utiliser les correctifs de la mise à jour indépendante, il devra s'assurer que cette nouvelle version corrige effectivement chacun des bogues corrigés dans la mise à jour indépendante.

De plus, le responsable officiel devrait toujours conserver les entrées documentant une mise à jour indépendante dans le fichier changelog.


5.11.4.4 Fabriquer une mise à jour indépendante source

Les paquets faisant l'objet d'une mise à jour indépendante source sont construits comme les autres. Sélectionnez une distribution en utilisant les règles décrites dans la section Choisir une distribution, Section 5.5 en suivant toutes les prescriptions de la section Mettre à jour un paquet, Section 5.6.

Vérifiez que vous n'avez pas modifié la valeur du champ maintainer dans le fichier debian/control. Votre nom, mentionné dans l'entrée du fichier debian/changelog concernant la mise à jour, sera utilisé pour signer le fichier .changes.


5.11.5 Valider une mise à jour indépendante

Si l'un de vos paquets a subi une mise à jour indépendante, vous devez récupérer les changements dans votre copie des sources. Ceci est aisé, vous avez simplement à appliquer le correctif qui vous a été envoyé. Une fois ceci fait, vous devez fermer les bogues qui ont été marqués comme fixés par la mise à jour. Vous pouvez soit les fermer manuellement en envoyant les courriers nécessaires au BTS soit ajouter les closes: #nnnn nécessaires dans l'entrée du changelog de votre prochain envoi.

Dans tous les cas, vous ne devriez pas être perturbé par la NMU. Une NMU n'est pas une attaque personnelle contre le responsable. C'est une preuve que le paquet est important pour quelqu'un et qu'il est désireux de vous aider dans votre travail, vous devriez donc lui être reconnaissant. Vous pouvez également lui demander s'il serait intéressé pour vous aider sur une base plus régulière comme co-responsable ou responsable de secours (cf. Maintenance collective, Section 5.12).


5.12 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 petit. Il est fortement recommandé que les paquets de priorité Standard ou qui font partie de la base aient des co-responsables.

Habituellement, il y a un responsable principal et un ou plusieurs co-responsables. Le responsable principal est celui dont le nom est indiqué dans le champ Maintainer du fichier debian/control. Les co-responsables sont tous les autres responsables.

Dans sa forme la plus simple, ajouter un nouveau co-responsable est assez simple :

La maintenance collaborative peut souvent être facilitée par l'utilisation d'outils sur Alioth (voir Debian *Forge : Alioth, Section 4.12).


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ A ] [ suivant ]

Référence du développeur Debian

Version 3.3.4, 16 juin 2003 (version française 20030718).

L'équipe de la Référence du développeur developers-reference@packages.debian.org
Adam Di Carlo, éditeur
Raphaël Hertzog
Christian Schwarz
Ian Jackson
 

version française par Antoine Hulin
et Frédéric Bothamy (traducteur actuel)
et les membres de la liste debian-l10n-french@lists.debian.org