Ubuntu logo

Packaging Guide

9. Combinar — Actualizar desde Debian y desde aguas arriba («Upstream»)

Combinar (o integrar) es uno de los puntos fuertes de Bazaar, y algo que se realiza de forma frecuente en el desarrollo de Ubuntu. Las actualizaciones se pueden combinar desde Debian, desde una nueva revisión aguas arriba, y desde cambios de otros desarrolladores de Ubuntu. Realizarlo en Bazaar es muy sencillo, y todo está basado en torno al comando bzr merge [1].

Mientras se encuentre en el directorio de trabajo de una rama, puede integrar una rama desde una ubicación diferente. Primero compruebe que no tiene cambios sin confirmar:

$ bzr status

Si eso le reporta cualquier cosa, entonces tendrá que confirmar los cambios, revertirlos o dejarlos de lado para volver más tarde.

9.1. Fusionar desde Debian

Después ejecute bzr merge pasándole la URL de la rama desde la que fusionar. Por ejemplo, para fusionar desde la versión del paquete de Debian Unstable_ ejecute:

$ bzr merge lp:debian/tomboy

Esto fusionará los cambios desde el último punto de integración y le dejará con cambios para revisar. Esto puede provocar algunos conflictos. Puede ver todo lo que la orden merge realizó ejecutando:

$ bzr status
$ bzr diff

Si se reportan conflictos necesitará editar esos archivos para que se vean como deben, eliminando los marcadores de conflicto. Una vez que lo haya realizado, ejecute:

$ bzr resolve
$ bzr conflicts

Esto resolverá todos los archivos conflictivos que haya corregido y luego le dirá qué más tiene hacer.

Una vez resueltos los conflictos y de que haya realizado los cambios que crea oportunos, deberá añadir una entrada en el registro de cambios (changelog) y realizará la confirmación:

$ dch -i
$ bzr commit

como se describió anteriormente.

Sin embargo, antes de realizar la confirmación, siempre es conveniente comprobar todos los paquetes de Ubuntu ejecutando:

$ bzr diff -r tag:0.6.10-5

lo que le mostrará las diferencias entre las versiones Debian (0.6.10-5) y Ubuntu (0.6.10-5ubuntu1). De forma similar puede comparar cualquier otras versiones. Para ver todas las versiones disponibles ejecute:

$ bzr tags

Después de probar y confirmar la fusión, necesitará buscar un patrocinador o subirlo al repositorio de la forma habitual.

Si va a construir el paquete fuente desde la rama fusionada, debería usar la opción -S en la orden bd. Otra cosa que querrá tener en cuenta es usar la opción --package-merge. Esto añadirá las opciones -v y -sa adecuadas al paquete fuente de forma que todas las entradas del registro de cambios (changelog) desde el último cambio de Ubuntu se incluyan en su archivo _source.changes. Por ejemplo:

$ bzr builddeb -S --package-merge

9.2. Integrar una nueva versión de aguas arriba

Cuando aguas arriba se libera una nueva versión (o quiere empaquetar una instantánea), tendrá que integrar un archivo tar en su rama.

Eso se hace mediante la orden bzr merge-upstream. Si su paquete tiene un archivo debian/watch válido, desde dentro de la rama en la que quiere realizar la integración, escriba simplemente:

$ bzr merge-upstream

Esto descargará el tar y lo integrará en su rama, añadiendo automáticamente por usted una entrada en debian/changelog. bzr-builddeb busca en el archivo debian/watch la ubicación del archivo tar de aguas arriba.

Si no dispone de un archivo debian/watch necesitará indicar la ubicación del archivo tar de aguas arriba y la versión manualmente:

$ bzr merge-upstream --version 1.2 http://example.org/releases/foo-1.2.tar.gz

La opción --version se usa para especificar la versión de aguas arriba que se está integrando, ya que la orden no es capaz de deducirlo (de momento).

El último parámetro es la ubicación del archivo tar al que se está actualizando; puede ser una ruta local de su sistema de archivos o una URI http, ftp, sftp, etc. como se muestra. La orden descargará automáticamente el archivo tar por usted.

La orden merge-upstream le dirá si se ha ejecutado con éxito o si aparecieron conflictos. En cualquiera de los casos podrá revisar los cambios antes de confirmarlos como siempre.

Si está integrando una emisión de aguas arriba en una rama Bazaar existente que no ha usado anteriormente la distribución de UDD, bzr merge-upstream fallará con un error indicando que la etiqueta de la versión anterior de aguas arriba no está disponible; la integración no se puede completar sin conocer contra qué versión base hacerlo. Para solventar el problema, cree una etiqueta en su repositorio para la última versión de aguas arriba ahí presente; por ejemplo, si la última emisión de Ubuntu fue 1.1-0ubuntu3, cree la etiqueta upstream-1.1 apuntando a la revisión bzr que desea que se use como punta de la rama de aguas arriba.

[1]

Necesitará versiones más modernas de bzr y de bzr-builddeb para que funcione la orden merge. Use las versiones de Ubuntu 12.04 (Precise) o las versiones de desarrollo del PPA bzr. Más concretamente, necesitará bzr versión 2.5 beta 5 o superior y bzr-builddeb version 2.8.1 o superior. Con versiones más antiguas, use en su lugar la orden bzr merge-package.

[2]

Para comprobar otras ramas disponibles de un paquete en Debian, visite la página de código del paquete. Por ejemplo, https://code.launchpad.net/debian/+source/tomboy