[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ siguiente ]


Guía del nuevo desarrollador de Debian
Capítulo 6 - Construir el paquete


Ahora deberíamos estar preparados para construir el paquete.


6.1 Reconstrucción completa

Para realizar correctamente la (re)compilar completa de un paquete, debes asegurarte que tienes instalados:

Después ejecuta la siguiente orden en el directorio raíz del código fuente del programa:

     $ dpkg-buildpackage

Esto hará todo lo necesario para construir los paquetes binarios y de fuentes para ti:

Lo único que se te pedirá es que escribas tu contraseña secreta de la clave GPG, dos veces.

Después de hacer todo esto, verás los siguientes archivos en el directorio superior al directorio de trabajo (~/gentoo/):

Las largas listas de números en los ficheros .dsc y .changes son las sumas MD5/SHA1/SHA256 para los ficheros. Las personas que descarguen estos ficheros pueden comprobarlos con md5sum(1), sha1sum(1) o sha256sum(1) y si los números no coinciden, sabrán que el fichero está corrupto o ha sido modificado.


6.2 Autobuilder

Debian mantiene diversas adaptaciones «ports» con la red de servidors de compilación automática que ejecuta demonios buildd en ordenadores con diferentes arquitecturas. Aunque no deberás hacer todo esto tú mismo, debes conocer el procesamiento a que se verá sometido tu paquete. Veamos cómo se procesa el paquete para compilarlo en diversas arquitecturas. [48].

Los paquetes del tipo Architecture: any, son construidos por el sistema de compilación automática. El sistema garantiza la instalación de:

A continuación se ejecuta la siguiente orden en el directorio de las fuentes:

     $ dpkg-buildpackage -B

De esta manera, se ejecuta todo lo necesario para construir el paquete binario dependiente de la arquitectura en cada arquitectura. Hace lo siguiente:

Esta es la razón por la que el paquete estará disponible para otras arquitecturas.

Aunque es necesario instalar los paquetes listados en el campo Build-Depends-indep para el empaquetamiento normal (véase Reconstrucción completa, Sección 6.1), el sistema automático de construcción no lo requiere puesto únicamente construye paquetes binarios dependientes de la arquitectura [49]. Estas diferencias entre el empaquetamiento normal y el automático determinan si los paquetes requeridos para la compilación se deben listar en el campo Build-Depends o bien en el campo Build-Depends-indep del archivo debian/control (véase El archivo control, Sección 4.1).


6.3 Incluir orig.tar.gz para la transferencia del paquete al repositorio.

Cuando se envía por primera vez al archivo, se debe incluir el archivo orig.tar.gz con las fuentes originales. Si la última entrada del último archivo de cambios (changelog) no es la primera de la versión del autor original, deberás ejecutar la orden dpkg-buildpackage con el la opción -sa para forzar la inclusión del archivo orig.tar.gz. Por otra parte, es posible excluir la inclusión del archivo orig.tar.gz con la opción -sd.


6.4 La orden debuild

Puedes automatizar aún más el proceso de construcción de paquetes con la orden debuild. Veáse debuild(1).

La personalización de la orden debuild puede hacerse a través de /etc/devscripts.conf o ~/.devscripts. Te sugiero al menos los siguientes valores:

     DEBSIGN_KEYID="Tu_ID_clave_GPG"
     DEBUILD_LINTIAN=yes
     DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"

Con estos valores, puedes construir paquetes siempre con tu clave GPG, evitando incluir componentes no deseados (facilitará que te patrocinen el paquete), e inspeccionar el paquete con la orden lintian en el modo detallado.

Por ejemplo, limpiar el código y reconstruir el paquete desde una cuenta de usuario es tan simple como:

     $ debuild

Tenga en cuenta que puede especificar la opción «-sa» de dpkg-buildpackage para incluir el fichero original orig.tar.gz como sigue:

     $ debuild -sa

Puedes eliminar los archivos generados en la compilación ejecutando:

     $ debuild clean

6.5 El paquete pbuilder

El paquete pbuilder es muy útil para conseguir un entorno de compilación limpio (chroot) donde verificar las dependencias de compilación. [50] Esto asegura una construcción limpia desde el código en los auto-compiladores de sid para las distintas arquitecturas y evita fallos de nivel de severidad serios del tipo FTBFS («Fail to Build From Source», o «fallo al construir desde la fuente », N. del T.), que son siempre de categoría RC (fallos críticos o «release critical»). Para más información del paquete Debian auto-builder consulte http://buildd.debian.org/.

Para personalizar el funcionamiento del paquete pbuilder haz lo siguiente:

Así podrás firmar los paquetes con tu clave GPG almacenada en el directorio ~/.gnupg/.

Ahora puedes inicializar el sistema local pbuilder chroot por primera vez ejecutando:

     $ sudo pbuilder create

Si ya dispones de un paquete fuente completo, ejecuta las siguientes órdenes en el directorio donde tengas los archivos nombre_paquete.orig.tar.gz, nombre_paquete.debian.tar.gz y nombre_paquete.dsc para actualizar el sistema local pbuilder chroot y, a continuación, compilar el paquete binario en él:

     $ sudo pbuilder --update
     $ sudo pbuilder --build nombre_paquete.dsc

Tenga en cuenta que puede especificar la opción «-sa» de dpkg-buildpackage para incluir el fichero original orig.tar.gz como sigue:

     $ sudo pbuilder --build --debbuildopts "-sa" nombre_paquete.dsc

Una vez finalizada la compilación, el paquete compilado estará en el directorio /var/cache/pbuilder/result/ con usuario que no será el administrador (sino tu usuario).

Si en lugar de iniciar la construcción del paquete a partir de un paquete ya construido, dispones de un directorio con las fuentes originales actualizadas, deberás ejecutar las siguientes órdenes desde el directorio de las fuentes originales (y en el que deberá estar presente el directorio debian con todo su contenido):

     $ sudo pbuilder --update
     $ pdebuild

Tenga en cuenta que puede especificar la opción «-sa» de dpkg-buildpackage para incluir el fichero original orig.tar.gz como sigue:

     $ pdebuild --debbuildopts "-sa"

Puedes «conectarte» al entorno chroot ejecutando la orden pbuilder --login --save-after-login y configurarlo para adaptarlo a tus necesidades. Este entorno puede guardarse saliendo del «shell» con ^D (Control-D).

La última versión de la orden lintian puede ejecutarse automáticamente en el entorno chroot utilizando el guión «hook» disponible en /var/cache/pbuilder/hooks/B90lintian y configurado como sigue [51]:

     #!/bin/sh
     set -e
     install_packages() {
         apt-get -y --force-yes install "$@"
         }
     install_packages lintian
     echo "+++ informe de lintian +++"
     su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes" - pbuilder
     # si quieres evitar que lintian para la construcción utiliza lo siguiente
     #su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" - pbuilder
     echo "+++ final del informe de lintian +++"

Debes tener un entorno sid actualizado para construir correctamente paquetes para sid. En realidad, al versión sid puede contener errores que no hacen recomendable la migración de tu sistema a esta versión. El paquete pbuilder te ayuda a hacer frente a esta situación.

Es posible que debas actualizar tu paquete stable después de distribuirlo para stable-proposed-updates, stable/updates, etc [52]. En algunas ocasiones, «Yo trabajo con la versión sid» puede no ser una excusa para dejar de actualizar el paquete. El paquete pbuilder te ayuda trabajar en entornos para todas las distribuciones derivadas Debian para una arquitectura determinada.

Consulta http://www.netfort.gr.jp/~dancer/software/pbuilder.html, pdebuild(1), pbuilderrc(5), y pbuilder(8).


6.6 La orden git-buildpackage y similares

Si el autor original utiliza un sistema de gestión de versiones para el código (VCS) puedes considerar utilizarlo. Así se facilita la coordinación y la selección de los parches en las fuentes. Debian dispone de varios paquetes de guiones especializados en cada tipos de VCS:

Estos paquetes ofrecen un entorno más cómodo de trabajo que la utilización «manual» de órdenes quilt para usuarios experimentados, con el objetivo de automatizar la construcción de paquetes. No se explica el uso de estas herramientas en este tutorial [53].


6.7 Reconstrucción rápida

Con un paquete grande, puede que no quieras recompilar desde cero cada vez que tocas un detalle en el fichero debian/rules. Para propósitos de prueba, puedes hacer un fichero .deb sin necesidad de recompilar las fuentes originales de esta forma:

       fakeroot debian/rules binary

O simplemente puedes comprobar si el paquete se compila con:

     $ fakeroot debian/rules build

Una vez que has terminado la puesta a punto, recuerda reconstruir el paquete siguiendo el procedimiento adecuado que está arriba. Puede que no seas capaz de enviar correctamente el paquete si intentas enviar los archivos .deb construidos de esta forma.


[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ siguiente ]


Guía del nuevo desarrollador de Debian

versión 1.2.25, 2010-12-21 14:06:56 UTC

Josip Rodin joy-mg@debian.org

Traducido por Javier Fernández-Sanguino Peña jfs@debian.org
David Martínez ender@debian.org
Ana Beatriz Guerrero López ana@debian.org
Francisco Javier Cuadrado fcocuadrado@gmail.com
Innocent De Marchi tangram.peces@gmail.com