En un articulo anterior aprendimos como armar paquetes para cualquier distribución de manera sencilla y rápida a través de checkinstall.
Ahora lo vamos a hacer de tal manera que cumplan todas las reglas de Debian, para que el día de mañana podamos sentirnos orgullosos y ser aceptadas nuestras aplicaciones en los repositorios oficiales.
El presente documento sirve de base para poder desarrollar para Debian y cualquier distro basada en ella, como ser Ubuntu, MEPIS, Xandros, Guadalinex y Freespire.
Preparando el terreno:
Lo primero que debemos hacer es instalar las librerías y paquetes de desarrollo correspondientes:
apt-get install build-essential dh-make devscripts fakeroot
Build-essential corresponde al metapaquete que instala GNU make, gcc, libc6 y dpkg-dev. dh-make son tools que se encargan de convertir cualquier fuente tarball en una archivo que cumpla con las reglas de Debian. Devscripts son una serie de scripts útiles para el desarrollo de paquetes debian. Fakeroot nos permite compilar con cualquier usuario.
Si lo que van a desarrollar son parches conviene incluir lo siguiente:
apt-get install patch diff patchutils
En Debian hay dos aplicaciones para el chequeo de paquetes: Lintian y Linda.
Linda es mas simple de utilizar y entendible por lo tanto es la que se va a utilizar en este documento:
apt-get install linda
Como se compone un paquete?
Lo que vamos a ver ahora es que hay dentro de un paquete. Vamos a ver como esta construido.
Busquen en /var/cache/apt y elijan un paquete.
Ahora escriban en la consola:
ar -x paquete.deb
Debería mostrarles el contenido del paquete que son tres archivos: control.tar.gz, data.tar.gz, y un archivo de texto llamado debian-binary.
control.tar.gz contiene los archivos de control del paquete, scripts que se ejecutan en diferentes estados del paquete y en la remoción del mismo. También contiene la suma de control MD5 de los archivos del paquete. data.tar.gz contiene los archivos a ser instalados.
el archivo de texto debian-binary contiene la versión del formato de archivo debian. Solamente verán una linea que dice 2.0
Chequeando el paquete:
Vamos a utilizar linda contra el paquete seleccionado para ver si cumple con las reglas:
linda paquete.deb
Deberían ver una salida como la que sigue:
E: paquete; Description starts with package name.
E: paquete; Package is in section checkinstall, which is unknown.
E: paquete; Package does not contain a copyright file.
W: paquete; File /usr/share/doc/paquete/COPYING is considered to be an extra license file.
Las lineas que preceden con una E significan que estan erroneas y W significan warnings, alertas.
Armando nuestro primer paquete:
Supongamos que ya tenemos armado un directorio con un paquete source.
Nos movemos dentro de este y corremos lo siguiente:
dh_make -e usuario@dominio.com -s -n
A continuacion veran una salida asi:
Maintainer name : usuario
Email-Address : usuario@dominio.com
Date : Tue, 20 MAR 2007 11:26:03 -0700
Package Name : nombre_paquete
Version : 1.0
License : blank
Type of Package : Single
Hit
la opción -e pasa la dirección de mail introducida al script dh_make.
-s indica que vamos a armar un paquete binario unico.
-n indica que vamos a armar un paquete debian nativo.
Luego de pulsar enter se genera un nuevo directorio dentro del que estábamos denominado debian.
Antes de armar el paquete vamos a tener que editar una serie de archivos dentro de este.
Empecemos por el archivo changelog con información de la versión del paquete:
nombre_paquete (1.0-1) unstable; urgency=low
*Initial package
– usuario
Si desean ver ejemplos de changelog revisen en /usr/share/doc/ y busquen el archivo changelog.Debian.gz
También van a necesitar editar el archivo de copyright que debe ser bien claro y explicativo. Luego editar el archivo de control que contiene información de las dependencias, información del mantenedor, descripción del paquete, la prioridad del paquete, etc. Para mayor información lean el manual de políticas de debian
Otro archivo que deben editar es el de las reglas del paquete. Para mayor información lean el siguiente apartado:
http://www.us.debian.org/doc/manuals/maint-guide/ch-dreq.en.html#s-rules
Dentro del directorio debian notaran tambien que hay unos cuantos archivos con extensión .ex que son ejemplos de archivos que pueden necesitar. Dependiendo del tipo de paquete a generar pueden remover varios de estos archivos. Por ejemplo si nuestro paquete no es un demonio entonces podemos remover el archivo init.d.ex
Si el paquete que van a crear va a contener manpages entonces deben generar el archivo manpages.
Por ejemplo si van a tener dos archivos manpages paquete.1 y paqueterc.1 entonces el archivo de texto debe contener lo siguiente:
debian/paquete.1
debian/paqueterc.1
Una vez que terminamos de editar todos los archivos de nuestro paquete ya podemos pasar a la fase final.
Construyendo el paquete:
Corremos la siguiente sentencia:
debuild –linda -us -uc
Esta ultima etapa compila el source y genera el tan ansiado paquete .deb.
-us -uc le indica a debuild que no firme el paquete. Por el contrario si tenemos clave PGP no incluiremos esas opciones.
–linda indica que chequee el paquete usando linda. En caso de encontrar errores deberemos corregir lo que nos indique hasta que cumpla con todas las reglas de contrucción.
Ahora nos movemos un directorio arriba y veremos el paquete deb generado.
Lo ultimo que nos queda es probar de instalarlo corriendo la sentencia:
dpkg -i paquete.deb
ESTE TEXTO SE PUBLICA BAJO LICENCIA CREATIVE COMMONS BY-NC-SA 2.5 AR.

Por lo tanto, usted es libre de: 1) Copiarlo, distribuirlo y exhibirlo. 2) Hacer obras derivadas. Bajo las siguientes condiciones: 1) Debe dar atribución mencionando el nombre del autor y del LUG Zona Norte. En caso de las notas que no llevan firma, mencionar sólo el nombre del LUG.
2) Usted no puede usar esta obra con fines comerciales. 3) Si usted altera, transforma, o crea sobre este texto, sólo podrá distribuir la obra derivada resultante bajo una licencia idéntica a ésta.
Más detalles y texto legal de la licencia en: http://creativecommons.org/licenses/by-nc-sa/2.5/ar