Artículo publicado en ubuntu-es
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".
Programas necesarios
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 guia 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://versvs.funpic.de