File-roller y los archivos lha

Mi Amiga y los ficheros de Aminet

Desde este pasado Agosto he vuelto a cacharrear con mis retro-máquinas. Una de ellas, un Amiga 500 ha sido la causante de todos estos problemas. Me explico. Buscando por Internet software para el Amiga 500 encontré la sede web de Aminet. Para los que no lo conozcan es un repositorio bestial de programas, música, documentación, etc. para Amiga.

Por supuesto, tras recorrerlo un rato con el navegador lo tenía claro: los hombres de verdad se hacen un mirror y punto. Así que me estoy bajando Aminet en fascículos gracias a wget. En concreto con la línea:

wget --mirror wuarchive.wustl.edu/pub/aminet/

consigues que se baje completamente un sitio web a tu máquina.

Los archivos lha

El problema es que el contenido mayoritario de Aminet son ficheros comprimidos en formato lha. Si no conoces el formato lha o lzh no pasa nada: no eres tan viejo como yo. Este fue un formato que tuvo gran popularidad en los tiempos del MS-DOS, antes de que los ZIP. RAR, ZOO y demás se extendieran.

Y alguien dirá: ¿y cuál es el problema con los lha?. ¿No es tu Linux tan potente?. Bueno, algún problemilla si que me planteó.

En primer lugar el compresor file-roller (el que uso en GNOME) necesita para tratar con los lzh/lha el programa lha instalado. Ningún problema. Se busca en Synaptic «lha», se instala el paquete y andando.

Pues no, no anda. File-roller reconoce los lzh, pero no los lha. Y eso que son el mismo formato. ¿Y ahora? ¿De quién es la culpa?. Mirando por Internet (de nuevo) me entero que File-roller tiene un fallo subsanado en la versión 2.9.2: que no trata bien los ficheros con extensión lha.

Actualizar el File-roller

La versión que tengo de file-roller es la 2.6.2 y por comparación simple se entiende que tiene el bug subsanado en la 2.9.2 (6 es menor que 9). Pero no pasa nada: se actualiza en Synaptic el paquete filler-roller y punto. Pues no, no es y punto. Resulta que en la Debian Sid a día de hoy (8/10/05) la versión última de File-roller es la 2.6.2.

Ya me voy impacientando, así que me dirijo a la web de file-roller y me descargo la últimísima versión. Descomprimo el .tgz, me leo el README y ejecuto el ./configure. ¡¡AAARGHHH!!. Necesita una versión más moderna de libglade que la que tengo instalada. Y esta versión no está disponible en el repositorio de Debian.

¿Qué hacer?. La versión de File-roller que tengo tiene un bug que me impide abrir directamente los lha, existe otra versión que lo subsana pero depende de una biblioteca que no tengo instalada. Podría bajarme la biblioteca y compilarla a mano, pero el follón está servido. Pensemos ¿no hay algún truco sencillo para hacer un workaround (en Español, una chapuza)?

El workaround

Pensando pensando se me ocurrió que los formatos lha y lzh son los mismos ¿no?. Pues a probar: renombré un fichero lha a lzh, lancé el file-roller y ¡listo!. Se abre Ok. Claro, que ésto es desde consola y yo quiero que funcione desde el Nautilus.

Bueno, lo primero es hacer que el Nautilus reconozca los .lha como ficheros comprimidos. Se puede hacer pulsando con el botón derecho del ratón, Abrir con, Otra aplicación y pulsar en «Ir ahí» en la opción «Tipos de archivos y programas». Hay que añadir la extensión lha al tipo de fichero.

Una vez los lha nos aparecen con el icono del paquete comprimido, debemos cambiar el programa por defecto que los abre. En éste caso, en lugar de File-roller va a ser un script muy sencillo que:

  1. Copiará el fichero *.lha en el que pinchemos a /tmp/ con un nombre «rarito» (por si pulsamos en varios lha que no se líe el file-roller) y extensión lzh
  2. Abrirá file-roller con el archivo *.lzh del /tmp
  3. Cuando cerremos file-roller borrará el .lzh

Un programa que haga lo anterior puede ser:

# -- Aquí empieza --
#!/bin/bash
THE_FILE=/tmp/`date +%y-%h-%d-%H-%M-%N`.lzh
echo $THE_FILE > /tmp/lee.txt
cp $1 $THE_FILE ; file-roller $THE_FILE ; rm $THE_FILE
# -- Aquí acaba --

Yo lo he llamado unlha.sh y lo he asociado a los lha. La clave de todo está en que Nautilus pasa como primer argumento al programa unlha.sh el nombre del fichero sobre el que hemos pulsado.

Leave a Comment