Hola, CDBS es la nueva herramienta para debianizar (empaquetar) programas. Desde que la conozco me ha simplificado la vida bastante para debianizar paquetes. Una de las cosas que más me ha costado averiguar es cómo empaquetar programas precompilados o empaquetar temas de iconos, gtk-themes o wallpapers, ya que estos no hay que compilarlos para empaquetarlos. Se hacerlo sin CDBS pero el archivo rules tienes cada vez que crearlo entero o hacer copy-paste de otros ya hechos. Con CDBS, generalmente, no hay que hacer nada o casi nada extra con el archivo rules porque ya te lo hace. No os preocupéis mucho si no me entendéis mucho de lo que digo, en un momento os enteraréis de la peli
Voy a escribir varios artículos sobre debianizar con CDBS, el próximo lo dedicaré a empaquetar temas de iconos, gtk-themes, etc... incluyendo la multipaquetería, así que preparaos para el truño que voy a meter
En realidad lo que persigo es que la gente tenga una ayuda actualizada de cómo debianizar. Al que le interese claro
Bueno empecemos con el jaleo ya. Lo primero es instalar todos los paquetes necesarios para poder debianizar con CDBS.
sudo su -
apt-get install build-essential dpkg-dev file libc6-dev patch perl autoconf automake dh-make debhelper devscripts devscripts-el fakeroot gnupg g77 gpc xutils lintian cdbs pbuilder debian-policy developers-reference manpages-es manpages-es-extra debian-reference-es
exit
Bueno con eso vais más que servidos
, si falta alguno no problem, al debianizar se os indicará qué necesitáis instalar.
Bien, para este artículo voy a elegir la versión portable de Geogebra como ejemplo, al ser portable ya viene precompilado. Así que al debianizarlo sólo hay que indicar dónde meter su contenido en nuestro linux debianita. Se puede descargar de AQUÍ.
Una vez descargado como es un tar descomprimidlo
Al descomprimirlo se nos ha creado una carpeta que desgraciadamente no tiene en su nombre el número de la versión, pero esto se arregla fácil, cambiamos el nombre y lo dejamos así:
geogebra-3.2.42.0
Como igual cuando consultes este artículo la versión ya haya cambiado modifícala
Una cosa importante es que el nombre del programa de la carpeta siempre debe ir en minúsculas y se antepone un guión al número de la versión; independientemente del paquete a debianizar y su estructura ok ?
Vale abrimos terminal y nos creamos un directorio en donde debianizaremos todos nuestros paquetes y uno adrede para el de Geogebra, lo haremos desde nuestro home.
mkdir -p Debianizo/GEOGEBRA
Dentro del directorio de GEOGEBRA copiad el de geogebra-3.2.42.0 (el que hemos descomprimido), lo podéis hacer con el ratón, acedemos a dicho directorio:
cd Debianizo/GEOGEBRA/geogebra-3.2.42.0
Aclaro, es buena paractica crearte un directorio donde debianizar tus paquetes y un subdirectorio dedicado a cada programa a debianizar, ya que cuando obtengamos el paquete .deb se nos crearán muchos ficheros, y de esa forma los tendremos todos ordenaditos.
Hago un inciso, antes de seguir dentro de la carpeta geogebra-3.2.42.0 borrad la carpeta jre porque no la necesitamos absolutamente para nada en nuestro paquete a debianizar. Esto sólo es para éste caso.
También vamos a modificar el fichero geogebra.sh para que funcione con el java de Sun de nuestro sistema operativo, es suficiente con que quede así:
#!/bin/sh
/usr/lib/jvm/java-6-sun/jre/bin/java -jar /usr/share/geogebra/geogebra.jar "$@"
Bien, ahora se trata de crear el directorio debian con todos los ficheros necesarios para poder debianizar, lo haremos con el script dh-make y que viene incluido con el paquete devscripts. En realidad podríamos hacerlo a mano, pero así es más rápido. Así que desde el directorio geogebra-3.2.42.0 en la terminal escribid:
Poned vuestro correo con los circunflejos inclusive. Con la opción -r nos creará un fichero fuente, con la opción -s le indicamos que sólo vamos a crear un paquete, y con la opción -b le indicamos que queremos debianizar con CDBS, así que no olvidéis ésta última opción.
Al hacer éste comando se os habrá creado un directorio llamado debian y dentro del mismo multitud de ficheros, vamos a quitar unos cuantos de un plumazo porque para nuestro ejemplo nos sobran, en artículos posteriores os iré explicando cosas de ellos.
cd debian
rm -f *.ex *.EX README.* docs
Os deben de haber quedado los siguientes ficheros:
changelog compat control copyright rules
El fichero compat no se toca
. El fichero changelog es donde vamos poniendo nuestros sucesivos empaquetamientos del programa (cuando actualizamos de versión, incluimos parches, etc), y el fichero coyright es donde metemos la licencia del programa y del empaquetador. No os preocupéis os dejo un enlace de descarga de mi directorio debian de Geogebra para que os sirva de guía. Es que si lo pongo aquí esto se hace muy largo, y esto es más fácil viéndolo, no es nada complicado.
El fichero control nos aparecerá así (lo podéis editar con gedit)
Source: geogebra
Section: unknown
Priority: extra
Maintainer: Cristobal Lopez <lopeztobal@gmail.com>
Build-Depends: cdbs, debhelper (>= 7)
Standards-Version: 3.8.3
Homepage: <insert the upstream URL, if relevant>
Package: geogebra
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>
Cosas a tener en cuenta, en la sección Build-Depends especificamos las dependencias para poder compila y empaquetar el programa, como en nuestro caso ya viene compilado sólo debemos poner las de empaquetado. En nuestro caso con las que viene es suficiente.
La sección Depends es donde especificamos las dependencias del programa para que funcione cuando se ejecute o el usuario lo instale, ¡muy importante saber diferenciar esto! Aquí nos pone dos scripts que nos harán la faena por nosotros, ${shlibs:Depends}, ${misc:Depends} pero en éste caso no nos sirven de mucho, así que los borraremos y pondremos la dependencia a mano, que será sun-java6-jre.
En la sección Architecture pondremos para qué arquitectura se debe debianizar, para Geogebra como es portable cambiamos any por all. Así pues el fichero control nos queda así:
Source: geogebra
Section: math
Priority: optional
Maintainer: Cristobal Lopez <lopeztobal@gmail.com>
Build-Depends: debhelper (>= 7), cdbs
Standards-Version: 3.8.4
Homepage: http://www.geogebra.org
Package: geogebra
Architecture: all
Depends: sun-java6-jre
Description: Dynamic mathematics for schools
GeoGebra is a free and multi-platform dynamic
mathematics software for schools that joins
geometry, algebra and calculus. It received se-
veral international awards including the European
and German educational software awards.
Perfecto, vamos a ver qué nos cuenta el archivo rules, al abrirlo nos aparece así:
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/makefile.mk
# Add here any variable or target overrides you need.
Como no se va a compilar nada nos sobra la línea que hace referencia a makefile.mk, así que la borramos y nos queda así:
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
Y ya no necesitamos poner nada más, así de sencillo es. Y eso es así porque CDBS en realidad es un conjunto de "macros" que se encargan de hacer gran parte del trabajo que se hacía antes con rules por nosotros, y para que funcione tan sólo hay que llamar la macro que necesitamos con la orden include, en nuestro caso como no vamos a compilar sólo necesitamos que se ejecute la debhelper.mk.
Desgraciadamente muchos de estos programas precompilados no llevan lo necesario para que tengan un lanzador en nuestro escritorio y deberemos crearlos nosotros mismos, se crean como ficheros de extensión .desktop, así que creamos uno que se llame en nuestro caso geogebra.desktop y lo guardamos en el directorio debian. Aquí os pongo el mio:
[Desktop Entry]
Version=1.0
Type=Application
Name=GeoGebra
GenericName=GeoGebra - Dynamic mathematics
Comment=Dynamic mathematics for shools
GenericName[de]=GeoGebra - Dynamisches Mathematikprogramm
Comment[de]=Dynamische Mathematik für Schulen
Name[de]=GeoGebra
GenericName[es_ES]=GeoGebra - Matemáticas Dinámicas
Comment[es_ES]=Matemáticas Dinámicas En La Enseñanza
Name[es_ES]=GeoGebra
Icon=geogebra.png
Exec=geogebra.sh
Categories=Education;Math;
StartupNotify=false
Terminal=false
En éste artículo hecho por mi tenéis cómo crear estos ficheros.
Nos queda crear dos ficheros que son para especificar dónde instalar el contenido del programa. Tienen siempre las extensiones .dirs y .install. En el .dirs especificamos los directorios base en dónde se instala el programa y en el .install dónde se instala el programa en sí. Es muy fácil. Creamos los ficheros geogebra.dirs y geogebra.install. En geogebra.dirs tendremos estas líneas:
usr/share/pixmaps
usr/share/applications
usr/bin
usr/share/geogebra
En el /usr/bin irá el ejecutable del programa, en el /pixmaps el icono del lanzador, en /applications el lanzador geogebra.desktop y en usr/share/geogebra todo el programa.
En el fichero geogebra.install tengo esto:
debian/geogebra.png usr/share/pixmaps
debian/geogebra.desktop usr/share/applications
geogebra.sh usr/bin
unsigned/* usr/share/geogebra/unsigned
geogebra.jar usr/share/geogebra
geogebra_cas.jar usr/share/geogebra
geogebra_export.jar usr/share/geogebra
geogebra_gui.jar usr/share/geogebra
geogebra_main.jar usr/share/geogebra
geogebra_properties.jar usr/share/geogebra
icon.png usr/share/geogebra
Que como veis no hay mucho que explicar, es decir dónde van cada uno de los directorios y ficheros del programa.
Estos ficheros .install y .dirs son muy importantes para debianizar un programa en varios paquetes, ya volveremos a ello. Su nombre debe coincidir siempre con el nombre que hemos puesto en el fichero control !!!!!
Y bien, si queremos rematar la faena de forma elegante vamos a crear un fichero .menu de nuestro programa para conservar las reglas Debian en cuanto a lanzadores. Creamos un fichero llamado geogebra.menu con el siguiente contenido:
?package(geogebra):needs="X11" section="Applications/Education"\
title="geogebra" command="/usr/bin/geogebra.sh"
Como se puede apreciar es muy fácil de hacer.
Una última cosa ha hacer específica para éste paquete, copiad el fichero icon.png sito en el directorio geogebra-3.2.42.0 en el directorio debian y cambiadle el nombre por el de geogebra.png. Esto lo hago para añadir el icono en el directorio del sistema /usr/share/pixmaps, debería de ser un icono en formato .xpm, pero no pasa nada si es .png. Es una buena práctica hacer esto en nuestros paquetes, siempre y cuando no tengan el icono.
Pues nada tan sólo nos queda debianizarlo, desde el directorio debian ejecutamos debuild así:
debuild -i -us -uc -b
O si van firmados para un repositorio oficial mejor así:
debuild -b -sa -tuclavedelrepositorio
Si todo ha salido bien ya tenéis vuestro paquete deb, sólo resta instalarlo
Os saldrán dos warnings (avisos) de lintian, uno se refiere a que el fichero ejecutable sito en /usr/bin llamado geogebra.sh no tiene página del manual man, no os preocupéis por ello ya que geogebra no tiene man. El otro lo obviamos que no pasa nada
Os dejo un enlace de descarga del debian de Geogebra mio para que os sirva de guia
Uuuuufffff!!!!! cuesta más explicarlo que hacerlooo!!!
Espero que le sirva a mucha gente, aunque no me lee casi nadie
Saludos



El Encoding=UTF-8 del desktop entry deberías eliminarlo ya que según la especificación de freedestop esta puesto por default y si pasas lintian te da warning (además de ser uno de los motivos estúpidos por los que no te dejarían entrar un paquete en debian o ubuntu, son así de tiquismiquis).
También te recomiendo pasar lintian en modo pedantic y descubrirás muchas más cosas a corregir.
Saludos
Buieno lo tendré en cuenta, pero este paquete me deja subirlo a Launchpad y funciona perfectamente, el tuyo de tivion en rpm en Launchpad no funciona
Mientras no me den un sueldo no pienso subir paquetes a Ubuntu, Debian, Mandriva, etc…, así que las pijadas no me molestan
Pasando el pedantic sólo recibo un warning pedántico (mosca cojonera) sobre el changelog, todo lo demás está perfecto.
Si el paquete no hubiese estado bien construido (respetando copyrights inclusive) nunca hubiese echo el artículo
Muy interesante tu articulo. Con mucha frecuencia encuentro paquetes que no estan en formato deb y entonces inician mis oraciones a San Google Patrono de los Informaticos.
Recibe un cordial saludo.
PD. Yo te leo practicamente todos los dias. Buen blog.