Está en la página 1de 2

CÓMO CREAR PAQUETES DEB A PARTIR DEL CÓDIGO

FUENTE DE UN PROGRAMA

0. Introducción
Una situación bastante común que se encuentran muchos usuarios es necesitar un programa
que no esta empaquetado para su distribución favorita. Por suerte para todos, teniendo
disponible el código fuente cualquiera puede compilar por si mismo los programas, aunque
esto genera varios inconvenientes. Es fácil hacer un "make install" pero no todos los
programas soportan "make uninstall", de modo que eliminar el paquete cuando deje de ser
necesario o directamente estorbe puede ser bastante complicado.
La solución mas cómoda y eficaz en estos casos es crear paquetes deb a partir del código
fuente, y utilizar la administración de paquetes para instalarlos/actualizarlos/eliminarlos
cuando sea necesario. Esto suena bonito pero casi siempre parece mas complicado de lo que
es, sobretodo cuando se es novato. Ahí es donde entra en juego esta pagina. Voy a explicar de
forma más o menos simple, el proceso para crear paquetes de forma sencilla. Este proceso no
se puede seguir al pie de la letra, tiene que ser adaptado para cada paquete en particular, pero
sirve como plantilla general para la mayoría de programas, especialmente aquellos que se
podrían compilar siguiendo el clásico proceso "./configure && make && make install".

1. Herramientas
Para crear nuestros paquetes, vamos a utilizar unos cuantos "ayudantes" que nos hagan el
trabajo sucio, así que necesitaremos los siguientes paquetes:
* dh-make
* devscripts
* fakeroot
* build-essential

2. Debianizando
Lo primero que necesitamos es un directorio de trabajo. En este directorio acabaremos
teniendo varias cosas así que es recomendable que sea un directorio vacío. Si vamos a
preparar varios paquetes yo recomendaría usar un directorio para cada uno.
Una vez dentro del directorio de trabajo, descomprimimos las fuentes del programa a
empaquetar, así nos quedara (casi siempre) un subdirectorio con el nombre del programa.
Tenemos que comprobar que el nombre sea del tipo "nombre-versión", por ejemplo "agenda-
0.0.1". Si el nombre no corresponde lo modificaremos para que no de problemas y entraremos
en ese subdirectorio.
Ahora pasamos a lo importante, vamos a "debianizar" el árbol de fuentes ejecutando
"dh_make -e email@proveedor". Nos preguntara que tipo de paquete queremos crear,
generalmente sera "s" para programas o "l" para librerías (hay mas opciones pero esto es una
guía básica, consulta los manuales para mas detalles). Se pueden añadir las opciones "-s" o "-
l" detrás del email para responder directamente a esta pregunta.
Con esto, a menos que falle algo, tenemos hecha la debianización básica a falta de algunos
detalles y personalizaciones y ya seria posible empaquetar el programa.
Es importante tener en cuenta que en el directorio "exterior" a las fuentes (el que esta justo
por encima) se van a crear varias cosas durante el proceso que se usaran en la creación del
paquete, ¡no las eliminéis!
3. Configurando
Ahora toca configurar el paquete. La configuración se hace editando varios archivos que se
crearon al debianizar las fuentes. Todos esos archivos están dentro del directorio "debian".
Empezaremos por modificar la información del paquete, que se encuentra en el archivo
"debian/control". Como podéis ver tiene varias partes con un formato predefinido (¡cuidado de
no alterarlo!). Concretamente modificaremos las lineas "Section:" para definir la sección a la
que pertenece el paquete (por ejemplo "main/x11" o "universe/web"), "Package:" si
necesitamos cambiarle el nombre al paquete por algún motivo y por ultimo "Description:". La
parte "Description:" tiene un formato un poco distinto, en la misma linea se puede poner una
descripción corta (60 caracteres si no recuerdo mal) y debe empezar con minúsculas después
de los dos puntos, la segunda parte va a continuación en una nueva linea. Esta linea y las
siguientes que forman parte de la descripción deben empezar con un espacio en blanco y si
queremos dejar una linea en blanco debemos poner un solo punto después del espacio
obligatorio.
El siguiente archivo que modificaremos es uno de los mas importantes, porque define la forma
en que se compilara y empaquetara nuestro programa. Es el archivo "debian/rules" y tiene
formato de makefile. No entraremos en muchos detalles (consultar el manual para más
información), pero si en lo mas practico. En la línea que comienza CFLAGS="$(CFLAGS)"
./configure .... podemos añadir todas las opciones que normalmente añadiríamos al ./configure
de un programa, opciones de compilación, optimizaciones, etcetera.
Para terminar con la configuración básica nos falta modificar el archivo "debian/changelog".
Podemos hacerlo a mano pero es mejor hacerlo con un programa ayudante llamado "dch"
(incluido en devscripts). Es recomendable hacerlo así porque con solo ejecutarlo estando en el
directorio de fuentes (no un subdirectorio) nos abrirá el changelog para modificar y nos creara
una linea nueva, pero mas aun, si lo ejecutamos con el parámetro "-i" nos incrementa el
numero de versión del paquete, crea una entrada nueva en el changelog y nos permite
editarla. Una de las utilidades de este archivo es controlar que cambios hay de una versión a
otra, pero también la propia versión del paquete. Por ejemplo, al debianizar amule-2.0.3 en el
changelog nos pondrá la versión "2.0.3-1" indicando que es la primera versión del paquete, al
hacer "dhc -i" pasaría a ser la "2.0.3-2". Más aun, si queremos identificar el paquete aun mejor
podemos introducir algo entre el guión y el numero, por ejemplo el nombre de la distribución a
la que se dirige ("2.0.3-breezy1"). Justo detrás de la versión nos encontramos con la
distribución, donde podemos poner a que distribución pertenece, por ejemplo "stable",
"unstable", "unreleased", ... y para finalizar la prioridad. Esta prioridad indica la importancia de
las diferencias entre este paquete y la versión anterior. Así por ejemplo si el nuevo paquete
solo añade alguna funcionalidad poco importante puede ser "low" (baja) mientras que si
arregla algún fallo importante puede ser "high" (alta).

4. Compilando y empaquetando
Estamos terminando chicos, solo nos falta empaquetar. Para ello nos colocamos en el directorio
de fuentes y ejecutamos "dpkg-buildpackage -rfakeroot" y nos sentamos a esperar con los
dedos cruzados para que no falle nada. Si todo va bien debería quedarnos fuera del directorio
de fuentes un lindo paquete deb listo para usar.
También nos habrán quedado varios archivos auxiliares pero la utilidad de esos archivos es
otra historia ;)
5. Agradecer a Gatoloko el curre con éste COMO, ya que él es el autor de esta ayuda que yo
me he limitado a recopilar para que esté accesible para toda la comunidad de Ubuntu-es.org
--
JID: versvs@jabberes.org
http://www.versvs.net

También podría gustarte