Cuando las distribuciones se encuentran (Java en Debian Sarge)

Los que me conocen saben que a mi me gusta Gentoo para el trabajo diario de interfaz gráfica y programación. También saben que me gusta Debian para los servidores de mis clientes. Las razones son simples: Gentoo me ofrece gran flexibilidad, muchas opciones, gran poder de abstracción y simultáneamente gran poder para manejar los detalles, con su respectivo costo, que son los largos tiempos para la puesta a punto. Debian es rápido de poner a punto, una gran cantidad de paquetes a alcance de la mano y fácilmente actualizable.

No obstante, en últimas fechas he tenido que meterme a Java (JasperReports más específicamente) . El soporte de Java en Gentoo es una maravilla, se pinta solo, pero en Debian es más bien pobre.

Hay en Debian una inutilería que se llama make-jpkg, con el cual podemos hacer paquetes deb de los jdk y jre más populares. Escogí el jdk de Sun, el cual bajé de java.sun.com. Entonces con este comando se crea el paquete deb correspondiente:

1
2
$ fakeroot make-jpkg jdk-1_5_0_06-linux-i586.bin
$ sudo dpkg -i sun-j2sdk1.5_1.5.0+update06_i386.deb

Entonces mi objetivo es tener un sistema de servlets (Tomcat5) donde pueda generar reportes con el mentado JasperReports. Debido a que en Debian no hay un paquete para este último, hice un emerge en mi Gentoo generando también los paquetes binarios:

1
# emerge -b jasperreports

A grandes rasgos la estrategia será obtener los paquetes binarios de Gentoo y convertirlos paquetes Debian.

Aquí es cuando aparecen las diferencias entre el manejo de Java en Debian y en Gentoo: Gentoo instala los jar en /usr/share/paquete_java_ver/lib, manejando muy granuladamente el $CLASSPATH. En cambio, Debian mete todos los jars en /usr/share/java, simplificando esta última variable de ambiente. Por lo que haría falta hacer un trabajo de traducción y limpieza.

Una vez obtenidos los tbz2 con los paquetes binarios generados por el emerge, los copio a la máquina Debian. Luego los descomprimo en un directorio raíz temporal (~/newroot/) y muevo todos los jar al directorio ~/newroot/usr/share/java y elimino los /usr/share/paquete_java_ver. Este es el trabajo de limpieza engorroso y hay que hacer decisiones sobre qué hacer con los binarios de /usr/bin y las ligas simbólicas (yo borré todo eso).

Después, con ese directorio hacemos un tgz. Con este tgz crearemos los paquetes deb utilizando el famosísimo alien. Y luego instalas.

1
2
$ fakeroot alien --description "JasperReports library and several dependencies not available for debian." --to-deb jasperreports-1.0.1.tgz
$ sudo dpkg -i jasperreports\_1.0.1-2\_all.deb

¡Y listo! Ahora toca saber si se puede hacer lo mismo con Tomcat5 ya que Debian Sarge sólo tiene Tomcat4.