[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ A ] [ suivant ]
Ce chapitre contient des informations relatives à la création, l'envoi, la maintenance et le portage des 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] : NomDuPaquet
— courte 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 à [email protected]
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).
Lors de la fermeture de bogues de sécurité, incluez les numéros CVS ainsi que « Closes: #nnnnn ». Ceci est utile l'équipe de sécurité pour suivre les failles de sécurité. Si un envoi est effectué pour corriger le bogue avant que l'identifiant de l'alerte soit connu, il est conseillé de modifier l'entrée de changelog historique lors du prochain envoi. Même dans ce cas, veuillez inclure tous les pointeurs disponibles vers les informations de contexte dans l'entrée de changelog d'origine.
Plusieurs raisons nous poussent à demander aux responsables d'annoncer leur intention :
Les responsables ont ainsi la possibilité de puiser dans l'expérience des autres responsables et cela leur permet de savoir si une autre personne travaille déjà dessus.
D'autres personnes qui envisagent de travailler sur le même paquet apprendront ainsi qu'il existe déjà un volontaire, l'effort peut alors être partagé.
Cela permet aux autres responsables de connaître le nouveau paquet mieux que ne le permettent la description d'une ligne et l'habituelle entrée de type changelog Initial release postée sur debian-devel-changes.
C'est une information utile pour les gens qui utilisent la distribution unstable et qui sont nos premiers testeurs. Nous devons leur faciliter la tâche.
Avec ces annonces, les développeurs Debian et toutes les autres personnes intéressées peuvent se faire une meilleure idée des évolutions et des nouveautés du projet.
Veuillez consulter http://ftp-master.debian.org/REJECT-FAQ.html
pour les raisons courantes de rejet des nouveaux paquets.
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.
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) :
Installez le paquet et vérifiez que le logiciel fonctionne. Si le paquet existait déjà dans une version plus ancienne, faites une mise à jour.
Exécutez lintian
sur votre paquet. Vous pouvez exécuter
lintian
comme suit : lintian -v
version-paquet.changes. Ce programme fera une vérification
sur les paquets source et binaire. Si vous ne comprenez pas les messages
retournés par lintian
, essayez l'option -i. Cette
option rendra lintian
beaucoup plus bavard dans sa description du
problème.
En principe, un paquet pour lequel lintian
renvoie des erreurs
(elles commencent par E) ne doit pas être installé dans
l'archive.
Pour en savoir plus sur lintian
, reportez-vous à la section lintian
, Section A.2.1.
Vous pouvez facultativement exécuter debdiff
, Section A.2.3 pour
analyser les modifications depuis une ancienne version si celle-ci existe.
Faites régresser le paquet vers sa version précédente si elle existe —
cela permet de tester les scripts postrm
et prerm
.
Désinstallez le paquet et réinstallez-le.
Copiez le paquet source dans une répertoire différent et tentez de le décompacter et de le reconstruire. Ceci teste si le paquet repose sur des fichiers existants en dehors de ceux du paquet ou s'il repose sur des permissions préservées des fichiers livrés dans le fichier .diff.gz.
Il existe deux types de paquets source Debian :
les paquets appelés natifs 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) où il y a un fichier archive source d'origine accompagné par un autre fichier contenant les correctifs pour 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.
Veuillez noter que, dans des paquets non natifs, les permissions sur des fichiers qui ne sont pas présents dans l'archive .orig.tar.gz ne seront pas préservées car diff ne stocke pas les permissions de fichier dans le correctif.
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 n'est pas possible d'envoyer un paquet dans plusieurs distributions en même temps.
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 :
un problème fonctionnel vraiment critique,
un paquet devenu non installable,
un paquet indisponible pour une architecture.
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 non installables, est fortement déconseillé.
L'équipe responsable de la distribution[21] (joignable à l'adresse [email protected]
)
é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.
Il est fortement conseillé de discuter avec le responsable de la version stable avant de réaliser un envoi dans stable/stable-proposed-updates, pour que le paquet envoyé corresponde aux besoins de la prochaine révision de stable.
Veuillez consulter les informations dans la section sur testing pour des détails.
Pour installer un paquet, vous devez envoyer les fichiers (y compris les
fichiers changes et dsc signés) par ftp anonyme sur
ftp-master.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) Debian.
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.
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
Pour supprimer des paquets, veuillez lire le fichier README dans ce répertoire
FTP et le paquet Debian dcut
,
Section A.5.3.
Note : non-us a été interrompu avec la publication de Sarge.
Les envois différés sont pour le moment réalisés via la file différée
sur gluck. Le répertoire d'envoi est
gluck:~tfheen/DELAYED/[012345678]-day
. 0-day est envoyé
approximativement plusieurs fois par jour vers ftp-master.
Avec une version assez récente de dput, cette section
[tfheen_delayed] method = scp fqdn = gluck.debian.org incoming = ~tfheen
dans votre fichier ~/.dput.cf devrait fonctionner correctement pour réaliser des envois dans la file DELAYED.
Note : Comme la file d'envoi va sur ftp-master, la prescription que l'on trouve dans Installer un paquet sur ftp-master, Section 5.6.1 s'applique également ici.
N'envoyez PAS un paquet vers la file d'envoi de sécurité (oldstable-security, stable-security, etc.) sans avoir obtenu au préalable 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 délais dans la gestion de cet envoi non désiré. Pour plus de détails, consultez la section Gérer les bogues de sécurité, Section 5.8.5.
Les files scp sur ftp-master et security sont pratiquement inutilisables à cause des restrictions de connexion sur ces hôtes.
Les files anonymes sur ftp.uni-erlangen.de et ftp.uk.debian.org sont actuellement arrêtées. Un travail est en cours pour les restaurer.
Les files sur master.debian.org, samosa.debian.org, master.debian.or.jp et ftp.chiark.greenend.org.uk sont arrêtées de façon permanente et ne seront pas restaurées. La file du Japon sera remplacée par une nouvelle file sur hp.debian.or.jp un jour.
À l'heure actuelle, la file en ftp anonyme sur auric.debian.org (le précédent ftp-master) fonctionne, mais elle est déconseillée et sera supprimée à un moment donné.
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).
Notez que si vous envoyez via les files, le logiciel de démon de file vous enverra également une notification par courriel.
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 à [email protected]
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(1)
et http://www.debian.org/Bugs/Developer#maintincorrect
.
Notez que le champ Section décrit à la fois la section et la
sous-section, comme décrit dans Les sections, Section 4.6.1.
Si la section est « main », elle devrait être omise. La liste des
sous-sections autorisées peut être trouvée dans http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections
.
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 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 rouvrir 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
.
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 [email protected]
Remplacez address par votre adresse officielle de responsable Debian.
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 ([email protected]
par exemple).
Si vous rédigez un nouveau courrier et si vous ne vous souvenez plus de
l'adresse du rapporteur de bogue, vous pouvez utiliser l'adresse [email protected]
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 à [email protected]
).
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 à [email protected]
. 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 [email protected]
.Si
vous le faites, le rapporteur n'aura aucune information sur la clôture de son
rapport.
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 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 :
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 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 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
.
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 IRC ou sur [email protected]
.
Veuillez vous assurer que le (ou les) responsable(s) du paquet sur lequel est
réattribué le paquet sait pourquoi vous l'avez ainsi réattribué.
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.
Si le bogue est réel, mais que le problème a déjà été rapporté par quelqu'un d'autre, les deux rapports de bogues pertinents devraient être fusionnés en un seul en utilisant la commande merge (fusion) du BTS. Ainsi, quand le bogue sera corrigé, tous les créateurs de rapport de bogue en seront informés (notez, cependant, que les courriels envoyés à l'un des créateurs de rapport de bogue ne seront pas automatiquement envoyés aux autres créateurs de rapport de bogue). Pour plus de détails sur les technicités de la commande de fusion et sa voisine, la commande unmerge (séparation), veuillez consulter la documentation du serveur de contrôle du BTS.
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é.
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
[email protected]
ou [email protected]
.
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).
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.
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.
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 vous devez 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 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
.
À moins que cela soit spécifié différemment par l'option -v de
dpkg-buildpackage
, seuls les bogues fermés dans l'entrée de
changelog la plus récente sont fermés (fondamentalement, seuls les bogues
mentionnés dans la partie de changelog du fichier .changes
sont
fermés).
Historiquement, les envois identifiés comme Mise à jour indépendante (« Non-maintainer upload » ou NMU) étaient marqués comme fixed au lieu d'être fermés, mais cette pratique a cassé avec l'ajout du suivi des versions. Le même raisonnement s'applique à l'étiquette fixed-in-experimental.
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 rouvrir un bogue fermé par erreur,
envoyez une commande reopen XXX à l'adresse de contrôle
du système de suivi des bogues, [email protected]
. Pour
fermer tous les bogues restants qui ont été corrigés par votre envoi, envoyez
le fichier .changes
à [email protected]
où
XXX est le numéro du bogue et placez « Version: YYY » et
une ligne vide dans les deux premières lignes du corps du courrier où
YYY est la première version dans laquelle le bogue a été corrigé.
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 à [email protected]
.
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.
À 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é à
[email protected]
dès
que possible. N'ENVOYEZ PAS de paquet pour
stable ; l'équipe de sécurité le fera. Les informations utiles
incluent, par exemple :
les versions du paquet connues pour être affectées par le bogue. Vérifiez chaque version présente dans les distributions maintenues par Debian ainsi que dans testing et dans unstable,
la nature d'une solution si elle est disponible (les correctifs sont particulièrement utiles),
tout paquet corrigé que vous avez vous-même préparé (envoyez seulement les
fichiers .diff.gz
et .dsc
et lisez d'abord Préparer les paquets pour corriger des
problèmes de sécurité, Section 5.8.5.3),
toute assistance que vous pouvez fournir pour aider les tests (exploits, tests de régression, etc.),
toute information nécessaire pour l'annonce de sécurité (voir Annonces de sécurité, Section 5.8.5.2).
À la différence de la plupart des autres activités au sein de Debian, les informations sur les problèmes de sécurité doivent parfois être gardées en privé pour un certain temps. Ceci permet aux distributeurs de logiciels de coordonner leur dévoilement afin de minimiser l'exposition de leurs utilisateurs. Cette décision dépend de la nature du problème et de l'existence d'une solution correspondante et également s'il s'agit d'un fait connu publiquement.
Il existe plusieurs façons pour un développeur de prendre connaissance d'un problème de sécurité :
il le remarque sur un forum public (liste de diffusion, site web, etc.),
quelqu'un remplit un rapport de bogue,
quelqu'un l'informe par courrier privé.
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 :
si l'exposition de sécurité est mineure, il n'y a parfois pas besoin de garder le secret sur le problème et une correction devrait être effectuée et diffusée,
si le problème est grave, il est préférable de partager cette information avec d'autres vendeurs et de coordonner une publication. L'équipe de sécurité reste en contact avec les différentes organisations et individus et peut prendre soin des actions à mener.
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.
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 [email protected]
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 :
une description du problème et de sa portée, y compris :
le type du problème (usurpation de privilège, déni de service, etc.),
quels sont les privilèges obtenus et par quels utilisateurs (si c'est le cas)
comment il peut être exploité,
si le problème peut être exploité à distance ou localement,
comment le problème a été corrigé,
Ces informations permettent aux utilisateurs d'estimer la menace pesant sur leurs systèmes.
les numéros de version des paquets affectés,
les numéros de version des paquets corrigés,
une information sur la façon de récupérer les paquets mis à jour (habituellement l'archive de sécurité Debian),
des références à des annonces amont, des identifiants CVE
et toute autre information utile
pour recouper les références de la vulnérabilité.
Une façon d'aider l'équipe de sécurité dans ses travaux est de lui fournir des paquets corrigés convenables pour une annonce de sécurité pour la version 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, aussi 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.
N'incluez PAS de changements dans votre paquet qui ne soient pas liés directement à la correction de la vulnérabilité. Ceux-ci devraient être ensuite enlevés et cela perd du temps. S'il y a d'autres bogues dans votre paquet que vous aimeriez corriger, faites un envoi vers proposed-updates de la façon habituelle, après l'envoi de l'alerte de sécurité. Le mécanisme de mise à jour de sécurité n'est pas un moyen d'introduire des changements dans votre paquet qui seraient sinon rejetés de la distribution stable, n'essayez donc pas de faire cela, s'il vous plaît.
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).
Assurez-vous de conserver les points suivants à l'esprit :
Ciblez la bonne distribution dans votre fichier debian/changelog
.
Pour stable, il s'agit de stable-security et pour
testing, c'est testing-security et pour l'ancienne
distribution stable, c'est oldstable-security. Ne ciblez ni
distribution-proposed-updates, ni stable !
L'envoi devra avoir « urgency=high ».
Fournissez des entrées de changelog descriptives et complètes. D'autres personnes se baseront dessus pour déterminer si un bogue particulier a été corrigé. Incluez toujours une référence externe, de préférence un identifiant CVE, pour qu'elle puisse être recoupée. Incluez la même information dans le changelog pour unstable pour qu'il soit clair que le même bogue a été corrigé car cela est très utile pour vérifier que le bogue a été corrigé pour la prochaine version stable. Si aucun identifiant CVE n'a encore été assigné, l'équipe de sécurité en demandera un pour qu'il puisse être inclus dans le paquet et dans le changelog.
Assurez-vous que le numéro de version est correct. Il doit être plus élevé que celui du paquet actuel, mais moins que ceux des paquets des versions des distributions suivantes. En cas de doute, testez-le avec dpkg --compare-versions. Soyez attentif à ne pas ré-utiliser un numéro de version que vous auriez déjà utilisé pour un précédent envoi. Pour testing, il doit y avoir un numéro de version supérieur dans unstable. S'il n'y en a pas encore (par exemple, si testing et unstable ont la même version), vous devez envoyer une nouvelle version vers unstable en premier.
Ne faites pas d'envoi de source seul si votre paquet possède un ou plusieurs
paquets binary-all (n'utilisez pas l'option -S de
dpkg-buildpackage
). L'infrastructure buildd
ne
construira pas ceux-ci. Ce point s'applique aux envois de paquets normaux
également.
Sauf si la source amont a été envoyée auparavant à security.debian.org (par une précédente mise à jour de sécurité), construisez le paquet avec la source amont complète (dpkg-buildpackage -sa). S'il y a déjà eu un précédent envoi à security.debian.org, vous pouvez faire un envoi sans le paquet source (dpkg-buildpackage -sd).
Assurez-vous d'utiliser exactement le même nom *.orig.tar.gz
que
celui utilisé dans l'archive normale, sinon il ne sera pas possible de déplacer
plus tard le correctif de sécurité dans l'archive principale.
Compilez le paquet sur un système propre, dont tous les paquets appartiennent à
la distribution pour laquelle vous construisez le paquet. Si vous n'avez pas
un tel système, vous pouvez utiliser l'une des machines de debian.org (voir Les serveurs Debian, Section
4.4) ou mettez en place un chroot (voir pbuilder
, Section A.4.3 et
debootstrap
, Section
A.4.2).
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-master.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 et proposé pour le répertoire distribution-proposed-updates qui convient sur ftp-master.
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.
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. Vous devez vous assurer d'inclure le fichier
.orig.tar.gz
dans votre envoi (même si vous n'envoyez pas de
nouvelle version amon) ou il n'apparaîtra pas dans la nouvelle section avec le
reste du paquet. Si votre nouvelle section est valide, il sera déplacé
automatiquement. Si ce n'est pas le cas, contactez les responsables ftp pour
comprendre ce qui s'est passé.
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 Spécifier la section, la sous-section et la priorité d'un paquet, Section 5.7.
Si, pour une raison ou une autre, vous avez besoin de supprimer complètement un paquet de l'archive (disons qu'il s'agit d'une vieille bibliothèque devenue inutile que l'on conservait pour des raisons de compatibilité), il vous faudra envoyer un rapport de bogue concernant le pseudo-paquet ftp.debian.org et demander sa suppression ; comme pour tous les bogues, ce bogue devrait être de gravité normale. N'oubliez pas de préciser de quelle distribution le paquet doit être supprimé. Normalement, vous ne devriez avoir à supprimer que des paquets d'unstable ou d'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.
Il existe une exception pour laquelle il n'est pas nécessaire de faire une demande explicite de suppression : si un paquet (source ou binaire) est orphelin, il sera supprimé de façon semi-automatique. Pour un paquet binaire, cela veut dire s'il n'y a plus de paquet source produisant le paquet binaire ; si le paquet binaire n'est simplement plus produit pour certaines architectures, une demande de suppression est toujours nécessaire. Pour un paquet source, cela veut dire que tous les paquets binaires auxquels il se réfère ont été récupérés par un autre paquet source.
Vous devez détailler dans votre demande de suppressions les raisons justifiant cette demande. Ceci a pour but d'éviter les suppressions non désirées et de garder une trace de la raison pour laquelle un paquet a été supprimé. Par exemple, vous pouvez fournir le nom du paquet qui remplace celui à supprimer.
Vous ne pouvez demander la suppression d'un paquet que si vous en êtes le responsable. Si vous voulez supprimer un autre paquet, vous devez obtenir l'accord de son responsable.
Si vous ne savez pas bien si un paquet peut être supprimé, demandez l'avis des
autres développeurs sur la liste [email protected]
.
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.
Parmi d'autres programmes utiles, citons apt-cache rdepends,
apt-rdepends
et grep-dctrl
. Le retrait de paquets
orphelins est discuté sur [email protected]
.
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.
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 plus élevé que celui
que vous voulez remplacer. Les deux versions seront installées dans l'archive
mais seule la plus récente sera accessible dans 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.
Si vous vous trompez en nommant un paquet, vous devrez intervenir en deux
étapes pour changer son nom. 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.
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 <[email protected]> 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]:
paquet — courte description » pour
indiquer que le paquet est abandonné. La gravité du bogue sera
normale ; si le paquet a une priorité standard ou supérieure,
elle devrait être importante. Si vous le jugez nécessaire, envoyez
une copie à [email protected]
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 vous avez simplement l'intention de donner le paquet, mais que vous pouvez
conserver sa maintenance pour le moment, vous devriez à la place soumettre un
rapport de bogue sur wnpp
et l'intituler RFA:
paquet -- description courte. RFA
veut dire Request For Adoption (demande d'adoption).
Vous pouvez trouver plus d'informations sur les pages web WNPP
[24].
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, envisagez 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.
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 des architectures différentes de celle du paquet binaire fait par le responsable du paquet. C'est une activité remarquable et essentielle. En fait, les porteurs sont à l'origine de la plupart des compilations de paquets Debian. Pour un paquet binaire i386, par exemple, il faut compter une recompilation pour chaque autre architecture, soit un total de 12 recompilations.
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, la première et la plus importante chose est de répondre rapidement aux rapports de bogues et remarques soulevées par les porteurs. Traitez-les courtoisement, comme s'ils étaient co-responsables de vos paquets (ce qu'ils sont d'une certaine manière). Merci pour votre indulgence envers des rapports de bogue succincts ou peu clairs ; faites de votre mieux pour éliminer le problème.
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 :
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.
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.
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
.
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
.
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.
Ne vous appuyez pas sur une installation préexistante de votre paquet (un sous-cas de la remarque précédente).
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.
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.
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 ?, Section 5.11.1.
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
.
Si vous travaillez sur une machine Debian pour vos efforts de portage et que
vous devez signer votre envoi localement pour son acceptation dans l'archive,
vous pouvez exécuter debsign
sur votre fichier
.changes
pour qu'il soit signé de manière commode ou utilisez le
mode de signature à distance de dpkg-sig
.
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).
Vous devez vous assurer que votre mise à jour indépendante binaire ne rend pas le paquet non installable. Cela peut arriver si un paquet source génère des paquets dépendants et indépendants de l'architecture qui dépendent les uns des autres via $(Source-Version).
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 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é).
La « magie » d'une mise à jour indépendante par recompilation uniquement est déclenchée par l'utilisation d'un suffixe ajouté au numéro de version du paquet de la forme b<numéro>. Par exemple, si la dernière version que vous avez recompilée était la version 2.9.3, votre mise à jour indépendante aura le numéro de version 2.9-3+b1. Si la dernière version était 3.4+b1 (i.e. un paquet natif avec une précédente mise à jour indépendante par recompilation), votre mise à jour indépendant aura le numéro de version 3.4+b2. [25]
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.
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. Elle varie également selon que l'architecture est candidate pour inclusion dans la prochaine version stable ; les responsables de publication décident et annoncent quelles architectures sont candidates.
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). Pour les envois de stable ou testing, veuillez tout d'abord vous coordonner avec l'équipe de publication appropriée.
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.
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.
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.
Les descriptions de plusieurs outils de portage peuvent être trouvées dans les Outils de portage, Section A.7.
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.
Les administrateurs des buildds pour chaque architecture peuvent être contactés à l'adresse électronique [email protected].
Certains paquets ont encore des problèmes pour être construits et/ou pour fonctionner sur certaines des architectures prises en charge par Debian et ne peuvent pas du tout être portés, ou pas dans un laps de temps raisonnable. Un exemple est un paquet qui est spécifique SGVA (i386 seulement) ou qui utilise des fonctionnalités spécifiques au matériel qui ne sont pas gérées sur toutes les architectures.
Pour éviter que des paquets cassés soient envoyés dans l'archive et qu'ils fassent perdre du temps des buildd, vous devez faire plusieurs choses :
Tout d'abord, assurez-vous que votre paquet échoue à la compilation sur les architectures qu'il ne gère pas. Il y a plusieurs moyens de faire cela. Le moyen préféré est d'avoir une petite suite de tests pendant la construction qui testera la fonctionnalité et qui échouera si cela ne fonctionne pas. C'est de toute façon une bonne idée et empêchera des (certains) envois cassés pour toutes les architectures, et cela permettra également au paquet d'être construit dès que la fonctionnalité nécessaire est disponible.
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 à http://cvs.debian.org/srcdep/Packages-arch-specific?cvsroot=dak
;
veuillez consulter le début du fichier pour savoir qui contacter pour le
modifier.
Veuillez noter qu'il est insuffisant de simplement ajouter votre paquet à
Packages-arch-specific sans le faire également échouer lors de compilation sur
les architectures non gérées : un porteur ou toute autre personne essayant
de construire votre paquet peut accidentellement l'envoyer sans remarquer qu'il
ne fonctionne pas. Si dans le passé, certains paquets binaires ont été envoyés
pour des architectures non gérées, demandez leur suppression en remplissant un
bogue sur ftp.debian.org
.
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 ».
Cette section ne traite que des mises à jour indépendantes de source, c.-à-d.,
les mises à jour qui envoient une nouvelle version d'un paquet. Pour les mises
à jour indépendantes par des porteurs ou des membres de la QA, veuillez
consulter Mises à jour indépendantes binaires ou
recompilations, Section 5.10.2.1. Si un buildd construit et envoie un
paquet, cela est également à strictement parler une NMU binaire. Veuillez
consulter buildd
, Section 5.10.3.3 pour
plus d'informations.
La raison principale pour laquelle une mise à jour indépendante est réalisée est quand un développeur a besoin de corriger le paquet d'un autre développeur pour résoudre des problèmes sérieux ou des bogues paralysants ou quand le responsable d'un paquet ne peut pas fournir une correction dans un délai raisonnable.
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.
Et souvenez-vous du Serment d'Hippocrate « Par dessus tout, ne pas faire de mal ». Il est préférable de laisser un paquet avec un bogue ouvert grave plutôt qu'appliquer un correctif non fonctionnel ou un correctif qui cache le bogue sans le résoudre.
Les mises à jour indépendantes qui corrigent des bogues de gravité importante, sérieuse et plus élevée sont encouragées et acceptées. Vous devriez vous efforcer de contacter le responsable actuel du paquet : il est peut-être sur le point d'envoyer un correctif pour le problème ou il a peut-être une meilleure solution.
Les mises à jour indépendantes doivent être réalisées pour assister un responsable de paquet à résoudre des bogues. Les responsables devraient être reconnaissants pour cette aide et les personnes faisant la mise à jour indépendante devraient respecter les décisions du responsable et tenter d'aider personnellement le responsable dans son travail.
Une mise à jour indépendante devrait suivre toutes les conventions décrites dans cette section. Pour un envoi vers testing ou unstable, l'ordre suivant des étapes est recommandé :
Vérifiez que les bogues du paquet qui devraient être corrigés par la mise à jour indépendante sont bien référencés dans le système de suivi des bogues. S'ils n'y sont pas, faites des rapports de bogue immédiatement.
Attendez la réponse du responsable quelques jours. Si vous n'obtenez aucune réponse, vous pouvez l'aider en lui envoyant le correctif qui corrige le bogue. N'oubliez pas de marquer le bogue avec le mot-clé « patch ».
Patientez quelques jours. Si vous n'avez toujours aucune réponse du responsable, envoyez-lui un courrier annonçant votre intention d'effectuer une mise à jour indépendante du paquet. Préparez la NMU comme décrit dans cette section et testez-la soigneusement sur votre machine (cf. Tester le paquet, Section 5.3). Re-vérifiez que votre correctif n'a aucun effet de bord inattendu. Assurez-vous que votre correctif est aussi minimaliste et non intrusif que possible.
Envoyez votre paquet à incoming dans DELAYED/7-day
(cf. Envois différés, Section 5.6.3), envoyez le
correctif final au responsable par le BTS et expliquez-lui qu'il a 7 jours pour
réagir s'il veut annuler la NMU.
Suivez ce qui se passe, vous êtes responsable pour tout bogue que vous auriez introduit avec votre NMU. Vous devriez probablement utiliser le Système de suivi des paquets, Section 4.10 (PTS) pour vous tenir informé de l'état du paquet après votre NMU.
Parfois, le responsable de version ou un groupe organisé de développeurs peut annoncer une certaine période de temps au cours de laquelle les règles de mise à jour indépendante seront plus souples. Ceci implique habituellement une période plus courte d'attente avant d'envoyer des correctifs et une période de délai plus courte. Il est important de noter que, même au cours de ces « chasses aux bogues », la personne désirant faire la mise à jour indépendante doit remplir des bogues et contacter en premier le développeur, et ensuite seulement passer à l'action. Veuillez vous reporter à Les chasses aux bogues, Section 7.2.2 pour des détails.
Pour la distribution testing, les règles peuvent être changées par les responsables de publication. Veuillez porter une attention spéciale au fait que le moyen habituel pour un paquet d'entrer dans testing est de passer par unstable.
Pour la distribution stable, veuillez y apporter une attention supplémentaire. Bien sûr, les responsables de publication peuvent également modifier les règles ici. Veuillez vérifier avant votre envoi que tous vos changements sont acceptables pour inclusion dans la prochaine version stable par le responsable de publication.
Quand un bogue de sécurité est détecté, l'équipe de sécurité peut effectuer une mise à jour indépendante en utilisant ses propres règles. Veuillez vous référer à Gérer les bogues de sécurité, Section 5.8.5 pour plus d'informations.
Pour les différences concernant les mises à jour indépendantes par les porteurs, veuillez voir Quand faire une mise à jour indépendante source pour un portage ?, Section 5.10.2.2.
Bien sûr, il est toujours possible de s'accorder avec un responsable pour des règles spéciales (comme quand le responsable demande « merci d'envoyer le correctif directement pour moi et pas de diff nécessaire »).
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 responsable du paquet doit, lui, démarrer sa numérotation à « 1 ».
Si vous envoyez un paquet vers testing ou stable, vous devrez parfois créer une branche (« fork ») dans l'arbre de numéro des version. Pour cela, vous pouvez utiliser des numéros de version comme 1.1-3sarge0.1.
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 l'envoi 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
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 ferment les rapports.
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 envoyer l'information aux bogues existants que vous avez corrigés par votre NMU en incluant le diff unifié. Historiquement, c'était une habitude de créer un nouveau rapport de bogue et inclure un correctif comprenant toutes les modifications que vous avez réalisées. Le responsable officiel pourra choisir d'appliquer le correctif, il pourra aussi employer une autre méthode pour régler le problème. Certains bogues sont corrigés dans la version amont, ce qui est une bonne raison pour annuler les modifications d'une mise à jour indépendante. Si le responsable choisit de mettre à jour le paquet plutôt que d'utiliser les correctifs de la mise à jour indépendante, il devra s'assurer que cette nouvelle version corrige effectivement chacun des bogues corrigés dans la mise à jour indépendante.
De plus, le responsable officiel devrait toujours conserver les
entrées documentant une mise à jour indépendante dans le fichier
changelog
— et bien sûr, également conserver les
modifications. Si vous annulez certaines des modifications, veuillez réouvrir
les rapports de bogue correspondants.
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 instructions 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
.
Si l'un de vos paquets a subi une mise à jour indépendante, vous devez
récupérer les changements dans votre copie des sources. Ceci est aisé, vous
avez simplement à appliquer le correctif qui vous a été envoyé. Une fois ceci
fait, vous devez fermer les bogues qui ont été marqués comme fixés par la mise
à jour. Le moyen le plus simple est d'utiliser l'option -v de
dpkg-buildpackage
car cela vous permet d'inclure tous les
changements depuis votre dernier envoi de responsable. Sinon, vous pouvez soit
les fermer manuellement en envoyant les courriers nécessaires au BTS soit
ajouter les 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).
Sauf si vous savez que le responsable est toujours actif, il est sage de
vérifier le paquet pour voir s'il n'a pas été abandonné. La liste actuelle des
paquets orphelins pour lesquels le champ responsable n'a pas été positionné
correctement est disponible à http://qa.debian.org/orphaned.html
.
Si vous effectuez une mise à jour indépendante sur un paquet incorrectement
orphelin, veuillez positionner le responsable à « Debian QA Group
<[email protected]> ».
Seuls les responsables Debian officiels peuvent faire des mises à jour indépendantes binaire ou source. Un responsable officiel est une personne dont la clé est dans le porte-clés Debian. Tout autre personne est toutefois invitée à télécharger les paquets sources pour corriger des bogues ; au lieu de faire des mises à jour indépendantes, ils pourront soumettre les correctifs qui le méritent au système de suivi des bogues. Les responsables apprécient presque toujours les correctifs et les rapports de bogue soignés.
Deux nouvelles expressions sont introduites dans cette section : « mise à jour indépendante source » et « mise à jour indépendante binaire ». Ces deux expressions ont une signification technique précise dans ce document. Elles correspondent toutes deux au même type d'activité ; elles impliquent toutes deux qu'une personne fait une mise à jour d'un paquet alors qu'elle n'est pas officiellement responsable de ce paquet. C'est pourquoi nous qualifions ces mises à jours d'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ée par la recompilation et l'archivage d'un paquet pour une architecture donnée. Il s'agit souvent du résultat d'un effort de portage. Une mise à jour indépendante binaire est la livraison d'un paquet compilé (souvent pour une autre architecture) à condition que cette compilation n'ait pas nécessité de modifications des sources. Dans de nombreux cas, les porteurs sont obligés de modifier les sources pour les rendre compilables sur leur architecture cible ; il s'agira alors d'une mise à jour indépendante source et non d'une mise à jour indépendante binaire. Comme vous pouvez le remarquer, nous ne faisons pas de distinction entre les mises à jour indépendantes faites par des porteurs et les autres mises à jour indépendantes.
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 : utilisez toujours « mise à jour indépendante binaire » ou «NMU binaire » pour les mises à jour indépendantes de binaires seuls.
« 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 la personne 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 :
Donner au co-responsable un accès aux sources à partir desquelles vous
construisez le paquet. Habituellement, cela implique que vous utilisiez un
système de contrôle de version comme CVS
ou
Subversion
.
Ajouter les nom et adresse correctes du co-responsable au champ
Uploaders dans la partie globale du fichier
debian/control
.
Uploaders: John Buzz <[email protected]>, Adam Rex <[email protected]>
En utilisant le PTS (Système de suivi des paquets, Section 4.10), les co-responsables devraient s'inscrire eux-mêmes aux paquets sources appropriés.
La maintenance collective peut souvent être facilitée par l'utilisation d'outils sur Alioth (voir Debian *Forge : Alioth, Section 4.12).
Les paquets sont habituellement installés dans la distribution testing après avoir atteint un certain degré de test 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 n'avoir aucun bogue bloquant l'inclusion du paquet dans une version stable (« release-critical ») au moment où ils sont installés dans testing. Ainsi, testing devrait toujours être prête pour être une version candidate stable. Veuillez voir ci-dessous pour les détails.
Les scripts qui mettent à jour la distribution testing sont exécutés
chaque jour 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 :
Le paquet doit avoir été disponible dans unstable depuis 2, 5 ou 10 jours selon le champ d'urgence de l'envoi (élevée, moyenne ou basse). Veuillez noter que cette urgence est « collante » (« sticky »), ce qui veut dire que l'envoi avec l'urgence la plus élevée depuis la précédente transition dans testing est prise en compte. Ces délais peuvent être doublés lors d'un gel de distribution, ou les transitions dans testing peuvent être complètement désactivées ;
Il doit avoir autant ou moins de bogues empêchant l'intégration dans la distribution que la version actuellement disponible dans testing ;
Il doit être disponible pour toutes les architectures pour lesquelles il a été
auparavant construit. L'outil
madison
, Section 4.9.2 peut être intéressant pour vérifier
cette information ;
Il ne doit pas casser les dépendances d'un paquet qui est 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).
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
ou utilisez le programme grep-excuses
inclus
dans le paquet devscripts
. Si vous voulez rester informé de la
progression de vos paquets dans testing, vous pouvez facilement le
mettre dans la crontab(5)
.
Le fichier update_excuses
ne donne pas toujours la raison précise
pour laquelle un paquet est refusé ; on peut avoir à la chercher soi-même
en regardant ce qui serait cassé avec l'inclusion du paquet. La page web de la distribution
testing
donne plus d'informations à propos des problèmes courants
qui peuvent occasionner cela.
Parfois, certains paquets n'entrent jamais dans testing parce que le jeu des inter-relations est trop compliqué et ne peut être résolu par le script. Voir ci-dessous pour des détails.
Des analyses de dépendances plus avancées sont présentées sur http://bjorn.haxx.se/debian/
— mais, attention, cette page affiche également les dépendances de
construction qui ne sont pas considérées par britney.
Pour le script de migration dans testing, « désynchronisé » (outdated veut dire ceci : il y a différentes versions dans unstable pour les architectures de version (à l'exception des architectures dans fuckedarches ; fuckedarches est une liste des architectures qui ne suivent pas le rythme (dans update_out.py), mais actuellement cette liste est vide). « Désynchronisé » n'a rien à voir avec les architectures que le paquet fournit pour testing.
Considérons cet exemple :
foo | alpha | arm ---------+-------+---- testing | 1 | - unstable | 1 | 2
Le paquet est désynchronisé pour alpha dans unstable et n'entrera pas dans testing. Supprimer foo 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) :
foo | 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 version).
Quelquefois, la question est soulevée pour savoir s'il est possible de permettre à des paquets de passer dans testing qui ne sont pas encore construits pour toutes les architectures : non. Simplement non. (Excepté si vous êtes responsable de glibc ou équivalent).
Parfois, un paquet est supprimé pour permettre l'inclusion d'un autre paquet : ceci ne se produit que pour permettre à un autre paquet d'entrer, ce dernier doit être prêt pour tous les autres critères. Considérons, par exemple, qu'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 RC est suffisant pour être dans cet état).
De plus, si un paquet a été supprimé d'unstable et qu'aucun paquet de testing n'en dépend plus, il sera alors automatiquement supprimé.
Une situation qui n'est pas très bien 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: b=1 | 2; dépend: b=2 b | 1; dépend: a=1 | 2; dépend: a=2
Aucun des paquets a et b ne sera considéré pour mise à jour.
Actuellement, ceci nécessite un coup de pouce manuel de l'équipe de publication. Veuillez les contacter en envoyant un courrier électronique à [email protected] si cela se produit pour l'un de vos paquets.
Généralement, l'état d'un paquet dans testing ne change rien pour la transition de la prochaine version d'unstable vers testing, avec deux exceptions : si le nombre de bogues RC du paquet est réduit, le paquet peut migrer même s'il a encore des bogues RC. La seconde exception est que si la version du paquet dans testing est désynchronisée entre les différentes architectures, alors toute architecture peut être mise à jour vers la version du paquet source ; cependant, cela ne peut se produire que si le paquet a été précédemment forcé, si l'architecture est dans fuckedarches ou s'il n'y avait pas du tout de paquet binaire de cette architecture présent dans unstable lors de la migration dans testing.
En résumé, cela veut dire : la seule influence qu'un paquet de testing a sur la nouvelle version du même paquet est que la nouvelle version peut rentrer plus facilement.
Si vous êtes intéressé par les détails, voici comment fonctionne britney :
Les paquets sont examinés pour savoir si ce sont des candidats valides. Cela donne le fichier « update excuses ». Les raisons les plus communes pour lesquelles un paquet n'est pas considéré sont la jeunesse du paquet, le nombre de bogues RC et la désynchronisation pour certaines architectures. Pour cette partie de britney, les responsables de version ont des marteaux de toute taille pour forcer britney à considérer un paquet. (Le gel de la base est également codé dans cette partie de britney.) (Il y a une chose semblable pour les mises à jour binaires pures, mais cela n'est pas décrit ici. Si vous êtes intéressé par cela, veuillez étudier attentivement le code.)
Maintenant, la partie la plus complexe se produit : britney tente de mettre à jour testing avec des candidats valides ; en premier, chaque paquet individuellement, puis des groupes de plus en plus larges de paquets ensemble. Chaque tentative est acceptée si testing n'est pas moins non installable après la mise à jour qu'avant celle-ci. (Avant et après cette partie, certains coups de pouce (« hints ») sont traités ; mais, comme seuls les responsables de version peuvent positionner des coups de pouce, cela n'est probablement pas très important pour vous.)
Si vous voulez voir plus de détails, vous pouvez le voir dans
merkel:/org/ftp.debian.org/testing/update_out/ (ou dans ~aba/testing/update_out
pour voir une configuration avec un fichier de paquets plus petit). Par le
web, c'est à http://ftp-master.debian.org/testing/update_out_code/
.
Les coups de pouce sont visibles sur http://ftp-master.debian.org/testing/hints/
.
La distribution testing est peuplée avec des 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 du responsable de distribution. Vous devez
donc avoir une bonne raison pour les y envoyer. Pour savoir ce que représente
une bonne raison aux yeux des responsables de distribution, vous devriez lire
les instructions données qu'ils envoient régulièrement sur [email protected]
.
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 de développement dans unstable), vous pouvez utiliser cette facilité, mais il est recommandé de demander l'autorisation du responsable de distribution auparavant. Même si un paquet est gelé, des mises à jour par unstable sont possibles si l'envoi dans unstable ne tire pas de nouvelles dépendances.
Les numéros de version sont habituellement choisis en ajoutant le nom de code de la distribution testing et un numéro incrémenté, comme 1.2sarge1 pour le premier envoi dans testing-proposed-updates du paquet en version 1.2.
Veuillez vous assurer que vous n'oubliez aucun des éléments suivants lors de votre envoi :
vérifiez que votre paquet doit vraiment aller dans testing-proposed-updates et ne peut pas passer par unstable ;
vérifiez que vous n'incluez que le minimum de changements ;
vérifiez que vous incluez une explication appropriée dans le changelog ;
vérifiez que vous avez bien indiqué testing ou testing-proposed-updates comme votre distribution cible ;
vérifiez que vous avez construit et testé votre paquet dans testing et non dans unstable ;
vérifiez que votre numéro de version est plus élevé que les versions de testing et de testing-proposed-updates et moins élevé que celle de unstable ;
après l'envoi et la construction réussie sur toutes les plates-formes,
contactez l'équipe de publication à [email protected]
et demandez-leur d'approuver votre envoi.
Tous les bogues de gravité assez élevée sont par défaut considérés comme bloquant l'intégration du paquet dans la version stable ; actuellement, ce sont les bogues critiques, graves et sérieux.
Certains bogues sont supposés avoir un impact sur les chances que le paquet a d'être diffusé dans la version stable de Debian : en général, si un paquet a des bogues bloquants, il n'ira pas dans testing et par conséquent, ne pourra pas être diffusé dans stable.
Le compte des bogues d'unstable est effectué avec tous les bogues bloquants sans étiquette de version (comme potato, woody) ou avec une étiquette sid et également s'ils ne sont ni corrigés ou marqués avec sarge-ignore. Le compte des bogues de testing pour un paquet est considéré comme à peu près le nombre de bogues d'unstable lors du dernier pointage quand la version testing a été égale à la version unstable.
Cela changera après la sortie de Sarge dès que nous aurons des versions dans le système de suivi des bogues.
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 changeant de paquets binaires dans différentes versions (par suite, principalement des bibliothèques). Cependant, cela va aussi toucher des paquets sur lesquels une dépendance versionnée a été déclarée du type ==, <= ou <<.
Quand le jeu de paquets binaires fournis par un paquet source change de cette façon, tous les paquets qui dépendent des anciens binaires doivent être mis à jour pour dépendre de la nouvelle version à la place. Comme l'installation d'un tel paquet source dans testing casse tous les paquets qui en dépendent dans testing, une certaine attention doit y être portée : tous les paquets en dépendant doivent être mis à jour et prêts à être installés eux-même pour qu'ils ne cassent pas et, une fois que tout est prêt, une intervention manuelle du responsable de version ou d'un de ses assistants est normalement requise.
Si vous avez des problèmes avec des groupes compliqués de paquets comme ceci, contactez debian-devel ou debian-release en demandant de l'aide.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ A ] [ suivant ]
Référence du développeur Debian
[email protected]
[email protected]