[debianuruguay] Empaquetando para Debian (parte 2)

  • From: Eduardo Trápani <etrapani@xxxxxxxxx>
  • To: debianuruguay@xxxxxxxxxxxxx
  • Date: Thu, 22 Sep 2011 17:51:48 -0300

Bueno, en la primera parte vimos la parte más bien administrativa de
búsqueda y "adopción" de un paquete, aviso a la comunidad de nuestra
intención de empaquetarlo y enlaces a la documentación.

Vamos de nuevo al bug[1] y visitamos el enlace[2] que ponen allí y desde
ahí bajamos el código fuente[3] y lo abrimos.

$ wget
http://download.dymo.com/Download%20Drivers/Linux/Download/dymo-cups-drivers-1.2.0.tar.gz
$ tar xfz dymo-cups-drivers-1.2.0.tar.gz

Verificamos que tenemos los paquetes necesarios para compilar:

# apt-get install debhelper dh-make build-essential autoconf automake

Entramos a la carpeta y corremos dh_make.  Eso va a crear el directorio
"debian" que es donde va la información del paquete.  El resto es el
código fuente, que queda tal cual.

$ cd  dymo-cups-drivers-1.2.0
$ dh_make -f ../dymo-cups-drivers-1.2.0.tar.gz

Contestamos que es un "single binary".  Este paso está documentado
acá[3] con más información sobre sistemas de compilado.  El nuestro es
autoconf entonces corremos:

$ ./configure

Eso verifica las bibliotecas y nos debería dar el error de que no
existen las bibliotecas de cups.  Así que como root hacemos:

# apt-get install libcups2-dev

Y en la carpeta del programa de nuevo, sabiendo que libups2-dev va a ser
una dependencia de construcción:

$ ./configure

Y ahora le falta otra biblioteca así que como root:

# apt-get install libcupsimage2-dev

Desde la carpeta del programa:

$ ./configure

¡Y funcionó!

Entonces intentamos crear el paquete corriendo

$ dpkg-buildpackage -uc -us

Eso debería generar el paquete sin intentar firmarlo, pero nos va a
tirar un error.  Resulta que todo es muy automático, entonces debhelper
vio una carpeta test e intentó compilarla, pero esa parte no funciona en
el programa original (habría que avisar al desarrollador).  Así que
¡vamos a editar el archivo debian/rules! y vamos a pedirle que no
compile los archivos de test agregando al final (con una línea en blanco
sobre él) lo siguiente:

override_dh_auto_test:

Nada más, al estar vacío nuestro override no va a hacer nada.  Ahí
podrían poner cualquier comando que quieran, el debian/rules es un
makefile y como ven es bastante simple, la llamada a dh (debian helper)
llama a su vez a un montón de subprogramas que van haciendo las cosas.
Uno es el dh_test, el que acabamos de "apagar".

$ dpkg-buildpackage -uc -us

Ya está, tenemos el paquete andando pero falta bastante para que esté
pronto para distribución.  Así como está lo podríamos instalar en
nuestra máquina.  En la carpeta superior a la del programa, donde se
generó el .deb, se puede:

# dpkg -i dymo-cups-drivers_1.2.0-1_i386.deb

o si prefieren solamente ver qué se generó:

# dpkg --contents dymo-cups-drivers_1.2.0-1_i386.deb

¿Qué falta?  Bueno, ver todos los archivos que están en la carpeta
./debian del código fuente.  Para eso sí o sí hay que leer:

4. Archivos necesarios en el directorio debian [4]
5. Otros ficheros en el directorio debian. [5]

Después tendríamos que volver a ver el código fuente y empezar las
modificaciones que sean necesarias.  La documentación sobre este punto
empieza en:

3. Modificar las fuentes [6]

Si tenían esa impresora ya van a poder usarla con el paquete que
armamos, así de básico como está.

No sé quién me está acompañando o si hay dudas.  Parte de lo que viene
es de programación (si estuvieran en sid el programa no habría compilado
bien y hay que hacer correcciones por novedades del gcc).

Yo lo dejo por acá por ahora.  Si alguien quiere seguir que avise y
cuento el resto de las cosas con más o menos detalle.  Sino, espero
poder resumir los pasos hasta llegar a un paquete presentable y el
anuncio de su disponibilidad en mentors.debian.net (un área para que los
que no somos desarrolladores oficiales podamos subir los paquetes).

Todo lo que puse está en la documentación[7] que es muy buena, detallada
y que cubre prácticamente todo lo que se precisa.  La intención es
llevar eso a un caso bien concreto, actual y de uso real.

Saludos, Eduardo.

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=640246
[2] http://sites.dymo.com/DeveloperProgram/Pages/LW_SDK_Linux.aspx
[3]
http://download.dymo.com/Download%20Drivers/Linux/Download/dymo-cups-drivers-1.2.0.tar.gz
[4] http://www.debian.org/doc/manuals/maint-guide/dreq.es.html
[5] http://www.debian.org/doc/manuals/maint-guide/dother.es.html
[6] http://www.debian.org/doc/manuals/maint-guide/modify.es.html
[7] http://www.debian.org/doc/manuals/maint-guide/index.es.html

» Categoría: GNU/Linux y UNIX
» Archivo: //www.freelists.org/archive/debianuruguay/
» Tipo: Discusión abierta
» Ranking: //www.freelists.org/wiki/freelists_listrank

Other related posts:

  • » [debianuruguay] Empaquetando para Debian (parte 2) - Eduardo Trápani