[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ siguiente ]
Este documento tratará de describir cómo se construye un paquete Debian GNU/Linux para el usuario común de Debian y para futuros desarrolladores en un lenguaje informal, y con multitud de ejemplos. Hay un antiguo dicho romano que dice, «Longum iter est per preaecepta, breve et efficax per exempla!» (¡Es un largo camino con las reglas, pero corto y eficiente con ejemplos!).
Este documento ha sido actualizado para la versión squeeze de Debian. [1]
Una de las cosas que hace a Debian una de las distribuciones más importantes del mercado es su sistema de paquetes. Aunque hay una gran cantidad de programas disponibles en forma de paquetes de Debian, algunas veces necesitarás instalar programas que no están disponible en este formato. Puede que te preguntes cómo hacer tus propios paquetes y que pienses que quizás ésta es una tarea demasiado difícil. Bueno, si eres un principiante en GNU/Linux, sí es duro, pero si eres un novato, no deberías estar leyendo esto ahora mismo. :-) Necesitas saber algo sobre programación en Unix, pero, desde luego, no tienes que ser un maestro.
Sin embargo, hay una cosa que es verdad: para crear y mantener paquetes Debian adecuadamente, necesitarás muchas horas. Para que nuestro sistema trabaje sin errores, nuestros desarrolladores necesitan ser técnicamente competentes y concienzudos.
Este documento explicará cada pequeño paso (al principio quizás irrelevantes), te ayudará a crear tu primer paquete, ganar alguna experiencia en construir próximas versiones de él, y quizás otros paquetes después.
Si quieres información complementaria sobre cómo crear paquetes lee Dónde pedir ayuda, Sección 1.4.
Las nuevas versiones de este documento están en http://www.debian.org/doc/maint-guide/
y en el paquete maint-guide
. Las traducciones (ocasionalmente no
actualizadas a la versión más reciente del original en inglés) en el paquete
maint-guide-es
.
Antes de empezar, deberías asegurarte de que tienes instalados algunos paquetes adicionales necesarios para el desarrollo. Observa que en la lista no están incluidos paquetes cuyas prioridades son «esencial» o «requerido», que se suponen ya instalados.
Los siguientes paquetes vienen en una instalación estándar de Debian, así que probablemente ya los tengas (junto con los paquetes de los que dependen). Aún así, deberías comprobarlo con «aptitude show package».
El paquete imprescindible para el desarrollo es build-essential
.
Al instalarlo, también se instalaran otros paquetes requeridos, consiguiendo
una instalación básica para la construcción de paquetes.
Para la construcción de algunos paquetes esto seria suficiente, pero hay otros paquetes que, no siendo esenciales en general para la construcción de nuevos paquetes, puede ser útil tener instalados o, incluso, necesarios para el paquete que estás construyendo:
file
- este útil programa puede determinar de qué tipo es un
fichero (véase file(1)
).
patch
- esta utilidad es muy práctica para modificar el original
de un archivo a partir de un archivo de diferencias (elaborado por el programa
diff
) produciendo un archivo parcheado (véase
patch(1)
).
perl
- Perl es uno de los lenguajes interpretados para hacer
guiones (o «scripts») más usados en los sistemas Un*x de hoy en día,
comúnmente se refiere a él como la «navaja suiza de Unix» (véase
perl(1)
).
python
- Python es otro de los lenguajes interpretados para hacer
guiones (o «scripts») en Debian debido a la combinación de su poder y
sintaxis clara (véase python(1)
).
autoconf
, automake
y autotools-dev
-
muchos programas nuevos usan ficheros de configuración y ficheros «Makefile»
que se procesan con la ayuda de programas como éstos (véase «info
autoconf», «info automake»). El paquete autotools-dev
permite
mantener versiones actualizadas de los archivos autoconf y automake y tiene
documentación para usar eficientemente ese tipo de archivos.
dh-make
y debhelper
- dh-make es necesario para crear
el esqueleto de nuestro paquete ejemplo, y se usarán algunas de las
herramientas de debhelper
para crear los paquetes. Aunque no son
imprescindibles para la creación de paquetes se recomiendan
encarecidamente para nuevos desarrolladores. Hacen el proceso
mucho más fácil al principio, y más fácil de controlar también más
adelante (véase dh_make(1)
, debhelper(1)
,
/usr/share/doc/debhelper/README
)[2].
devscripts
- este paquete contiene algunos guiones útiles para
los desarrolladores, pero no son necesarios para crear paquetes. Vale la pena
mirar los paquetes recomendados y sugeridos por este paquete (véase
/usr/share/doc/devscripts/README.gz
).
fakeroot
- esta utilidad te permite emular al usuario
administrador (o «root», N. del T.), lo cual es necesario para ciertas
partes del proceso de construcción (véase fakeroot(1)
).
gnupg
- herramienta que te permite firmar digitalmente
los paquetes. Esto es especialmente importante si quieres distribuir tu
paquete a otras personas, y ciertamente, tendrás que hacerlo cuando tu trabajo
vaya a incluirse en la distribución de Debian (véase gpg(1)
).
gfortran
- el compilador GNU de Fortran 95, necesario si el
programa está escrito en Fortran. (véase gfortran(1)
)
gpc
- el compilador GNU de Pascal, necesario si el programa está
escrito en Pascal. Merece la pena mencionar aquí fp-compiler
, un
compilador libre de Pascal, que también es bueno en esta tarea (véase
gpc(1)
, ppc386(1)
).
xutils-dev
- algunos programas, normalmente aquellos hechos para
X11, también usan programas para generar Makefiles ejecutando un conjunto de
funciones de macro (véase imake(1)
, xmkmf(1)
).
lintian
- este es el programa que comprueba los paquetes de
Debian, puede indicarte muchos de los errores comunes después de construir un
paquete, y explica los errores encontrados (véase lintian(1)
,
/usr/share/doc/lintian/lintian.html/index.html
).
pbuilder
- este paquete contiene programas para crear y mantener
entornos chroot
. Al construir paquetes Debian en estos entornos
chroot
se verifica que las dependencias son las adecuadas y se
evitan fallos al construir desde el código fuente (FTBFS Fails To Build From
Source) (véase pbuilder(8)
y pdebuild(1)
).
patchutils
- este paquete contiene programas para trabajar con los
"parches" como lsdiff
, interdiff
y
filterdiff
.
quilt
- este paquete ayuda a aplicar modificaciones
("parches") y hacer el seguimiento de los cambios realizados. Aplica
las modificaciones ordenadamente en pila, y es posible aplicar, deshacer y
actualizar las modificaciones fácilmente recorriendo la pila (véase
quilt(1)
, /usr/share/doc/quilt/README.Debian
).
git
- este paquete instala el popular sistema de control de
versiones, diseñado para hacer el seguimiento de proyectos grandes con
eficacia y rapidez; se utiliza para proyectos de código libre importantes como
es el caso del kernel de Linux (véase git(1)
,
/usr/share/doc/git-doc/index.html
).
Por último, la documentación que se indica a continuación es de gran importancia y debería leerse junto con este documento:
debian-policy
- incluye la estructura y contenidos del archivo,
ciertas notas sobre el diseño del sistema operativo, el estándar de la
jerarquía del sistema de ficheros («Filesystem Hierarchy Standard», N. del
T.), y, lo más importante para ti, describe los requisitos que debe satisfacer
cada paquete para ser incluido en la distribución (véase
/usr/share/doc/debian-policy/policy.html/index.html
).
developers-reference
- para todos los temas no específicamente
relacionados con los detalles técnicos de cómo empaquetar, tales como la
estructura del archivo, cómo renombrar, abandonar, adoptar paquetes, cómo
hacer NMUs («Non-Maintainer Uploads», o envíos por personas distintas del
desarrollador, N. del T.), como gestionar los errores que los usuarios
envían, buenas prácticas de empaquetado, cómo y cuando enviar los paquetes,
etc. (véase /usr/share/doc/developers-reference/
).
Tutorial de
«Autotools»
contiene un tutorial muy bueno sobre el sistema de compilación
GNU conocido como «GNU Autotools»
cuyos componentes más
importantes son autoconf
, automake
,
libtool
y gettext
.
gnu-standards
- este paquete contiene dos documentos del proyecto
GNU: GNU
Coding Standards
, y Information for
Maintainers of GNU Software
. Aunque no se exige su cumplimiento en
Debian, son útiles como orientación y sentido común (veáse
/usr/share/doc/gnu-standards/standards.html
y
/usr/share/doc/gnu-standards/maintain.html
).
Si este documento contradice en algún aspecto al «Debian Policy Manual» o al
«Debian Developer's Reference», prevalecen estos últimos. Por favor, envíe
un informe de error del paquete maint-guide
.
Las breves descripciones dadas anteriormente sólo sirven para introducirte a lo que hace cada paquete. Antes de continuar, por favor, lee la documentación de cada programa, al menos para su uso normal. Puede parecerte algo duro ahora, pero más adelante estarás muy contento de haberla leído.
Hay dos tipos de paquetes.
paquete fuente: un paquete de fuentes es un conjunto de
archivos de código y datos que se pueden compilar y procesar obteniéndose
programas ejecutables o documentos formateados. El paquete está formado por
archivos con extensión *.orig.tar.gz
,
*.debian.tar.gz
(o *.diff.gz
), y *.dsc
.
También pueden estar formados por otros tipos de archivos y/o formatos de
compresión.
paquetes binarios: un paquete binario contiene archivos
ejecutables (ya compilados) y documentos formateados. Generalmente están
formados por archivos con extensión *.deb
de uso en instalaciones
de Debian y archivos *.udeb
para el instalador de Debian.
¡No confundas los términos «fuentes de un programa» y «paquete fuente de un programa»!
Se utilizan distintos nombres para los roles que se utilizan dentro de Debian.
autor original («upstream author»): para referirse a la persona que ha escrito el programa original.
desarrollador original («upstream maintainer»): la persona que se encarga de mantener el programa (el código fuente) en la actualidad.
empaquetador (desarrollador) [3] («maintainer»): la persona que se encarga de construir y mantener actualizados paquetes para Debian.
patrocinador: la persona (que debe ser un DD o DM, véase más adelante) que transfiere los paquetes elaborados por el desarrollador al archivo de paquetes de Debian (al repositorio de Debian) después de comprobar que el paquete cumple los requisitos exigidos.
mentor: la persona que ayuda a los desarrolladores principiantes a iniciarse en la construcción y mantenimiento de paquetes.
desarrollador de Debian (DD) («Debian Developer»): la persona que es miembro de Debian. Tiene permiso total para transferir paquetes al repositorio oficial de Debian.
Empaquetador de Debian (DM)(«Debian Maintainer»): la persona que tiene permiso limitado para transferir paquetes al repositorio oficial de Debian.
Existen distintos nombres de versiones en el entorno de Debian.
versión de las fuentes originales («upstream source version»): se utiliza el término versión.
revisión Debian («Debian revision»): para la revisión del paquete Debian se utiliza el término revisión.
versión del paquete Debian («Debian package version»): para referirse a la versión del paquete Debian se utiliza la nomenclatura que se indica a continuación.
versión para los paquetes binarios nativos de Debian y para los paquetes de código fuente.
versión-revisión para los paquetes binarios de Debian no nativos.
Para más detalles de la terminología, se aconseja leer los otros manuales de Debian.
No puedes convertirte en desarrollador oficial de Debian de la noche a la
mañana porque hace falta algo más que habilidades técnicas. No te sientas
desilusionado por esto. Aún puedes subir tu paquete, si es útil a otras
personas, como empaquetador a través de un
patrocinador o un empaquetador de Debian.
Encontrarás más información de este procedimiento en el rincón del nuevo
desarrollador de Debian
.
Ten en cuenta que no es necesario crear un paquete nuevo para poder convertirte en desarrollador oficial de Debian. Una opción para ser desarrollador oficial es contribuir al mantenimiento de los paquetes ya existentes en la distribución. Hay muchos paquetes esperando un buen empaquetador (véase Elige el programa, Sección 2.1).
Antes de realizar preguntas en alguno de los foros públicos, por favor lee los
manuales [4]. Esto incluye la
documentación ubicada en /usr/share/doc/dpkg
,
/usr/share/doc/debian
,
/usr/share/doc/autotools-dev/README.Debian.gz
,
/usr/share/doc/package/*
y los manuales de ayuda
man
/info
de cada uno de los programas mencionados en
este documento, así como la información disponible en http://nm.debian.org/
.
Construir un paquete pequeño es una buena forma de aprender los detalles del empaquetamiento. Inspeccionar paquetes bien mantenidos es la mejor forma de aprender cómo otros mantienen paquetes.
Si tienes dudas sobre empaquetado a las que no has podido encontrar respuesta
en la documentación y en el la web, puedes preguntar en la lista de correo de
Debian Mentors debian-mentors@lists.debian.org
enviando un correo a debian-mentors@lists.debian.org
.
Los desarrolladores más experimentados de Debian, te ayudarán gustosamente,
pero, por favor, ¡léete la documentación antes de preguntar!.
Consulta http://lists.debian.org/debian-mentors/
para más información sobre esta lista de correo.
Cuando recibas un aviso de fallo (sí, avisos de fallos, ¡de verdad!) sabrás
que es el momento de indagar en el Sistema de seguimiento de fallos de
Debian
y leer la documentación de allí para poder tratar los
informes de forma eficiente. Te recomiendo la lectura de la Referencia del
Desarrollador, en particular el capítulo de «Sección
5.8 - Manejo de fallos
» («Handling Bugs», N. del T.).
Si aún tienes preguntas, házlas en la lista de distribución de
Desarrolladores de Debian en debian-devel@lists.debian.org
.
Véase http://lists.debian.org/debian-devel/
para más información sobre esta lista de correo.
Aunque todo funcione bien, es el momento de cruzar los dedos. ¿Por qué? Por que en sólo unas horas (o días) usuarios de todo el mundo empezarán a usar tu paquete, y si cometiste algún error crítico centenares de usuarios furiosos de Debian te bombardearán con correos... sólo bromeaba :-)
Relájate y prepárate para recibir informes de fallos, porque hay mucho más trabajo que hacer antes de seguir completamente las Normas de Debian (una vez más lee la documentación real para más detalles). ¡Buena suerte!
[ 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-22 12:44:34 UTCjoy-mg@debian.org
jfs@debian.org
ender@debian.org
ana@debian.org
fcocuadrado@gmail.com
tangram.peces@gmail.com