Nociones para hacer un paquete .deb partiendo de un .dsc

No soy experto empaquetando programas en archivos .deb, la extensión de paquetes que se instalan en Debian, sin embargo me ha tocado hacer algunas labores al respecto, gracias a la ayuda de Miguelangel, quien siempre me apoya en estos asuntos, logré entender algunas nociones de cómo crear el paquete .deb sin mucha complicación.

Antes que nada, se debe tener una máquina dispuesta con Debian instalado por ejemplo Debian Lenny e instalar los siguientes programas:

aptitude install devscripts pbuilder build-essential ant quilt

El paquete ant si hay algo de Java incluido.

Cada paquete trae consigo un número de paquetes adicionales como dependientes, entre los que podría mencionar lintian que se encarga de hacer chequeo del paquete al momento de compilarlo y lo compara con las políticas de Debian.

Se prepara el archivo de configuración de pbuilder, como usuario root se copia un archivo modelo:

cp /usr/share/pbuilder/pbuilderrc /etc/pbuilderrc

Algunos parámetros importantes los repositorios:

DISTRIBUTION=lenny
OTHERMIRROR="deb http://otro.repositorio.org/debian lenny main"

Se deja lo demás igual como está, lo modificado hace referencia a la versión del sistema base donde trabajará el paquete y otro repositorio que será utilizado, si tenemos más repositorios que agregar podríamos usar los siguiente:

OTHERMIRROR="deb http://otro.repositorio.org/debian lenny main | 
deb http://segundo.repositorio.org/debian lenny contrib main non-free"

Si existe un segundo archivo pbuilderrc que se puede copiar en el home de root de manera oculta para crear las variables del técnico compilador, debe estar:

vi /root/.pbuilderrc

Dentro de dicho archivo se agrega lo siguiente:

DEBEMAIL="felixurbina@email.com"
DEBFULLNAME="Félix E. Urbina"

Para que tenga efecto, se cierra la sesión de root actual en la shell y se vuelve autenticar como root. Luego cuando se compile el paquete, aparecerán dichos datos dentro de las referencias e información del paquete empaquetado a .deb.

Hecho los pasos anteriores se crea una jaula de trabajo para pbuilder de la siguiente forma:

pbuilder --create

Esto durará un tiempo. Terminada la creación de la jaula de trabajo, si partimos de las fuentes originales de un paquete ya debianizado podemos usar el archivo .dsc como base, para esto Debian utiliza una herramienta que obtiene dicho paquete, se busca el programa que será compilado desde algún servidor que ofrezca los archivos.

Es recomendable crear un directorio de trabajo donde guardar todo los paquetes que vienen con el programa:

mkdir directorio-trabajo
cd directorio-trabajo

Y se bajan todos con dget:

dget http://sitioweb.org/debian/archivo.dsc

Al descargar los archivos, extraemos las fuentes del programa:

dpkg-source -x archivo.dsc

Al ejecutar el dpkg se genera un directorio con el nombre del programa junto con la versión, algo parecido a programa-version/, se coloca el cursor en dicho directorio y se genera un nuevo archivo .dsc:

cd programa-version
debuild -S -uc -us

Generado el nuevo .dsc se utiliza el pbuilder para crear el paquete:

pbuilder --build ../programa-version.dsc

Esto realiza varios procesos que tardan dependiendo del tamaño del programa, es posible se presenten algunos errores de dependencias o incongruencias, pero es cuestión particular de cada programa y se debe resolver en el momento de acuerdo a los mensajes que se presenten.

Finalmente cuando se termina de crear todo el programa en archivo .deb, se guardan en la ruta absoluta /var/cache/pbuilder/result/, también ahí se guardan los archivos de cambio las nuevas fuentes, entre otros.

Luego veré cómo hacer paquetes a partir de los fuentes sin tener un archivo .dsc y lo publico.

Para mayor referencia en el sito oficial de Debian está toda la guía para el desarrollador Debian.

Advertisements
This entry was posted in Debian. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s