Nota: La página original es más nueva que esta traducción.

Red autocompiladora

La red autocompiladora es un desarrollo de Debian que ayuda a incrementar la velocidad de las recompilaciones de paquetes para todas las arquitecturas en las que se puede utilizar actualmente por Debian. Esta red está constituida por varias máquinas que usan un paquete de software específico denominado buildd para coger los paquetes del repositorio de Debian y reconstruirlos para la arquitectura que se requiera.

¿Por qué se necesita la red autocompiladora?

La distribución Debian soporta en realidad unas pocas arquitecturas, pero los responsables de los paquetes generalmente solo compilan versiones binarias para una sola arquitectura (en general i386). Los desarrolladores para otras arquitecturas tienen que vigilar cuando hay nuevas versiones y recompilarlos si quieren permanecer actualizados con la distribución de Intel.

En el momento que empezó Debian/m68k (la primera adaptación distinta de la arquitectura Intel), todo esto se hizo manualmente: los desarrolladores miraban los nuevos paquetes en la lista de correo de envíos y cogían algunos de ellos para construirlos. La coordinación para que ningún paquete se construya dos veces por personas distintas se hacía anunciándolo en una lista de correo. Es obvio que este procedimiento es propenso al error y consume mucho tiempo. Esta fue, sin embargo, la forma usual de mantener las distribuciones no i386 actualizadas durante mucho tiempo.

El demonio de construcción del sistema automatiza la mayor parte de este proceso. Consiste en un conjunto de guiones (escritos en Perl y Python) que se han mejorado con el tiempo para ayudar a los que hacen adaptaciones con varias tareas. Finalmente han evolucionado en un sistema que puede mantener las distribuciones no i386 de Debian actualizadas casi automáticamente.

¿Como funciona buildd?

Buildd es el nombre que se da normalmente al software que utiliza la red autocompiladora, pero en realidad se compone de diferentes partes:

wanna-build
una herramienta que ayuda a coordinar la (re)construcción de paquetes a través de una base de datos que mantiene una lista de paquetes y su estado. Hay una base de datos central por arquitectura que almacena los estados, versiones, y alguna otra información de los paquetes.
buildd
un demonio que comprueba periódicamente la base de datos mantenida por wanna-build y llama a sbuild para construir los paquetes. Intenta mantener un seguimiento de las construcciones satisfactorias y fallidas, y también enviará los paquetes una vez que el administrador haya dado el visto bueno al registro de construcciones.
sbuild
es responsable de la compilación real de los paquetes en entornos enjaulados aislados. Principalmente usa herramientas estándar de Debian para esto, pero también tiene cuidado de las dependencias de las fuentes y algunas otras rarezas menores.
quinn-diff
Alimenta la base de datos de wanna-build con paquetes nuevos. Compara las versiones disponibles de los paquetes de dos arquitecturas y saca las diferencias (comparando los archivos Sources y Packages). Más información sobre quinn-diff está disponible aquí.
andrea
Una herramienta que genera algunas dependencias de las fuentes automáticamente y fusiona estos datos con datos añadidos manualmente.

Todas estas partes operan juntas para hacer que la red constructora funciona.

¿Qué tiene que hacer un desarrollador de Debian?

Realmente, un desarrollador medio de Debian no necesita usar explícitamente la red buildd. Cuando envíe un paquete al repositorio (binario compilado para una determinada arquitectura) se añadirá a la base de datos para todas las arquitecturas (en estado Needs-Build). Las máquinas de construcción pedirán a la base de datos de construcciones paquetes en este estado, y de forma rutinaria tomarán los paquetes de esa lista. Esta está priorizada por el estado de compilación previo, prioridad, sección y finalmente nombre del paquete.

Si la construcción del paquete es satisfactoria para todas las arquitecturas, el responsable no tendrá que hacer nada. Todos esos paquetes binarios se enviarán a la arquitectura del sitio principal. Si la construcción no es satisfactoria el paquete entrará en un estado especial (Failed o Dep-Wait, si depende de las dependencias de una construcción específica que no están disponibles). Los administradores de la autocompilación revisarán los paquetes cuya construcción falla e informarán al responsable, normalmente, abriendo un error en el sistema de seguimiento de fallos.

A veces un paquete se toma un largo período de tiempo para construirlo para una arquitectura dada y eso bloquea al paquete la entrada en «testing». Desafortunadamente, el paquete necesitará esperar hasta que una máquina lo escoja. Los administradores de buildd no aceptarán peticiones para acelerar la construcción de un paquete ya que la lista de prioridad ya está establecida.

Puede comprobar el estado de los diferentes intentos de buildd con los paquetes que pertenecen a un responsable dado revisando los registros de buildd. Estos registros también están enlazados desde la Panorámica de Responsables de Paquetes.

Para más información sobre los diferentes estados en que puede estar un paquete, por favor lea los estados de wanna-build.

¿Dónde puedo encontrar información adicional?

Por supuesto, la documentación y el código fuente disponible para las distintas herramientas son la mejor manera de averiguar como funciona la red buildd. Adicionalmente la sección Adaptar y ser adaptado de la Referencia de desarrolladores de Debian proporciona información complementaria sobre como funciona y también algo de información sobre constructores de paquetes y herramientas de adaptación que están involucrados en el proceso de configuración y mantenimiento de la red buildd.

Hay algunas estadísticas disponibles de la red autocompiladora en la página de estadísticas de buildd.

¿Cómo puedo configurar mi propio nodo autocompilador?

Hay varias razones por las que un desarrollador (o usuario) puede querer configurar y ejecutar un autocompilador:

Puede leer más información sobre cómo puede configurar un autocompilador.

Contactar con los administradores de buildd

Se puede contactar con los administradores de los buildds de una arquitectura en particular en arquitectura@buildd.debian.org, por ejemplo i386@buildd.debian.org.

Los nombres individuales de los administradores de buildds también se pueden encontrar en www.buildd.net. Elija una arqutectura y una distribución para ver la disponibilidad de los buildds y sus administradores.


Esta introducción a la red autocompiladora se escribió con aportaciones y partes proporcionadas de Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine y Javier Fernández-Sanguino.