Acerca de Skycat y los problemas de compilación en Linux

Skycat screenshot

Skycat es una herramienta de software astronómico provisto por el ESO (European Southern Observatory) que combina la visualización de imágenes junto con la posibilidad de acceder a catalogos de datos e imágenes astronómicas.

El código fuente de Skycat disponible para su descarga al momento de escribir estas notas corresponde a la versión 3.0.2 3.1.1. En el mismo sitio se ofrece el programa compilado, pero sólo para ciertas distribuciones específicas. En general los binarios de este paquete fallarán en otras distribuciones de Linux, con lo que no queda otro (sano) remedio que compilar el programa desde sus fuentes.

Ahora bien, Skycat está escrito en C++ y Tcl/Tk y utiliza a su vez varias extensiones de éste último. El problema que surge es que varias de estas extensiones estan desarrolladas para la versión 8.4 de Tcl/Tk, pero la mayoria de las distribuciones actuales de Linux traen consigo la versión 8.5. Es posible parchear el código de estas extensiones para que funcionen con la versión 8.5, pero en la práctica he encontrado que la versión resultante de Skycat no funciona correctamente. La solución consiste, pues, en compilar la versión 8.4 de Tcl/Tk junto con las extensiones requeridas y compilar Skycat contra las librerias de esta versión. De hecho, en la página de descarga de Skycat se ofrece todo el código fuente de Tcl/Tk 8.4 y las extensiones requeridas para hacer esto precisamente. Pero ahora surge otro problema, con las distribuciones más actuales de Linux la compilación de esta versión fallará debido a varios factores relacionados principalmente con la utilización de versiones más modernas del interprete de comandos bash y la suite de compiladores GNU. Por este motivo, a partir de la información recopilada de varios sitios en Internet, he creado una serie de parches que, aplicados al código de Tcl/Tk, puede ser compilado sin problema. De la misma manera, el propio código de Skycat requiere de una serie de parches para ser compilado en las distribuciones actuales de Linux. La siguiente sección detalla, entonces, como proceder, con estos parches, a la compilación de Skycat. Este conjunto de parches ha sido testeado y funcionan correctamente en las siguientes distribuciones:


Parches y script de instalación para la version 3.1.1

Descargar el archivo skycat-3.1.1-install.tar.gz en un directorio temporal, preferentemente en /tmp.

$ cd /tmp
$ wget http://triton.fcaglp.unlp.edu.ar/cuaderno/skycat/skycat-3.1.1-install.tar.gz

A continuación descomprimimos el archivo descargado y nos movemos dentro del directorio creado:

$ tar xvf skycat-3.1.1-install.tar.gz
$ cd skycat-3.1.1-install

En este directorio están todos los parches necesarios, el código fuente de Skycat junto con el de Tcl/Tk, y además un script se instalación.

A continuación ejecutamos el script de instalación. Por defecto el mismo instalará el programa y sus librerias necesarias bajo el directorio skycat del su directorio personal, esto es, en $HOME/skycat. Si desea instalar Skycat en otro directorio edite la linea INSTALL_DIR=$HOME/skycat del script en forma apropiada.

$ ./skycat.install

El proceso de compilación demorará unos minutos. Si el proceso terminó con éxito entonces puede moverse al directorio bin bajo el directorio de instalación y ejecutar el programa Skycat:

$ cd $HOME/skcat/bin
$ ./skycat

Parches y script de instalación para la version 3.0.2

Descargar el archivo skycat-3.0.2-install.tar.gz en un directorio temporal, preferentemente en /tmp.

$ cd /tmp
$ wget http://triton.fcaglp.unlp.edu.ar/cuaderno/skycat/skycat-3.0.2-install.tar.gz

A continuación descomprimimos el archivo descargado y nos movemos dentro del directorio creado:

$ tar xvf skycat-3.0.2-install.tar.gz
$ cd skycat-3.0.2-install

En este directorio están todos los parches necesarios, el código fuente de Skycat junto con el de Tcl/Tk, y además un script se instalación.

A continuación ejecutamos el script de instalación. Por defecto el mismo instalará el programa y sus librerias necesarias bajo el directorio skycat del su directorio personal, esto es, en $HOME/skycat. Si desea instalar Skycat en otro directorio edite la linea INSTALL_DIR=$HOME/skycat del script en forma apropiada.

$ ./skycat.install

El proceso de compilación demorará unos minutos. Si el proceso terminó con éxito entonces puede moverse al directorio bin bajo el directorio de instalación y ejecutar el programa Skycat:

$ cd $HOME/skcat/bin
$ ./skycat

El plugin ESO Finding Charts

El plugin ESO Finding Charts para Skycat forma parte de otros plugines para este programa. En particular, éste es distribuido con FIMS. Su instalación procede como sigue.

Descarga en un directorio temporal, preferiblemente /tmp, el archivo fuente de FIMS provisto en su sitio de descarga.

$ cd /tmp
$ wget ftp://ftp.eso.org/pub/usg/fims/fims-P85-Linux.tar.gz

Descomprimir el archivo descargado y moverse al directorio creado:

$ tar xvf fims-P85-Linux.tar.gz
$ cd fims-P85-Linux

Para utilizar la versión de Skycat que hemos instalado de acuerdo a la sección anterior, borrar la versión provista por FIMS:

$ rm skycat

Ejecutar el programa de instalación y cuando pregunte el directorio de instalación indicar el directorio donde hemos instalado Skycat, esto es, /home/<username>/skycat donde <username> corresponde a nuestro nombre de usuario en el sistema:

$ ./fims_install.sh

Una vez instalado, podemos ejecutar el programa moviendonos al directorio bin bajo el directorio de instalación y ejecutando el comando apropiado como se indica a continuación:

$ cd $HOME/skycat/bin
$ ./fims.sh B

Esto abrirá nuestra flamante versión de Skycat. El plugin deseado, Making finding charts... se encuentra localizado bajo el menú File.

GMOS Mask Making software (GMMPS)

La instalación de este plugin requiere no sólo de Skycat sino también de Iraf y el paquete Gemini Iraf, los cuales asumiremos que estan ya instalados (la instalación de Iraf es otro cantar y, oportunamente, será motivo de otro apunte en este cuaderno).

Descarga en un directorio temporal, preferiblemente /tmp, el archivo fuente de GMMPS provisto en su sitio de descarga.

$ cd /tmp
$ wget http://software.gemini.edu/gmmps/gmmps-0.302-REL.tar.gz

Descomprimir el archivo descargado en el directorio personal y crear un link simbólico para simplificar la instalación:

$ tar xvf gmmps-0.302-REL.tar.gz -C ~
$ cd
$ ln -s gmmps-0.302-REL gmmps

Editar el archivo .bash_profile localizado en su directorio personal y agregar las siguientes lineas:

export GMMPS="$HOME/gmmps"
export PATH="${PATH}:$HOME/skcat/bin:${GMMPS}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$HOME/skycat/lib"

Podemos ejecutar el programa abriendo una nueva terminal y ejecutando el comando:

$ gmmps

Esto abrirá nuestra versión de Skycat, el cual ahora presentará en sus menues el plugin GMMPS.

NOTA: A los usuarios de la distribución Ubuntu puede aparecerles el siguiente error:

gmmps: 2: enable: not found

lo cual impide la ejecución del programa. Para arreglar el error ejecutar la siguiente línea de comando:

sed -i 's|#!/bin/sh|#!/bin/bash|' $HOME/gmmps/bin/gmmps