viernes, 2 de octubre de 2009

ZOORRA sin servidor gráfico

0 comentarios
 
La actual implementación de ZOORRA requiere que en el servidor haya alguna sesión gráfica abierta. Esta restricción viene dada por OpenOffice, que aunque permitía un modo silencioso para ejecutar macros aún requería un entorno gráfico que a veces usaba para mostrar errores.

Una solución habitual para resolver este problema era la instalación de un servidor gráfico "falso", algo así como redireccionar la salida gráfica a /dev/null. Esa solución, práctica porque no requiere la instalación de un entorno gráfico en un servidor que no lo necesita, también tiene el inconveniente que un error en la ejecución de OpenOffice resulta en una pantalla gráfica esperando una confirmación que jamás podrá recibir y sin atender a las posteriores peticiones.

Las versiones más recientes de OpenOffice finalmente han ofrecido una solución definitiva a este problema largamente reivindicado, el modo "headless". En este modo de ejecución la aplicación ya no genera ningún mensaja gráfico y así deja de exigir la conexión a un servidor X.

En Debian esta funcionalidad viene dada por el paquete openoffice.org-headless que por defecto no se instala con la suite ofimática, así que lo instalaremos explícitamente:

# apt-get install openoffice.org-headless

Una vez instalado deberíamos probar que efectivamente funciona correctamente sin ningún servidor X en ejecución. Los gestores de escritorio de KDE y Gnome dan la posibilidad de dar "acceso de consola" en la pantalla de inicio de sesión, dentro de un menú. Una vez nos encontremos con la consola de texto a pantalla completa, iniciamos una sesión normalmente y ejecutamos las siguientes órdenes:

$ openoffice -headless
$ ps x | grep headless

Si todo va bien, deberíamos ver el proceso aún en ejecución. En este estado, la ejecución de OpenOffice resulta inaccesible porque no hemos especificado aún ningún puerto de conexión (de eso ya se ocupará ZOORRA), así que lo terminaremos con la orden kill y el número de proceso que aparece a la izquierda:

(salida hipotética de la orden ps)
12345 tty1 Sl 0:00 /usr/lib/openoffice/program/...
67890 tty1 S+ 0:00 grep headless
$ kill 12345

Si no lo hacemos, las siguientes ejecuciones a OpenOffice parecerá que no harán nada porque, si ya existe una instancia en ejecución, la aplicación intenta aprovechar la misma. Esto también es importante para el usuario que ejecute ZOORRA, ya que no podrá usar OpenOffice en modo visual, así que es recomendable usar el mismo usuario del sistema con el que se ejecute el servidor Zope.

Finalmente, para que la instalación actual de ZOORRA se aproveche del modo headless de OpenOffice habrá que modificar el fichero /usr/local/zoorra/zoorra.py. Hay que ir con algo de cuidado pues es un fichero algo largo. En él buscaremos la cadena "-invisible" y la cambiaremos por "-headless" respetando las comillas.

En futuras versiones incluiremos como opción de configuración de ZOORRA la posibilidad de ejecución en modo "headless", de modo que no sea necesario modificar el fichero .py en ningún caso.

Leave a Reply