next up previous
Siguiente: Las herramientas dpkg-xxxxx Superior: Creaci�n de paquetes de Anterior: Sistema de paquetes frente

Construcci�n de nuestro primer paquete

Se van a ver, a continuaci�n, los pasos y herramientas necesarios para la creaci�n de un paquete bajo un sistema Debian GNU/Linux. Se va a escoger el paquete hello pues es el que ofrece Debian para mostrar el sistema de construcci�n de paquetes, que no tiene m�s que la versi�n GNU de hello, habitual para los programadores, que se trata un simple programa que escribe "Hello world" por la salida est�ndar.

Se obtienen primero los tres ficheros fuentes del paquete Debian hello, es decir: hello_x.x.orig.tar.gz, hello_x.x-xx.diff.gz y hello_x.x-xx.dsc (donde las 'x' depender�n del n�mero de versi�n). Todos se pueden encontrar en una distribuci�n de Debian en stable/main/source/misc/.

El primero de ellos es el c�digo fuente original, el segundo un fichero con las diferencias entre el �rbol fuente original (el directorio donde se encuentra el c�digo fuente) y el �rbol fuente Debian, y el tercero es una breve descripci�n del paquete, que, como se ver� despu�s, est� firmada con PGP (Pretty Good Privacy, ver m�s abajopgp) por la persona que lo ha empaquetado y tiene un valor de control (funci�n hash MD5) de los dos ficheros anteriores para poder detectar si han sido modificados por alguien ajeno al desarrollador (�til para detectar paquetes 'troyanos').

En primer lugar se ejecutar�, con los tres ficheros en un mismo directorio, dpkg-source -x hello_x.x-xxx.dsc, que realizar� un untar del fichero original (generando la estructura de directorios del �rbol fuente original) y, posteriormente, aplicar� el programa patch para incorporar las modificaciones que se han hecho en Debian del paquete. Dentro del directorio generado, que ser� de la forma nombre_de_paquete-version, se ejecutar� dpkg-buildpackage, que, si todo sale bien (como se puede ver aqu�creahello), dejar� en el directorio anterior, un fichero hello_xxx.deb que ser� el paquete preparado para instalar.

El proceso de construcci�n del paquete lo realiza la orden dpkg-buildpackage y para ello ejecuta, por orden: dpkg-source, debian/rules (con los m�todos clean, build y binary), dpkg-shlibdeps, dpkg-gencontrol, dpkg-genchanges, y PGP, m�s adelantedpkg-x se ver� su significado aunque se pueden ver los distintos pasos in figure [*].

Figura 1: Pasos tomados para construir un paquete
\begin{figure}
\epsfig{figure=stepe.eps} \end{figure}

Es necesario hacer todo esto como root, ya que una serie de las operaciones que se ejecutan necesitan tener los privilegios de este usuario, como es el cambio de propietario de los ficheros (pasan a ser del usuario root y el grupo root generalmente). Esto puede ser un problema cuando un usuario quiera generar un paquete en un sistema en el que carece de estos privilegios. Para esto existe el programa fakeroot que hace creer al sistema que el usuario es root, esto no supone ning�n problema de seguridad porque en realidad es s�lo un enga�o para el usuario y sus aplicaciones que, en cualquier caso, no adquieren ninguno de los privilegios del superusuario.

Debian usa PGP (aunque cambiar� pronto a GPG) para certificar la autenticidad e integridad de los paquetes, ya que el sistema de inserci�n de paquetes hechos por desarrolladores de Debian es semi-autom�tico (via varios servidores de ftp an�nimo y las m�quinas de Debian) y, tambi�n es posible que personas ajenas a Debian (u otros desarrolladores de Debian) manden cambios, para, por ejemplo, arreglar errores cr�ticos. Es por tanto importante que los paquetes vayan firmados por el que hizo las modificaciones (dpkg-buildpackage llama a PGP al final) y proteger contra modificaciones del paquete que se intenten hacer una vez el maintainer ha dado su versi�n. Se firma as� el fichero .dsc que contiene una descripci�n del paquete y una ``huella'' de los ficheros anteriormente vistos, esta firma se realiza con una funci�n ``hash'' muy conocida: MD5; tambi�n se firma, si existiera, el fichero .changes que contiene las modificaciones realizadas entre una versi�n.


next up previous
Siguiente: Las herramientas dpkg-xxxxx Superior: Creaci�n de paquetes de Anterior: Sistema de paquetes frente

Download this document: [src.tar.gz][ps.gz][html.tar.gz][dvi.gz]

Congreso HispaLinux 2000