Ubuntu logo

Packaging Guide

5. Tutorial: corregir un error en Ubuntu

Aunque los mecanismos para corregir un error (fixing a bug) son los mismos para cada error, cada problema al que se enfrente es probable que sea distinto de los demás. Un ejemplo de un problema concreto le podría ayudar a formar una idea de lo que tener en cuenta de forma general.

Nota

En el momento de escribir este artículo esto no había sido corregido todavía, aunque es posible que para cuando esté leyéndolo ya se haya solucionado. Tómelo como un ejemplo e intente adaptarlo al problema concreto que está afrontando.

5.1. Confirmar el problema

Digamos que el paquete bumprace no tiene una página web en su descripción. Como primer paso podría comprobar que el problema no esté ya resuelto. Es fácil de hacer, bien mirando al Centro de software o ejecutando:

apt-cache show bumprace

La salida debería ser algo parecido a esto:

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 contraejemplo sería gedit, el cual tiene definida una página web:

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

A veces se encontrará con que un problema concreto que estaba mirando ya ha sido corregido. Para evitar desperdiciar esfuerzos y duplicar trabajos tiene sentido realizar antes cierto trabajo de investigación.

5.2. Investigar la situación de un error

Primero debería comprobar si ya existe un informe de error para el problema en Ubuntu. Quizá ya haya alguien trabajando en una corrección o podamos contribuir de alguna forma a la solución. Para Ubuntu echamos un vistazo rápido a https://bugs.launchpad.net/ubuntu/+source/bumprace y vemos que no hay un error abierto aquí para nuestro problema.

Nota

Para Ubuntu la URL https://bugs.launchpad.net/ubuntu/+source/<package> siempre debería llevar la página de error del paquete fuente en cuestión.

Para Debian, que es la fuente principal de paquetes para Ubuntu, echamos un vistazo a http://bugs.debian.org/src:bumprace y tampoco pudimos encontrar un informe de error sobre nuestro problema.

Nota

Para Debian la URL http://bugs.debian.org/src:<package> siempre debería llevar la página de error del paquete fuente en cuestión.

El problema en el que estamos trabajando es especial ya que sólo afecta a parte relacionada con el empaquetado de bumprace. Si hubiera un problema en el código fuente sería útil comprobar también el registro de errores aguas arriba. Desafortunadamente este es a menudo diferente para cada paquete que mire, pero si lo busca en la web, en la mayoría de los casos debería encontrarlo fácilmente.

5.3. Ofrecer ayuda

Si encuentra un error abierto que no está asignado a nadie y está en situación de corregirlo, debería añadir un comentario con su solución. Asegúrese de incluir tanta información como sea posible: ¿bajo qué circunstancias ocurre el error? ¿cómo ha corregido el problema? ¿ha probado la solución?

Si no se ha rellenado ningún informe de error, puede crear uno. Lo que debe tener en cuenta es lo siguiente: ¿es la incidencia tan pequeña que simplemente pedir que alguien la confirme es suficiente? ¿ha podido únicamente corregir parcialmente la incidencia y desea al menos compartir su parte?

Es bueno poder ofrecer ayuda y con toda seguridad será apreciada.

5.4. Corregir la incidencia

Para este ejemplo concreto es suficiente con buscar en la web bumprace y encontrar su página web. asegúrese de que es un sitio que está vivo y no solo un catálogo de software. http://www.linux-games.com/bumprace/ tiene pinta de ser el lugar apropiado.

Para afrontar la incidencia en el paquete fuente, necesitamos antes el código fuente, que puede ser obtenido fácilmente ejecuntando:

bzr branch ubuntu:bumprace

Si ha leído antes sobre la visión general del directorio de Debian (the Debian Directory Overview), podría recordar que la página web para un paquete se indica en la primera parte del archivo debian/control, la sección que comienza con Source:.

Así que lo siguiente que hacemos es ejecutar:

cd bumprace

y editar debian/control para añadir Homepage: http://www.linux-games.com/bumprace/. Al final de la primera sección debería ser un buen lugar. Una vez que lo haya hecho, guarde el archivo.

Si ahora ejecuta:

bzr diff

debería ver algo como esto:

=== 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

Este diff es bastante simple de comprender. El + indica una línea que ha sido añadida. En nuestros caso se ha añadido justo antes de la segunda sección, comenzado con Package, lo que indica un paquete binario resultante.

5.5. Documentar la solución

Es importante explicar a sus compañeros desarrolladores lo que hizo exactamente. Si ejecuta:

dch -i

esto iniciará un editor con una entrada modelo del registro de cambios (changelog) que solo tiene que rellenar. En nuestro caso bastaría algo como debian/control: Added project's homepage. (debian/control: añadida página web del proyecto). A continuación guarde el archivo. Para comprobar nuevamente que ha funcionado, ejecute:

bzr diff debian/changelog

y verá algo como esto:

=== 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)

Algunas consideraciones adicionales:

  • Si tiene una referencia a un error en Launchpad que ha sido corregido por la incidencia, añada (LP: #<bug number>) a la línea de entrada del changelog, por ejemplo (LP: #123456).

  • Si quiere hacer que su corrección se incluya en Debian, la sintaxis para un bug de Debian es (Closes: #<bug number>), por ejemplo: (Closes: #123456).

  • Si es una referencia a un error aguas arriba o de Debian o a una discusión en una lista de correo, menciónelo también.

  • Intente cortar las líneas a 80 caracteres.

  • Intente ser específico, no es un ensayo, pero describa lo suficiente para que cualquiera (que no haya mirando la incidencia en detalle) pueda comprenderlo.

  • Mencione cómo y dónde corrigió la incidencia.

5.6. Probar la solución

Para probar la corrección necesita configurar su entorno de desarrollo (have your development environment set up), luego compilar el paquete, instalarlo y verificar que se ha solucionado el problema. En nuestro caso sería:

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

En el primer paso compilamos el paquete fuente desde la rama, y luego lo compilamos usando pbuilder, luego inspeccionamos el paquete resultante para comprobar si el campo «Homepage» (página web) se ha añadido correctamente.

Nota

En muchos casos tendrá que instalar de verdad el paquete para asegurarse de que funciona como se espera. En nuestro caso es mucho más fácil. Si la compilación tuvo éxito, encontrará los paquetes binarios en ~/pbuilder/<release>_result. Instálelos mediante sudo dpkg -i <package>.deb o haciendo doble clic sobre ellos en el administrador de archivos.

Como hemos verificado, el problema está resuelto, así que el siguiente paso es compartir nuestra solución con el resto del mundo.

5.7. Conseguir que se incluya la corrección

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.

En nuestro caso establecimos que tenemos un problema con el empaquetado, tanto en Ubuntu como en Debian. Como Ubuntu se basa en Debian, enviaremos la corrección a Debian. Una vez que se incluya ahí, será recogida por Ubuntu en algún momento. La incidencia en nuestro tutorial claramente es no crítica, así que este enfoque tiene sentido. Si fuera importante corregir la incidencia cuanto antes, necesitará enviar la corrección a varios registros de errores, suponiendo que la incidencia afecte a todas las partes en cuestión.

Para enviar el parche a Debian, simplemente ejecute:

submittodebian

Esto le llevará por una serie de pasos para asegurarse de que el error termina en el lugar adecuado. Asegúrese de revisar de nuevo el archivo de differencias (diff) para tener certeza de que no incluye cambios aleatorios que haya realizado anteriormente.

La comunicación es importante, así que cuando añada algo más de descripción a la petición de inclusión, sea amigable y explíquelo bien.

Si todo ha ido bien debería recibir un correo desde el sistema de registro de errores de Debian con más información. Esto podría llevar unos minutos.

Nota

Si el problema está solo en Ubuntu, debería considerar pedir que lo revisen y lo patrocinen (Seeking Review and Sponsorship) para que se incluya la corrección.

5.8. Consideraciones adicionales:

Si encuentra un paquete y existen un par de cosas triviales que puede corregir al mismo tiempo, hágalo. Esto acelerará su revisión e inclusión.

Si hay varias cosas importantes que quiera arreglar, sería recomendable enviar parches individuales o peticiones de integración. Si se han rellenado errores independientes para las incidencias, lo hace incluso más fácil.