Ubuntu logo

Packaging Guide

3. Desarrollo distribuido de Ubuntu («Ubuntu Distributed Development», UDD) — Introducción

Esta guía se centra en el empaquetado usando el método de desarrollo distribuido de Ubuntu (UDD).

El desarrollo distribuido de Ubuntu (UDD) es una nueva técnica para desarrollar paquetes de Ubuntu que usan herramientas, procesos y flujos de trabajos similares a desarrollos de software basados en sistemas de control de versiones distribuidos (DVCS) genéricos.

3.1. Limitaciones del empaquetado tradicional

Tradicionalmente los paquetes de Ubuntu se han mantenido en archivos comprimidos tar. Un paquete fuente tradicional se compone del tar fuente de aguas arriba, un tar de «debian» (o archivo diff comprimido para paquetes más antiguos) que contiene el empaquetado y un archivo .dsc de metadatos. Para ver un paquete tradicional ejecute:

$ apt-get source kdetoys

Esto descargará el fuente de aguas arriba kdetoys_4.6.5.orig.tar.bz2, el empaquetado kdetoys_4.6.5-0ubuntu1.debian.tar.gz y los metadatos kdetoys_4.6.5-0ubuntu1~ppa1.dsc. Suponiendo que tiene instalado dpkg-dev los extraerá y le proporcionará el paquete fuente.

En empaquetado tradicional editaría esos archivos y los subiría. Sin embargo, esto le limita las oportunidades de colaborar con otros desarrolladores, los cambios deben ser pasados como archivos diff sin que exista un lugar centralizado en el que rastrearlos y dos desarrolladores no pueden hacer cambios al mismo tiempo. Así que la mayoría de los equipos han puesto sus empaquetados en un sistema de control de versiones. Esto facilita mucho que varios desarrolladores puedan trabajar juntos en el mismo paquete. Sin embargo, no hay una conexión directa entre el sistema de control de versiones y el repositorio de paquetes, así que ambos deben mantenerse sincronizados manualmente. Puesto que cada equipo trabaja en su propio sistema de control de versiones un futuro desarrollador debe primero averiguar dónde se encuentra y cómo obtener el empaquetado antes de que pueda trabajar en el paquete.

3.2. Desarrollo distribuido de Ubuntu

Con el desarrollo distribuido de Ubuntu todos los paquetes del repositorio de Ubuntu (y de Debian) se importan automáticamente en ramas Bazaar en el sitio de hospedaje de código Launchpad. Los cambios se pueden hacer directamente en eses ramas en pasos incrementales y por cualquiera con permisos para confirmar. Los cambios también se pueden hacer en ramas bifurcadas y vueltas a fusionar con propuestas de integración («merge proposals») cuando son lo suficientemente grandes para necesitar una revisión o si están realizadas por alguien que no tiene permiso de confirmar directamente.

Las ramas UDD están todas en una ubicación estándar, así que hacer una extracción es sencillo:

$ bzr branch ubuntu:kdetoys

El historial de fusiones incluye dos ramas separadas, una para el fuente de aguas arriba y otra que añade el directorio de empaquetado debian/:

$ cd kdetoys
$ bzr qlog

(esta orden usa qbzr como IGU, ejecute log en lugar de qlog para una salida por consola).

./_images/kdetoys-udd-branch.png

Esta rama UDD de kdetoys muestra el empaquetado completo para cada versión subida a Ubuntu con círculos grises y las versiones fuentes de aguas arriba con círculos verdes. Las versiones se etiquetan o con la versión de Ubuntu como 4:4.2.29-0ubuntu1 o para las ramas de aguas arriba, con su versión, como upstream-4.2.96.

Muchos paquetes de Ubuntu se basan en paquetes de Debian, UDD también importa el paquete de Debian en nuestras ramas. En la rama kdetoys anterior las versiones Debian de unstable vienen de la fusión con los círculos azules, mientras que las de Debian experimental vienen de fusiones con los círculos amarillos. Las versiones de Debian están etiquetadas con su número de versión, por ejemplo, 4:4.2.2-1.

Así que desde una rama UDD puede ver el historial completo de cambios del paquete y comparar dos versiones cualesquiera. Por ejemplo, para ver los cambios entre la versión 4.2.2 en Debian y la 4.2.2 en Ubuntu use:

$ bzr qdiff -r tag:4:4.2.2-1..tag:4:4.2.2-1ubuntu1

(esta orden usa qbzr como IGU, ejecute diff en lugar de qdiff para una salida por consola).

./_images/kdetoys-udd-diff.png

Con esto podemos ver claramente qué ha cambiado en Ubuntu comparado con Debian, lo que es muy útil.

3.3. Bazaar

Las ramas UDD usan Bazaar, como sistema de control de versiones distribuido pensado para ser fácil de usar para gente familiarizada con otros sistemas populares como Subversion, pero ofreciendo la potencia de Git.

To do packaging with UDD you will need to know the basics of how to use Bazaar to manage files. For an introduction to Bazaar see the Bazaar Five Minute Tutorial and the Bazaar Users Guide.

3.4. Limitaciones del UDD

El desarrollo distribuido de Ubuntu es un nuevo método para trabajar con paquetes de Ubuntu. Actualmente tiene algunas limitaciones importantes:

  • Realizar una bifurcación completa con historial puede suponer mucho tiempo y recursos d ered. Puede resultar más rápido realizar una extracción ligera bzr checkout --lightweight ubuntu:kdetoys pero esto necesitará de acceso a la red para cualquier operación de bzr posterior.

  • Trabajar con parches es engorroso. Los parches se pueden considerar como un sistema de control de versiones bifucardo, así que se termina con un RCS sobre otro RCS.

  • No hay manera de construir directamente desde las ramas. Necesita crear un paquete fuente y subirlo.

  • Some packages have not been successfully imported into UDD branches. Recent versions of Bazaar will automatically notify you when this is the case. You can also check the status of the package importer manually before working on a branch.

Se está trabajando en todo lo anterior y se espera que UDD se convierta en la principal forma de trabajar en paquetes de Ubuntu próximamente. Sin embargo, actualmente la mayoría de los equipos dentro de Ubuntu todavía no trabajan con ramas UUD para sus desarrollos. Puesto que las ramas UDD son lo mismos que los paquetes en el repositorio todos los equipos deberían ser capaces de aceptar fusiones contra ellas.