Ayer actualizé a la versión 9.10 de Ubuntu en parte para poder usar las “nuevas” versiones de algunos programas de cálculo simbólico, entre ellos Maxima (me daba palo tener que andar compilando por mi cuenta y resolviendo dependencias). El caso es la versión de Maxima que se distribuía con Ubuntu Jaunty (9.04) era la 5.13, del año 2007… no hace falta decir que andaban un poco desfasados. Actualmente la última versión disponible es la 5.19, liberada hace poco más de dos meses, y la versión disponible en Ubuntu 9.10 es la 5.17, que también ha sido liberada durante el 2009 el 26 de diciembre de 2008, no nos podemos quejar en cuanto a novedad se lo toman con calma.
Pero, aquí está el problema, no funciona. Simplemente no se puede realizar casi ningún cálculo que supere en complejidad al 1+1 que se enseña en las guarderías, nuestros ordenadores se han vuelto idiotas de repente con la actualización. El problema no tiene nada que ver con un desarrollo defectuoso por parte del equipo de Maxima, en Debian funciona perfectamente, y si se descarga el código fuente y se compila a mano, tres cuartos de lo mismo. De hecho en las sucesivas versiones de Maxima que han sido liberadas se corrigieron un montón de errores, se hicieron algunos perfeccionamientos en los cálculos (entre ellos aumentar el conjunto de ecuaciones diferenciables resolubles, de ahí mi interés por la novedad) y se añadieron un montón de funciones nuevas así como también se aumentó el rendimiento de algunos cálculos.
Parece ser que en Ubuntu los detalles relacionados con el software científico les importan un comino, y no solo hablo por Maxima. La misma desactualización que había con Maxima en la 9.04, la había con SAGE… pero es que sigue habiéndola en la 9.10, utilizan la versión 3.un_numero_muy_bajo cuando la versión actual estable es la 4.2.1. El software libre es increíblemente importante (y cada vez más) para el desarrollo científico actual, pero los chicos de Ubuntu no parecen preocuparse de ello y lo están dejando demasiado de lado, hay que darles un toque! Al final tendré que enviar los datos del software que instalo para decantar (aunque sea un poco solo) las estadísticas a favor del software científico…
[Actualización interesante (con solución incluída)]
Os enlazo la página dedicada al bug que comento https://bugs.launchpad.net/ubuntu/+source/maxima/+bug/303587 . El bug se empezó a describir en la versión 8.10 de Ubuntu, y se medio solventó a base de parchecitos y arreglos (pues en la 9.04 me funcionaba medio bién). El caso es que si vamos leyendo el registro de ese bug apreciaremos como se va comentando su aparición en las sucesivas versiones de Ubuntu. Lo interesante del caso es que en cada una de las versiones, la causa es totalmente diferente, y la causa subyacente del problema en la versión 9.10 es la más pintoresca que se pueda imaginar.
Por lo visto el problema se produce debido a una característica de los nuevos núcleos de Linux que está activada por defecto. Esta característica es la aleatorización del espacio de direcciones virtuales [1], que básicamente sirve como medida de seguridad (sobretodo cuando se utiliza virtualización). Por lo visto eso afecta de alguna extraña forma al intérprete de Lisp que utiliza Maxima internamente. La solución para el problema de Maxima es sencilla aunque reduce ligeramente la seguridad del sistema, por eso mismo se debería buscar una solución más elaborada que la que propondré (sacada del bugtracker):
Editar el fichero /etc/sysctl.conf y añadir la línea
kernel.randomize_va_space = 1
Después de eso se tiene que ejecutar sysctl -p.
Referencias:
- http://es.wikipedia.org/wiki/Exec_Shield