Ubuntu logo

Packaging Guide

5. Tutoriel : Correction d’un bogue dans Ubuntu

Alors que les mécanismes pour corriger un bogue sont les mêmes pour tous les bogues, chaque problème que vous examinez est susceptible d’être différent des autres. Un exemple de problème concret aide à se faire une idée de ce qu’il faut considérer en général.

Note

Au moment de la rédaction de cet article, ce n’était pas encore corrigé. Lorsque vous lirez l’article ce pourrait effectivement être corrigé. Prenez ceci comme un exemple et essayez de l’adapter au problème spécifique auquel vous faites face.

5.1. Confirmer le problème

Supposons que le paquet bumprace n’a pas de page d’accueil dans sa description de paquet. Dans un premier temps, vous vérifiez si le problème n’est pas déjà résolu. C’est facile à vérifier, soit en jetant un coup d’œil à la Logithèque Ubuntu, soit en exécutant :

apt-cache show bumprace

La sortie devrait être similaire à ceci :

Package: bumprace
Priority: optional
Section: universe/games
Installed-Size: 136
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Christian T. Steigies <cts@debian.org>
Architecture: amd64
Version: 1.5.4-1
Depends: bumprace-data, libc6 (>= 2.4), libsdl-image1.2 (>= 1.2.10),
         libsdl-mixer1.2, libsdl1.2debian (>= 1.2.10-1)
Filename: pool/universe/b/bumprace/bumprace_1.5.4-1_amd64.deb
Size: 38122
MD5sum: 48c943863b4207930d4a2228cedc4a5b
SHA1: 73bad0892be471bbc471c7a99d0b72f0d0a4babc
SHA256: 64ef9a45b75651f57dc76aff5b05dd7069db0c942b479c8ab09494e762ae69fc
Description-en: 1 or 2 players race through a multi-level maze
 In BumpRacer, 1 player or 2 players (team or competitive) choose among 4
 vehicles and race through a multi-level maze. The players must acquire
 bonuses and avoid traps and enemy fire in a race against the clock.
 For more info, see the homepage at http://www.linux-games.com/bumprace/
Description-md5: 3225199d614fba85ba2bc66d5578ff15
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

Un contre-exemple serait gedit, qui dispose d’une page d’accueil :

$ apt-cache show gedit | grep ^Homepage
Homepage: http://www.gnome.org/projects/gedit/
$

Parfois, vous constaterez qu’un problème particulier sur lequel vous vous penchez est déjà corrigé. Pour éviter le gaspillage des efforts et le travail en doublon, il est logique de commencer par un petit travail de détective.

5.2. Localisation de bogue

En premier lieu, nous devons vérifier l’existence préalable d’un bogue pour ce problème dans Ubuntu. Peut-être que quelqu’un travaille déjà sur un correctif, ou nous pouvons contribuer à la solution d’une manière ou d’une autre. Pour Ubuntu, nous jetons un coup d’œil à https://bugs.launchpad.net/ubuntu/+source/bumprace et constatons qu’aucun bogue n’y est ouvert avec notre problème.

Note

Pour Ubuntu, l’URL https://bugs.launchpad.net/ubuntu/+source/<paquet> devrait toujours afficher la page concernant les bogues du paquet source en question.

Pour Debian, qui est la principale source des paquets d’Ubuntu, nous jetons un œil sur http://bugs.debian.org/src:bumprace et nous ne pouvons de nouveau pas trouver de rapport de bogue pour notre problème.

Note

Pour Debian, l’URL http://bugs.debian.org/src:<paquet> devrait toujours afficher la page concernant les bogues du paquet source en question.

Le problème sur lequel nous travaillons est spécifique, car il concerne uniquement les bits d’empaquetage liés à bumprace. Si le problème se trouvait dans le code source, il serait utile de vérifier également le traceur de bogues en amont. Malheureusement, il arrive souvent que cela soit différent à chaque paquet examiné ; mais si vous effectuez une recherche sur internet, vous devriez le trouver facilement dans la plupart des cas.

5.3. Offrir de l’aide

Si vous avez trouvé un bogue ouvert, qu’il n’est affecté à personne et que vous êtes en mesure de régler le problème, vous pouvez le commenter avec votre solution. N’oubliez pas d’inclure autant d’informations que possible : dans quelles circonstances se produit le bogue ? Comment avez-vous résolu le problème ? Avez-vous testé votre solution ?

Si aucun rapport de bogue n’a été déposé, vous pouvez en déposer un. Une chose que vous devriez garder à l’esprit est : Le problème est-il si petit qu’une simple demande de réalisation serait suffisante ? Avez-vous réussi à partiellement résoudre le problème et vous voulez au moins partager votre partie de la solution ?

C’est très bien si vous pouvez offrir votre aide, et elle sera assurément appréciée.

5.4. Résoudre le problème

Pour cet exemple spécifique, il suffit de chercher bumprace sur internet et de trouver sa page d’accueil. Assurez-vous qu’il s’agisse du vrai site et non d’un simple catalogue de logiciels. http://www.linux-games.com/bumprace/ semble être sa bonne localisation.

Pour résoudre le problème dans le paquet source, nous avons d’abord besoin de la source et nous pouvons facilement l’obtenir en exécutant :

bzr branch ubuntu:bumprace

Si vous avez précédemment lu la Présentation du répertoire Debian, vous vous rappellerez que la page d’accueil d’un paquet est spécifiée dans la première partie de debian/control, la section débutant par Source:.

Ainsi, nous lançons ensuite :

cd bumprace

et modifions debian/control pour y ajouter Homepage: http://www.linux-games.com/bumprace/. La fin de la première section est un bon endroit pour cela. Une fois que vous avez réalisé cela, enregistrez le fichier.

Si désormais vous exécutez :

bzr diff

vous devriez voir quelque chose ressemblant à ceci :

=== modified file 'debian/control'
--- debian/control      2012-05-14 23:38:14 +0000
+++ debian/control      2012-09-03 15:45:30 +0000
@@ -12,6 +12,7 @@
                libtool,
                zlib1g-dev
 Standards-Version: 3.9.3
+Homepage: http://www.linux-games.com/bumprace/

 Package: bumprace
 Architecture: any

La différence est assez simple à comprendre. Le + indique une ligne rajoutée. Dans notre cas, elle a été ajoutée juste avant la seconde section, débutant par Package, qui indique le paquet binaire résultant.

5.5. Documenter le correctif

Il est important d’expliquer à vos collègues développeurs ce que vous avez fait exactement. Si vous exécutez :

dch -i

cela lance un éditeur avec une entrée passe-partout de changelog que vous avez juste à compléter. Dans notre cas, quelque chose comme debian/control: Added project's homepage. devrait le faire. Enregistrez ensuite le fichier. Pour revérifier la prise en compte, exécutez :

bzr diff debian/changelog

et vous verrez quelque chose comme ceci :

=== modified file 'debian/changelog'
--- debian/changelog    2012-05-14 23:38:14 +0000
+++ debian/changelog    2012-09-03 15:53:52 +0000
@@ -1,3 +1,9 @@
+bumprace (1.5.4-1ubuntu1) UNRELEASED; urgency=low
+
+  * debian/control: Added project's homepage.
+
+ -- Peggy Sue <peggy.sue@example.com>  Mon, 03 Sep 2012 17:53:12 +0200
+
 bumprace (1.5.4-1) unstable; urgency=low

   * new upstream version, sound and music have been removed (closes: #613344)

Quelques remarques complémentaires :

  • Si vous faites référence à un numéro Launchpad du bogue résolu par votre publication, ajoutez (LP: #<numéro de bogue>) sur la ligne d’entrée du changelog, c’est à dire : (LP: #123456).

  • Si vous souhaitez que votre correctif soit inclus dans Debian, la syntaxe pour un bogue Debian est (Closes: #<numéro de bogue>), c’est à dire : (Closes: #123456).

  • S’il s’agit d’une référence à un bogue amont ou un bogue Debian ou encore une discussion par liste de diffusion email, vous pouvez le mentionner également.

  • Essayez de limiter vos lignes à 80 caractères.

  • Essayez d’être concis, pas de roman, mais suffisamment pour que quelqu’un (qui ne s’est pas profondément penché sur la question) puisse comprendre.

  • Indiquez comment vous avez résolu le problème et où.

5.6. Tester le correctif

Pour tester le correctif, vous devez avoir configuré votre environnement de développement, puis pour construire le paquet, l’installer et vérifier que le problème est résolu. Dans notre cas, ce serait :

bzr bd -- -S
pbuilder-dist <current Ubuntu release> build ../bumprace_*.dsc
dpkg -I ~/pbuilder/*_result/bumprace_*.deb

Dans la première étape nous construisons le paquet source depuis la ramification, puis le construisons en utilisant pbuilder, et inspectons ensuite le paquet résultant pour vérifier si le champ « Page d’accueil » a été correctement ajouté.

Note

Dans de nombreux cas vous devrez réellement installer le paquet pour vous assurer qu’il fonctionne comme prévu. Notre cas est largement plus simple. Si la construction réussit, vous trouverez les paquets binaires dans ~/pbuilder/<release>_result. Installez-les à l’aide de la commande sudo dpkg -i <package>.deb ou en double-cliquant dessus dans votre gestionnaire de fichiers.

Puisque nous l’avons vérifié, le problème est désormais résolu. La prochaine étape est de partager notre solution avec tout le monde.

5.7. Obtenir l’inclusion du correctif

It makes sense to get the fix included as Upstream as possible. Doing that you can guarantee that everybody can take the Upstream source as-is and don’t need to have local modifications to fix it.

Dans notre cas, nous avons établi que nous avions un problème avec l’empaquetage, à la fois dans Ubuntu et Debian. Comme Ubuntu est basé sur Debian, nous ferons parvenir le correctif à Debian. Une fois que celui-ci y sera inclus, il sera repris par la suite dans Ubuntu. Le problème dans notre tutoriel est clairement non critique, donc cette approche est logique. S’il est important de corriger le problème dès que possible, vous devrez envoyer la solution à plusieurs traceurs de bogues. Pourvu que le problème affecte toutes les parties en cause.

Pour soumettre le patch à Debian, lancez simplement :

submittodebian

Cela vous mènera à travers une série de mesures pour vous assurer que le bogue se retrouve au bon endroit. Assurez-vous de contrôler de nouveau la différence pour être certain qu’elle ne comprenne aucune modification antérieure non désirée.

La communication est importante, lorsque vous ajoutez une description à votre demande d’inclusion, soyez gentil de bien l’expliquer.

Si tout s’est bien déroulé, vous obtenez un message du système de suivi des bogues Debian avec plus d’informations. Cela peut parfois prendre quelques minutes.

Note

Si le problème est uniquement dans Ubuntu, vous pourriez envisager de Rechercher des relectures et des parrainages pour obtenir l’inclusion du correctif.

5.8. Considérations supplémentaires

Si vous trouvez qu’il y a un certain nombre de choses triviales possibles à corriger en même temps dans un paquet, faites-le. Cela permettra d’accélérer l’examen et l’inclusion.

S’il y a plusieurs choses importantes que vous souhaitez corriger, il pourrait être plus judicieux d’envoyer des correctifs individuels ou de fusionner des propositions. S’il y a déjà des bogues individuels déposés sur le sujet, cela rend la chose encore plus aisée.