Serie: Introducción al Desarrollo de Ubuntu – Parte 3

Este es el tercer artículo de una serie que explica los conceptos básicos del desarrollo de Ubuntu de una manera que no requiere una gran cantidad de conocimientos previos y analiza conceptos, herramientas, procesos e infraestructura paso a paso. Si le gusta el artículo o tiene preguntas o encuentra errores, deje un comentario.

Muchas gracias a la Guía de empaquetado de Ubuntu equipo por su trabajo en esto!

Arreglando un error en Ubuntu

Introducción

Si siguió las instrucciones para prepárate para el desarrollo de Ubuntudeberías estar todo listo y listo para comenzar.

Como puede ver en la imagen de arriba, no hay sorpresas en el proceso de corrección de errores en Ubuntu: encontró un problema, obtiene el código, trabaja en la solución, lo prueba, envía sus cambios a Launchpad y solicita que se ser revisados ​​y fusionados. En esta guía repasaremos todos los pasos necesarios uno por uno.

Encontrar el problema

Hay muchas formas diferentes de encontrar cosas en las que trabajar. Podría ser un informe de error que usted mismo esté encontrando (lo que le brinda una buena oportunidad para probar la solución) o un problema que haya notado en otro lugar, tal vez en un informe de error.

Cosecha es donde realizamos un seguimiento de varias listas de TODO relacionadas con el desarrollo de Ubuntu. Enumera errores que ya se solucionaron en Debian, enumera errores pequeños (los llamamos 'bitesize'), y así sucesivamente. Compruébalo y encuentra tu primer error en el que trabajar.

Averiguar qué arreglar

Si no conoce el paquete fuente que contiene el código que tiene el problema, pero sí conoce la ruta al programa afectado en su sistema, puede descubrir el paquete fuente en el que necesitará trabajar.

Digamos que encontró un error en Tomboy, una aplicación de escritorio para tomar notas. La aplicación Tomboy se puede iniciar ejecutando /usr/bin/tomboy en la línea de comando. Para encontrar el paquete binario que contiene esta aplicación, use este comando:

$ apt-file find /usr/bin/tomboy

Esto imprimiría:

tomboy: /usr/bin/tomboy

Tenga en cuenta que la parte que precede a los dos puntos es el nombre del paquete binario. A menudo ocurre que el paquete fuente y el paquete binario tendrán nombres diferentes. Esto es más común cuando se utiliza un único paquete fuente para crear varios paquetes binarios diferentes. Para encontrar el paquete fuente de un paquete binario en particular, escriba:

$ apt-cache showsrc tomboy | grep ^Package:
Package: tomboy
$ apt-cache showsrc python-vigra | grep ^Package:
Package: libvigraimpex

Obteniendo el código

Una vez que sepa en qué paquete fuente trabajar, querrá obtener una copia del código en su sistema para poder depurarlo. En el desarrollo distribuido de Ubuntu esto se hace mediante ramificar el paquete fuente rama correspondiente al paquete fuente. Launchpad mantiene ramas de paquetes fuente para todos los paquetes en Ubuntu.

Una vez que tenga una rama local del paquete fuente, puede investigar el error, crear una solución y cargar la solución propuesta en Launchpad, en forma de una rama de Bazaar. Cuando esté satisfecho con su solución, podrá enviar una propuesta de fusiónque solicita a otros desarrolladores de Ubuntu que revisen y aprueben su cambio. Si están de acuerdo con sus cambios, un desarrollador de Ubuntu cargará la nueva versión del paquete en Ubuntu para que todos se beneficien de su excelente solución y usted obtenga un poco de crédito. ¡Ahora estás en camino de convertirte en desarrollador de Ubuntu!

Describiremos detalles específicos sobre cómo bifurcar el código, implementar su solución y solicitar una revisión en las siguientes secciones.

Trabaja en una solución

Hay libros completos escritos sobre cómo encontrar errores, corregirlos, probarlos, etc. Si es completamente nuevo en la programación, intente corregir primero errores sencillos, como errores tipográficos obvios. Intente mantener los cambios lo más mínimo posible y documente sus cambios y suposiciones con claridad.

Antes de trabajar usted mismo en una solución, asegúrese de investigar si nadie más lo ha solucionado ya o está trabajando actualmente en una solución. Buenas fuentes para verificar son:

  • Rastreador de errores upstream (y Debian) (errores abiertos y cerrados),
  • Es posible que el historial de revisiones ascendentes (o una versión más reciente) haya solucionado el problema,
  • errores o cargas de paquetes de Debian u otras distribuciones.

Ahora desea crear un parche que incluya la solución. El comando edit-patch es una forma sencilla de agregar un parche a un paquete. Correr:

$ edit-patch 99-new-patch

Esto copiará el paquete a un directorio temporal. Ahora puede editar archivos con un editor de texto o aplicar parches desde arriba, por ejemplo:

$ patch -p1 < ../bugfix.patch

Después de editar el archivo, escriba salir o presione control-d para salir del shell temporal. El nuevo parche se habrá agregado a debian/patches.

Probando la solución

Para crear un paquete de prueba con sus cambios, ejecute estos comandos:

$ bzr bd -- -S -us -uc
$ pbuilder-dist <release> build ../<package>_<version>.dsc

Esto creará un paquete fuente a partir del contenido de la rama (-us -uc simplemente omitirá el paso para firmar el paquete fuente) y pbuilder-dist creará el paquete desde la fuente para cualquier versión que elija.

Una vez que la compilación sea exitosa, instale el paquete desde ~/pbuilder/_result/ (usando sudo dpkg -i _.deb). Luego pruebe para ver si el error está solucionado.

Documentar la solución

Es muy importante documentar su cambio lo suficiente para que los desarrolladores que revisen el código en el futuro no tengan que adivinar cuál fue su razonamiento y cuáles fueron sus suposiciones. Cada fuente de paquetes de Debian y Ubuntu incluye debian/changelog, donde se rastrean los cambios de cada paquete cargado.

La forma más sencilla de actualizar esto es ejecutar:

$ dch -i

Esto agregará una entrada de registro de cambios estándar y ejecutará un editor donde podrá completar los espacios en blanco. Un ejemplo de esto podría ser:

specialpackage (1.2-3ubuntu4) natty; urgency=low

  * debian/control: updated description to include frobnicator (LP: #123456)

 -- Emma Adams <[email protected]>  Sat, 17 Jul 2010 02:53:39 +0200

dch ya debería completar la primera y la última línea de dicha entrada del registro de cambios. La línea 1 consta del nombre del paquete fuente, el número de versión, en qué versión de Ubuntu está cargado y la urgencia (que casi siempre es “baja”). La última línea siempre contiene el nombre, la dirección de correo electrónico y la marca de tiempo (en RFC 5322 formato) del cambio.

Dejando eso de lado, centrémonos en la entrada del registro de cambios en sí: es muy importante documentar:

  1. donde se hizo el cambio
  2. que fue cambiado
  3. donde ocurrió la discusión del cambio

En nuestro (muy escaso) ejemplo, el último punto está cubierto por (LP: #123456), que se refiere al error 123456 de Launchpad. Los informes de errores o los hilos o especificaciones de las listas de correo suelen ser una buena información para proporcionar como justificación de un cambio. Como beneficio adicional, si usa la notación LP: # para los errores de Launchpad, el error se cerrará automáticamente cuando el paquete se cargue en Ubuntu.

Confirmando la solución

Con la entrada del registro de cambios escrita y guardada, simplemente puede ejecutar:

bzr commit

y el cambio se confirmará (localmente) con su entrada del registro de cambios como un mensaje de confirmación.

Para enviarlo a Launchpad, como nombre de rama remota, debe ceñirse a la siguiente nomenclatura:

lp:~<yourlpid>/ubuntu/<release>/<package>/<branchname>

Esto podría ser por ejemplo:

lp:~emmaadams/ubuntu/natty/specialpackage/fix-for-123456

Entonces, si simplemente ejecutas:

bzr push lp:~emmaadams/ubuntu/natty/specialpackage/fix-for-123456
bzr lp-open

deberías estar todo listo. El comando push debería enviarlo a Launchpad y el segundo comando abrirá la página Launchpad de la rama remota en su navegador. Allí busque el enlace “(+) Proponer fusión”, haga clic en él para que alguien revise el cambio y lo incluya en Ubuntu.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top