Guía del nuevo desarrollador de Debian
Notas al pie

1

El documento asume que estás utilizando la versión squeeze. Si quieres utilizar este documento con la versión lenny, debes instalar (como mínimo) los paquetes dpkg y debhelper.

2

Hay varios paquetes similares pero más específicos como dh-make-perl, dh-make-php, etc.

3

N. del t.: hay una cierta ambigüedad en la traducción de «maintainer» por desarrollador puesto que se puede confundir con la traducción de «Debian Developer» (desarrollador que pertenece al proyecto) y de «upstream maintainer» (desarrollador del programa original).

4

N. de t.: el original utiliza el acrónimo inglés RTFM (traducido como LEJM) que es más «expresivo».

5

Dicho esto, hay, por supuesto, nuevos programas que vale la pena empaquetar para Debian.

6

N. del T.: el inglés es el idioma vehicular de Debian. Debes utilizar este idioma en los mensajes que envíes a las listas de correo (aun cuando sepas que el destinatario hable el español). No obstante, hay listas de correos especificas para muchos idiomas. Puedes ver las listas actuales en http://lists.debian.org/. También te será de utilidad leer http://www.debian.org/MailingLists/.

7

Puedes identificar el formato de archivo utilizando la herramienta file cuando no es suficiente con la extensión de fichero.

8

Ten en cuenta que el programa ya ha sido empaquetado previamente. La versión actual 0.1.5.3 ha cambiado sustancialmente de la versión 0.9.12 que se utiliza en los ejemplos mostrados a continuación.

9

Véase Autotools Tutorial y /usr/share/doc/autotools-dev/README.Debian.gz.

10

La versión del programa puede compararse ejecutando en el terminal dpkg --compare-versions ver1 op ver2. Véase dpkg(1) manpage.

11

El texto mostrado a continuación da por supuesto que estás ejecutando Bash como tu intérprete de línea de órdenes. Si utilizas otros intérpretes, como Z shell, deberás utilizar sus correspondientes ficheros de configuración en lugar de ~/.bashrc.

12

Si el archivo del código fuente original ya contiene un directorio debian con su contenido, ejecuta la orden dh_make con la opción --addmissing. Así se actualizará el contenido aportado por el autor para tu paquete Debian.

13

Se ofrecen varias opciones aquí: "s" para un binario, "i" para un paquete independiente de la arquitectura (sólo código fuente o bien documentación), "m" para más de un binario, "l" para una biblioteca, "k" para un módulo del núcleo («kernel»), "n" para un parche del núcleo, y "b" para paquetes «cdbs«. Este documento se centra en el uso del paquete debhelper con la orden dh para la creación de paquetes con un binario y trata solo parcialmente su uso en la creación de paquetes independientes de la arquitectura y con más de un binario. El paquete cdbs ofrece guiones alternativos a la orden dh y su uso queda fuera de este documento.

14

Para deshabilitar la configuración ejecute el programa quilt con la opción "quilt --quiltrc /dev/null ...".

15

El directorio debian/patches debería haberse creado en la anterior ejecución de dh_make. Sólo debes crearlo si no existe o bien si estas actualizando un paquete.

16

Para paquetes con más de un archivo binario, la orden dh_auto_install utiliza como directorio temporal debian/tmp mientras que la orden dh_install con la ayuda de los archivos debian/paquete-1.install y debian/paquete-2.install distribuirá el contenido del directorio debian/tmp en los directorios temporales debian/paquete-1 y debian/package-2 para construir paquetes *.deb para más de un binario.

17

Se trata solo de un ejemplo del contenido del archivo Makefile. Si el archivo Makefile se construye con la orden ./configure, el procedimiento correcto es ejecutar ./configure desde la orden dh_auto_configure con las opciones predeterminadas incluyendo --prefix=/usr.

18

El autor es consciente que este no es el mejor ejemplo ahora que el paquete libncurses incluye un enlace simbólico libcurses.so pero no tenia a mano un ejemplo mejor. Cualquier sugerencia será bienvenida :-)

19

Este caso esta documentado en Debian Policy Manual, Footnotes 48. Esto se debe al funcionamiento de dpkg-buildpackage, no al uso de la orden dh en el archivo debian/rules. Esto también se aplica al «auto build system for Ubuntu».

20

N. del T.: estas descripciones van en inglés. Aún así hay un proyecto en marcha para facilitar la traducción de las traducciones (http://www.debian.org/intl/l10n/ddtp.es.html).

21

N. del T.: las normas actuales de Debian indican que los documentos aquí citados estén escritos en inglés, al ser el idioma oficial del proyecto, por lo que no se traducen en este documento. Si no estas familiarizado con el texto de las licencias, tal vez deberías leerlas. Encontrarás las versiones originales en http://www.gnu.org/licenses/licenses.es.html y las traducciones en http://www.gnu.org/licenses/translations.es.html.

22

Muchas personas utilizan un nombre de distribución erróneo como UNRELEASED para prevenir que el paquete sea transferido al repositorio accidentalmente al actualizar un sistema VCS compartido.

23

Este objetivo es utilizado por dpkg-buildpackage como en Reconstrucción completa, Sección 6.1.

24

Este objetivo es utilizado por dpkg-buildpackage -B como en Autobuilder, Sección 6.2.

25

Este objetivo es utilizado por dpkg-buildpackage -A.

26

Aquí se utilizan las nuevas funciones V7 de debhelper que se explican en Not Your Grandpa's Debhelper presentadas en la Debconf9 por el autor de debhelper. En lenny, dh_make construía un archivo rules más complejo con el listado de todas las órdenes dh_* necesarias para cada objetivo y los mantenía en el estado del empaquetado inicial. La nueva orden dh es simple y nos libera de esta restricción. Aún así, es posible personalizar el archivo con objetivos override_dh_*. Véase Personalización del archivo rules, Sección 4.4.3. Se basa únicamente en el paquete debhelper y no se debe confundir con la construcción de paquetes ligada al paquete cdbs.

27

Puedes comprobar las secuencias de órdenes dh_* invocadas por cada objetivo ejecutando dh --no-act objetivo o bien debian/rules -- '--no-act objetivo' sin que se ejecuten realmente.

28

Se asume que el paquete python-support está instalado en el sistema.

29

Para una descripción completa de la función de cada dh_* y de sus opciones, lee los manuales respectivos así como la documentación de debhelper.

30

La orden permite otros sistemas de compilación como setup.py y que pueden listarse con la ejecución de dh_auto_build --list desde el directorio de las fuentes del paquete.

31

En realidad busca el primero de los objetivos test o check en el archivo Makefile y lo ejecuta.

32

Si un paquete instala el archivo /usr/share/perl5/Debian/Debhelper/Sequence/nombre_archivo.pm puedes activar la función adaptada con dh --with nombre_archivo $@.

33

Es preferible el uso de la orden dh_pysupport respecto a la orden dh_pycentral. No uses la orden dh_python.

34

N. de t.:«Dynamic Kernel Module Support» es un entorno que permite la compilación de módulos del núcleo («kernel») de Linux

35

En lenny, cuando querías cambiar el comportamiento de un programa dh_* tenías que encontrar la línea adecuada en el archivo rules y cambiarla.

36

El paquete gentoo utiliza el sistema de compilación GNU, también conocido por «Autotools». Véase http://es.wikipedia.org/wiki/GNU_build_system.

37

dh_auto_build sin argumentos ejecutará el primer objetivo del archivo Makefile.

38

Los archivos debian/changelog y debian/NEWS siempre se instalan automáticamente. También se busca el archivo de cambios del autor para cambiar el nombre a minúsculas y por su coincidencia con changelog, changes, changelog.txt, y changes.txt.

39

Esto reemplaza la orden obsoleta dh_movefiles(1) que se configuraba con el archivo files.

40

Si el programa no tiene página info pero contiene archivos de documentación en el directorio /usr/share/package, deberás editar manualmente la página de manual construida por help2man.

41

Aunque aquí he utilizado la expresión «Bash» abreviada {post|pre}{inst|rm} para referirme a estos archivos, te recomiendo que uses la forma POSIX («non-Bash») pura para estos guiones del desarrollador de forma que conserven el mayor grado de compatibilidad.

42

Pista de t.: conéctate a Internet, e intenta ejecutar el programa «uscan» en el directorio donde has creado el fichero. Consulta la página de manual para más detalles.

43

Véase DebSrc3.0 para un resumen informativo sobre los formatos 3.0 (quilt) y 3.0 (native).

44

Actualmente, este nuevo formato también permite trabajar con múltiples archivos «tar» fuente y otros sistemas de compresión. Estas funciones están fuera del objetivo de este documento.

45

Se han propuesto y se están utilizando otros métodos de aplicación de los parches en Debian. El sistema quilt es el preferido. Otros sistemas son dpatch, dbs, cdbs, etc. La mayoría de ellos conservan los parches en archivos en el directorio debian/patches.

46

Si has solicitado a un patrocinador que transfiera el paquete al repositorio, este sistema de separación y documentación de los cambios es muy importante para facilitar la revisión del paquete por el que patrocina el paquete.

47

Puedes evitar la aplicación automática de las modificaciones por quilt en los paquetes con formato 3.0 (quilt) al final de la extracción con la opción --skip-patches. También puedes deshacer las modificaciones al finalizar la extracción con la ejecución de quilt pop -a.

48

El funcionamiento del sistema actual de compilación automática es más complicado que lo expuesto en este documento. Muchos detalles quedan fuera de los objetivos de este documento.

49

Contrariamente a modo de funcionamiento del paquete pbuilder (que se tratará más adelante), el entorno chroot del paquete sbuild utilizado por el sistema automático no tiene una instalación mínima de paquetes del sistema y puede dejar muchos paquetes instalados.

50

Dado que el paquete pbuilder está evolucionando, debería comprobar la situación de la configuración consultando la última documentación oficial disponible.

51

Se supone que la variable de entorno HOOKDIR="/var/cache/pbuilder/hooks" ya está configurada. Puedes consultar otros ejemplos en /usr/share/doc/pbuilder/examples.

52

Hay algunas restricciones para estas actualizaciones de tu paquete stable.

53

Aquí tienes algunos recursos disponibles en la red, dirigidos a usuarios expertos:

N.de t.: los títulos están traducidos pero los documentos están en inglés.

54

No es necesario añadir la opción -i -I --show-overrides si la has incluido en la configuración en /etc/devscripts.conf o ~/.devscripts según se explicó en La orden debuild, Sección 6.4.

55

Tal vez el paquete dput tenga más funcionalidades y sea más popular. Utiliza el archivo /etc/dput para la configuración global y el archivo ~/.dput.cf para la configuración del usuario. También incorpora la asistencia para Ubuntu.

56

Véase ftp://ftp.upload.debian.org/pub/UploadQueue/README. Como alternativa, puedes usar la orden dcut del paquete dput.

57

Para escribir la fecha y hora en el formato requerido, debes utilizar LANG=C date -R.

58

Si la versión anterior del paquete está empaquetado en el antiguo formato 1.0, puedes hacer lo mismo ejecutando zcat /ruta/a/nombre_paquete_versión_anterior.diff.gz|patch -p1 desde el directorio de las fuentes de la nueva versión.

59

Si la orden uscan descargar las fuentes pero no ejecuta la orden uupdate, debes corregir el archivo debian/watch añadiendo debian uupdate al final de la URL del archivo.

60

Si quien patrocina tu paquete u otros desarrolladores hacen objeciones a la actualización del formato del paquete, no vale la pena empeñarse en argumentar a favor. Hay otras cosas más importantes que atender.

61

En el paquete cdbs (versión 0.4.74), hay algunos comentarios negativos sobre el archivo rules construido por la orden dh_make al utilizar sistemas distintos a cdbs. No te preocupes. Esto solo afecta a la versión en lenny: entonces se generaban objetivos con una larga lista de órdenes dh_*.

62

Puedes fragmentar el archivo nombre_paquete.diff en varios archivos de parches utilizando la orden splitdiff.


Guía del nuevo desarrollador de Debian

versión 1.2.25, 2010-12-22 12:44:34 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