Debianizando Programas. Parte 3

por | 29 Enero, 2008

Debianizando Programas Con Autotools o Scons

Hola. Bueno vamos con la tercera parte de este auto-tutorial que estoy dedicando a mi aprendizaje para debianizar programas. Hoy voy a escribir la parte en la que queremos debianizar un programa el cual para su instalación necesitamos compilarlo previamente. Esta forma de debianizar es la más traumática al principio :-S pero cuando llevas unos cuantos hechos ya no parece tan complicado.

Bueno he de decir que lo explicaré para aquellos programas que los debianizaremos en un único paquete, es lo que se llama de forma simple, los de forma múltiple no los he probado todavía.

Empecemos, lo primero será ver que nuestro programa para su instalación utiliza autotools ( es decir, que para instalarlo utilizamos lo del configure, make y make install). Después os recomiendo que leáis bien las instrucciones para su compilación. Una vez hecho esto pasamos a compilar con:

  1. sudo apt-get build-dep nombre_del_programa
  2. ./configure --prefix=/usr [más opciones extra necesarias para su compilación]
  3. make

Vamos a aclarar un par de cosas, lo primero es que el comando apt-get build-dep nos podrá servir de ayuda para instalar previamente algunas de las dependencias necesarias para poder compilar nuestro programa a debianizar.

Lo segundo es que con configure deberemos leer bien antes las instrucciones de nuestro programa para saber si debemos añadir al configure alguna opción más, nos puede servir de ayuda el hacer previamente ./configure –help. Yo antes de pasar a debianizar un programa os aconsejo hacer el make por si sale algún error. Estos errores pueden ser debidos a incumplimientos de dependencias, a un error en el código del programa o a una falta de opciones al realizar el configure; entre otras.

Vale, pensemos que nuestro programa se ha compilado perfectamente lo siguiente será preparar el programa con la creación de unos ficheros necesarios. Esto lo realizaremos con el siguiente comando:

  1. dh_make -e nuestrocorreo -s -n

en donde reemplazaremos donde dice nuestrocorreo por nuestro correo =)) La opción -s es para indicarle que vamos a debianizar de forma simple, con -m lo haremos de forma múltiple. Bien cuando se ejecuta esta opción nos aparecerán unas líneas de información de lo que nos creará, le decimos que Sí y ya esta esta parte hecha.

Al término de la ejecución del susodicho comando se nos habrá creado dentro del directorio de nuestro programa un directorio (( o carpeta )) llamado debian, en el que dentro de él tendremos nuestro fichero control y unos cuantos más, muchos de ellos acabados en su nombre con .ex o .EX ( abreviatura de example en inglés). Bien, de esos ficheros si el programa no es muy complicado podemos optar por borrar los siguientes:

  • Cualquiera que empiece por emacsen ( siempre y cuando nuestro programa no tenga soporte para Emacs)
  • cron.d.ex, init.d.ex, watch.ex

Si no estamos seguros podemos optar por la opción de no borrarlos. También podemos hacer, aunque no es necesario, borrar el .ex o .EX en todos ellos. Según la complejidad de nuestro programa a debianizar necesitaremos editar, borrar o no ciertos ficheros, esto es muy largo de explicar aquí, lo mejor es que leáis el siguiente enlace. Pero ya os digo que con lo que os he puesto aquí tendréis en general suficiente para llevar vuestra tarea a buen puerto.

Ahora viene el paso más importante, que es editar el fichero control que viene dentro del recién creado directorio debian. Lo podremos crear con cualquier editro de textos, como gedit. Toda la información de lo que tenemos que poner dentro del fichero la podéis leer en el artículo que escribí PINCHANDO AQUÍ, pero con la salvedad de que no hará falta editar la línea Depends, la cual nos aparecerá así:

  1. Depends: ${shlibs:Depends}, ${misc:Depends}

No la editaremos porque al ejecutar el siguiente comando que os voy a decir, ya nos la rellenará por nosotros. Cuando hayáis terminado de editar el fichero control y estéis seguros de todo lo demás finalizaréis con la introducción por terminal del siguiente comando:

  1. debuild --linda -us -uc

Este comando se encargará de crear nuestro paquete final debianizado o de si han habido fallos nos avisará de cuáles y sus posibles soluciones. La información de los posibles fallos se debe gracias a que al comando debuild le hemos añadido la opción –linda. En la pantalla si hay errores o avisos nos aparecerán etiquetados con E o W respectivamente.

ATENCIÓN: Apartir de Ubuntu Hardy Heron el script de linda desaparece como opción en debuild, así que deberéis ponerlo para debianizar así:

  1. debuild -i -us -uc -b

o si queréis así:

  1. debuild -us -uc

Seguirá habiendo control de errores y warnings de vuestras debianizaciones, pero serán a través del script lintian, el cual se activa como opción por defecto con debuild.

Y ya está, si todo ha ido bien restará instalar nuestro programa debianizado con Gdebi, ver si funciona bien y si queremos podemos compartirlo con los demás >:D< A ver si de aquí unos días os escribo cómo crearos vuestro propio repositorio.

Os recomiendo que antes que nada os leáis las dos primeras partes de este tutorial y que las encontraréis bajo la etiqueta Debianizar de este blog.

Este artículo se ha podido escribir gracias a la colaboración desinteresada para enseñarme a debianizar de mi colega por la red de redes Daniel Cremades <:-P

Saludos :-h

8 pensamientos en “Debianizando Programas. Parte 3

  1. indiocabreao

    Magnifico tutorial Cristobal !

    Me alegra (no sabes cuanto), que te este interesando este tema

    Saludos

  2. Cristobal

    Muchas gracias Siempre me interesa aprender cosas nuevas.

  3. GoldraK

    Dices que pones un comando para completar las dependencia pero a mi no me apare, cual es, tmb tengo un problema con el checkinstall no me deja modificar las dependencias

    Gracias por tu ayuda.

  4. Cristobal

    Hooa Goldrak el comando sí lo he puesto, es audo apt-get build-dep nombre_del_programa
    Lo de checkinstall es un bug del programa y no se cómo solucionarlo. Yo llo que hago es montar el deb sin las dependencias y luego las añaqdo siguiendo lo que expliqué en este mismo blog en el artículo de debianizar sin autotools.
    Saludos

  5. goldrak

    Hola Cristobal,
    lo primero agradecerte el paquete de qtoctave y pspp, estoy intentando hacer con el gimp 2.4.5, para tenerlo en molinux que vamos un poco atrasados y al hacer como tu me dices:
    sudo apt-get build-dep nombre_del_programa

    me devuelve esto:
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    E: No se pudo encontrar un paquete de fuentes para gimp

    y si relleno las dependencias a mano y pongo este comando debuild –linda -us -uc luego me dice estas palabrotas:

    dpkg-checkbuilddeps: error: archivo de control debe tener al menos una parte binario del paquete
    debuild: fatal error at line 993:
    You do not appear to have all build dependencies properly met, aborting.
    (Use -d flag to override.)
    If you have the pbuilder package installed you can run
    /usr/lib/pbuilder/pbuilder-satisfydepends as root to install the
    required packages, or you can do it manually using dpkg or apt using
    the error messages just above this message.

    que es lo que le puedo pasar?

    Gracias por todo.

  6. Cristobal

    Hola goldrak, no se cómo va de repositorios molinux pero supongo que pasa igual que con Guadalinex, que no tienen todos los repositorios de Ubuntu y por eso no te funciona apt-get build-dep.
    Te aconsejo que antes hagas el configure y el make de gimp, y si no te sale ningún error entonces procede a debianizarlo, no pongas por tu cuenta las dependencias, dh_make y debuild se encargan de hacerlo por ti.
    Saludos

  7. goldrak

    Gracias por la info, pues lo debianizare en ubuntu y como esta basado en la 7.10 a rular, gracias por todo ya te contare por cierto tus paquetes los tenemos en un repositorio subidos por si lo quieres compartir o por si quieres subir algo solo dilo

  8. José GDF

    A mi me ha venido especialmente bien este tutorial, particularmente la última orden:

    debuild -i -us -uc -b

    Porque estoy utilizando Ubuntu Studio 8.04 y en otro lugar no tenía esas opciones detrás del comando principal debuild.

    Pero, sobre todo, me ha venido bien porque tengo un amd64, y los paquetes para esta arquitectura son los últimos en hacerse, o directamente, algunos desarrolladores no las hacen para los repositorios.

    Ya existe un paquete deb para amd64… ¡Hecho por mi!

    Gracias por compartir !!

Los comentarios están cerrados.