Celestia: guía de compilación en Ubuntu 10.04

En mis últimos ordenadores siempre ha estado un programa esencial para todo amante de la astronomía, la astronáutica y el espacio en general: Celestia. Un “simulador de Universo”, como suena, capaz de llevarte a velocidad absurda a cualquier lugar cartografiado en un radio de muchos miles de años luz a la redonda. Además, es ampliable y su entusiasta comunidad (dirigida por Chris Laurel, actualmente en la ) aporta mejoras y ampliaciones con regularidad.

Los únicos requisitos para ejecutar son disponer de un PC moderno con una tarjeta gráfica con soporte más o menos potente: si puedes jugar a algo en 3D con relativa fluidez, podrás disfrutar de Celestia. Para que conste, la mía es una GT 220 funcionando con el driver propietario. Lamentablemente, mientras que para Windows se ofrece un instalador simple, los linuxeros tenemos que vérnoslas con un archivo .tar.gz de fuentes, en plan some assembly required antes de jugar. Algunas distribuciones disponen de paquetes precompilados, pero normalmente no están muy bien mantenidos: son de versiones antiguas de la distribución o del propio Celestia, no soportan arquitecturas de 64 bits, o las tres cosas a la vez.

Compilar Celestia se ha convertido para mí en una especie de ritual, que se repite cada vez que adquiero un nuevo equipo o instalo desde cero un sistema operativo. Ahora le ha llegado el turno a mi workstation con (64 bits) y , y esta vez he documentado los pasos que seguí para poder contarlos aquí y que puedan servir a alguien más. Así que, sin más preámbulo… un disclaimer:

Atención: no soy responsable de nada que puedas hacerle a tu ordenador siguiendo estas instrucciones. De nada. Mi distribución no estaba “limpia” antes de comenzar este proceso: por tanto, es posible que aún instalando todo lo que aquí se dice, te falten algunas dependencias. Haz como yo: lee con cuidado los mensajes de error y mira los foros o el wikilibro. No soy ningún experto en esto, pero a mí me ha funcionado. Para evitar errores tontos, marcaré cada fin de línea con este dibujillo: “↵”. Sería recomendable tener un nivel intermedio de manejo de Linux para poder seguir esta guía: si no lo tienes, échale el lazo a tu geek local. Yo no tengo todo el tiempo que querría.

Venga, ahora sí que sí. Lo primero: suele ser más fácil compilar las fuentes conforme salen del repositorio de control de versiones de SourceForge. Más fácil que el paquete con la última versión (a día de hoy, la 1.6.0). No preguntéis por qué, e instalad el soporte de si no lo tenéis ya para poder bajarlas. Abrid una consola y teclead:

sudo apt-get install subversion↵

Siempre que os pida la contraseña de root, la ponéis. Es el momento de bajar las fuentes en sí. Desde vuestro directorio de usuario:

svn co https://celestia.svn.sourceforge.net/svnroot/celestia/trunk celestia↵

Cuando termine, tendréis un directorio celestia con todo el pastel. Ahora, a instalar dependencias, que son paquetes necesarios para que lo que acabamos de bajar compile y funcione. Nota: igual que a alguien le puede faltar alguna dependiendo de cómo haya instalado su Ubuntu, también es posible que algún paquete de los que doy aquí sea redundante. En fin.

sudo apt-get install build-essential automake gettext libgconf2-dev libtool zlib1g zlib1g-dev libgtkglext1 libgtkglext1-dev libgnomeui-dev lua5.1 liblua5.1 liblua5.1-dev↵

Hasta aquí no creo que haya problemas. Ahora empezamos a compilar:

cd celestia↵
autoreconf -iv↵

Eso crea el script de configuración de la compilación. Ahora, configuraremos la compilación, incluyendo soporte para GNOME y . El primero se pueda cambiar por KDE, pero entonces alguna de las dependencias anteriores estará mal. Incluir soporte de Lua (un lenguaje de scripting que Celestia puede llevar embebido) es interesante: muchas mejoras (add-ons) lo requieren:

./configure --with-gnome --with-lua↵

¡Llega el momento de compilar! Tecleamos

make↵

Estamos a un paso de poder disfrutar de las mejores vistas que se pueden tener en un monitor sin estar de verdad en el espacio (o sin un fondo de pantalla de Megan Fox en plan interesante). Instalamos el resultado de la compilación:

sudo make install↵

Por defecto, Celestia queda instalado en /usr/local/bin, y sus archivos de apoyo en /usr/local/share/celestia. Si el primer directorio está en nuestro $PATH de ejecución (y si no has hecho nada raro, debería estar), basta teclear

celestia↵

para empezar a navegar a lo grande. Aquí teneis una pequeña guía en español para dar los primeros pasos: Proyecto Celestia: Guía de Usuario (útil a partir del capítulo 5).

Desgraciadamente, todo esto no fue lo último que tuve que hacer para que Celestia funcionara correctamente en mi equipo. Me encontré con una ventana en la que no se mostraba nada en absoluto, aunque la navegación parecía funcionar. Quizá esto no te ocurra, o quizá sí… La solución: seleccionar la opción del menú Options/View options… y marcar para visualizar las cajas de selección de Planets y Stars como poco, poner el filtro de estrellas por distancia (Filter Stars) a su valor máximo, seleccionar el máximo detalle en textureas (Texture Detail) y pulsar Aceptar. Quizá se trate de un error menor en el programa, y quizá ya esté corregido (recordemos que estamos compilando a partir de la última versión disponible del código, así que incluso sería posible que existieran errores que no permitieran la compilación en absoluto —algo raro, pero…) Curiosamente, si ejecutaba Celestia como root (haciendo sudo celestia en una consola) todo funcionaba a la primera.

Una última advertencia: Celestia engancha. Hay quien ha cambiado de tarjeta gráfica, quien ha gastado auténticos caudales en sus equipos para poder ver las míticas texturas “32k” de la Tierra o Marte con todos los efectos de iluminación, quien ha perdido el apetito o abandonado a su mascota a su suerte para estar días seguidos pegado a la pantalla. Ni que decir tiene que tampoco me hago responsable. Disfruta.

VNC y Compiz en Gnome

¿Quién no ha usado ? (Vale, no me abruméis con tanto silencio, que ahora los geeks estamos “casi” bien vistos.) Es una forma muy sencilla de acceder al escritorio de otro equipo remotamente; aunque no es un protocolo muy eficaz, su sencillez de manejo y la posibilidad de conectar entre sí sistemas extremadamente distintos lo hacen atractivo frente a otras opciones de escritorio remoto. Por ejemplo: mi teléfono me permite ver el escritorio del equipo principal de mi oficina () con Remote VNC Pro.

Ubuntu ofrece por defecto la compartición del escritorio por VNC a través de un servidor que se activa en Sistema/Preferencias/Escritorio remoto. Algunas cajas de selección —francamente simples— marcadas y voilà! Escritorio compartido en tu segmento de red. Para una pequeña oficina como la mía, que utiliza la misma red WiFi que mi casa, es una buena solución para comprobar qué está ocurriendo en el ordenador grande desde el sofá, con el portátil (o incluso con el teléfono).

El problema

. No sólo es “azúcar para los ojos” (eye-candy es la encantadora expresión anglosajona): estoy convencido que las animaciones que muestran los cambios de estado de las ventanas son esenciales para mejorar la usabilidad del sistema. En consecuencia, gasté una cantidad de dinero extra para asegurarme de que Compiz funcionaría correctamente, poniéndole una buena tarjeta aceleradora 3D. Pero resulta que con Compiz activado en un servidor Vino (el servidor VNC que viene de serie con , el escritorio por defecto de Ubuntu), ¡los clientes sólo reciben una pantalla negra! En cuando se desactiva Compiz, VNC vuelve a funcionar de forma normal. Esta sería una opción aceptable en un ordenador en el que no trabajara habitualmente, pero cuando uno se acostumbra a “lo bueno”, dar un paso atrás se pone muy cuesta arriba. ¿Hay solución?

La solución

Sí. Desde un terminal, basta invocar gconf-editor. Aparecerá una especie de editor de configuraciones de Gnome similar al editor de registro de nuestros amigos de Windows (el backend de datos que se están modificando son ficheros de texto en formato XML, así que no me vengáis con que “tanto quejarse del registro de Windows y mirad ahora”). Navegad por la estructura de carpetas siguiendo la ruta /desktop/gnome/remote_access y marcad el ajuste disable_xdamage. En la documentación de esta clave se dice que la extensión XDamage de X.org no funciona bien en algunos drivers de vídeo si se usan efectos 3D, lo que evidentemente es el caso de Vino. También dice que VNC renderizará un poco más lentamente. Como si fuera preferible ver una pantalla negra —a toda velocidad, eso sí— a que las cosas funcionen como deben.

¿Problemas con el lector de tarjetas SD?

Recientemente estoy atravesando por una de esas fases de sequía bloguera. No es que no haya temas de los que escribir, al contrario. El problema es que la mitad de ellos me hinchan la vena del cuello como si fuera una cámara de bicicleta, y la otra mitad ya son muy competentemente comentados por blogueros-alfa a los que sigo. Hay días en los que Google Reader es como un pequeño ángel de la guarda cabrón que te susurra al oído “¿para qué? Si ellos ya lo han dicho mejor que tú…” De modo que acudiré al viejo truco: contar alguna frikada técnica que me haya ocurrido recientemente, de la que haya aprendido algo y con la que —espero— alguien pueda ahorrarse quebraderos de cabeza. Hala, al lío.

El problema

"Expulsar unidad de forma segura" en Ubuntu 9.10
“Expulsar unidad de forma segura” en Ubuntu 9.10

Uso Ubuntu 9.10 Karmic Koala (¿no son encantadores los nombres?), aunque tal vez desde la versión anterior he notado la inclusión de un elemento adicional en el menú contextual de los medios extraíbles, Expulsar unidad de forma segura, que acompaña a los más tradicionales Desmontar y Expulsar. Desmontar es un viejo concepto unixero asociado a la gestión de volúmenes de datos; los linuxeros de hoy montamos poco desde que existe automount, pero para los medios extraíbles es recomendable indicarle de algún modo al sistema operativo que tenemos intención de tirar de la manta, o de la tarjeta en este caso. De otro modo podríamos interrumpir alguna operación de escritura en curso (en todos los S.O. multitarea son asíncronas, lo que significa que ocurren cuando al planificador del núcleo le parece) y corromper —como poco— algún fichero. Expulsar implica desmontar, y tiene sentido en una unidad de CD o DVD, donde hay una bandeja motorizada que extrae físicamente el medio.

Como la idea de hacer algo “con seguridad” me atrae, al menos en principio, comencé a utilizar esta opción antes de extraer mis tarjetas SD de su ranura. Sin embargo, un día, al insertar una tarjeta llena de fotos de las últimas vacaciones, observé que automount estaba pasando de mí. Pánico creciendo. Pronto me di cuenta de que el lector no funcionaba en absoluto. Ni siquiera aparecía al hacer un lsusb en una consola. Pánico disminuyendo, pero extrañeza creciendo. Como no apago el equipo todos los días, tardé en darme cuenta de que era precisamente tras expulsar “de forma segura” una tarjeta cuando ya no podía leer más ¡y el dispositivo lector dejaba de existir! El único remedio: reiniciar. Después del reinicio todo volvía a la normalidad. Hasta que mi mente, ansiosa de seguridad, volvía a pulsar en esa opción y, días más tarde, vuelta a empezar.

La solución

Resulta que Expulsar unidad de forma segura hace algo más que desmontar la tarjeta: también apaga el dispositivo lector. Eso es estupendo: añade un plus de seguridad con un lector de tarjetas portátil. Lo desenchufas del puerto USB y listo; la próxima vez que lo enchufes se encenderá. Pero… los lectores internos suelen estar conectados también por una interfaz USB a la placa —para ahorrar en interfaces PCI. El chipset que llevan reacciona a los mismos comandos que los lectores externos, y en particular pueden apagarse de la misma manera. Así, si apagamos un lector interno de tarjetas, tenemos dos opciones: abrir el ordenador en vivo, localizar su conexión a la placa, desenchufarla y volverla a enchufar; o —más cómodamente— apagar y encender. Vaya. No me pillaréis más expulsando de forma segura. Seguro.