miércoles, febrero 07, 2007

Guia práctica para la compilación e instalación de Maxima en Linux


Maxima es uno de los motores de álgebra computacional (CAS, comuter algebra system) más antiguos del mundo (inspirado en MACSYMA). Está programado usando Lisp y cuenta con bastantes funciones para el trabajo en varias áreas de las matemáticas. Desde la aritmética hasta el trabajo con funciones elípticas, tensores, ecuaciones diferenciales y aún campos más especializados de las matemáticas. En fin, una muy buena herramientas para estudiantes, profesores e investigadores en áreas como el cálculo, la física y el álgebra computacional. Para quienes quieran usarlo, Maxima se ejecuta un varios sistemas operativos desde Linux/BSD/Solaris, Mac OS X y windows. Para esta ocasión, explicaré de manera breve la manera de compilar e instalar Maxima bajo Linux (posteriormente espero poder hacerlo para FreeBSD y Solaris).

Qué necesitamos ?

Antes de empezar el proceso, se debe estar seguro de tener instalada una implementación Lisp (o entorno Lisp) sobre el cuál se ejecutará Maxima. Las implementaciones Lisp más conocidas son: GCL (Gnu Common Lisp), CLisp, SBCL y CMUCL. Si desea conocer más acerca de otras implementaciones Lisp, puede consultar:


Cómo saber si se tiene un entorno Lisp instalado ?. Es sencillo: pruebe si existe algún comando como gcl, clisp, sbcl o cl desde la shell de comandos, o utilizando el comando (si se encuentra en Debian GNU/Linux o una distribución derivada (Knoppix, Ubuntu)):

dpkg -l | grep [lisp, gcl, sbcl, cmucl, cl]

donde las cadenas colocadas entre corchetes son opcionales, es decir sólo coloque una sóla. Si obtiene un listado con alguna de las implementaciones mencionadas anteriormente, significa que tiene un entorno Lisp instalado. En caso contrario, use APT para instalar alguna. Si se encuentra en Fedora o Red Hat o alguna distribución basada en éstas, utilice:


rpm -qa | grep [lisp, gcl, sbcl, cmucl, cl]

donde las cadenas colocadas entre corchetes son opcionales, es decir sólo coloque una sóla. Si obtiene un listado con alguna de las implementaciones, tiene un entorno Lisp instalado, En caso contrario, haga uso de yum, sinaptic, o rpm para realizar la instalación.

Nota para Gnu Common Lisp (GCL):

/**
En algunos casos, las versiones binarias de GCL (paquete Debian) no están compilados con las reglas ANSI habilitadas por defecto. En este caso existe un dialógo de configuración que permite habilitar dicha característica, para que el proceso de compilación se pueda iniciar sin problemas. Puede también probar con la instrucción: dpkg-reconfigure gcl */

Una vez tengamos la implementación Lisp instalada (también puede compilar las fuentes de alguna), nos disponemos a descargar el código fuente de Maxima, que puede ser de dos maneras:

En caso de ser desde el CVS, puede seguir las siguientes instrucciones:

http://sourceforge.net/cvs/?group_id=4933

Una vez se hayan descargado las fuentes, el procedimiento es el siguiente:

Estas instrucciones son aplicables para las versiones iguales o superiores a la 5.9.1.

Descomprima los fuentes (si descargó el paquete en formato .tar.gz):

$ tar xvzf maxima-[version].tar.gz

Una vez hecho esto, ingrese al directorio que se ha creado (maxima-[version]), en donde [version], es una cadena como 5.9.1, 5.9.2, etc. Al momento de escribir este documento, la versión estable de Maxima es la 5.11. (En caso que haya descargado las fuentes desde CVS ingrese al directorio creado, después del Checkout).

$ cd maxima-[version]

Una vez allí, procedemos de la siguiente manera, dependiendo del método usado:

Descarga desde el sitio web (paquete tar.gz)

Ejecutamos el archivo configure:

$ ./configure

que realizará un chequeo de nuestro sistema operativo, en busca de las herramientas necesarias para iniciar el proceso de compilación. La ejecución de este script buscará herramientas como Autoconf, Automake, por ejemplo. Sin embargo, existen algunos parámetros que pueden ser de gran utiidad para personalizar nuestra instalación. Veamos:

$ ./configure --enable-[implementacion-lisp]

Se habilita explícitamente una o varias implementaciones Lisp, para que Maxima sea compilado para cada una de ellas. Por ejemplo, para habilitar GCL y CLisp al mismo tiempo:

$./configure --enable-gcl --enable-clisp

$./configure --enable-[idioma]

Se habilita explícitamente el idioma que por defecto Maxima soportará. Por ejemplo para habilitar el idioma español y codificación utf8:

$./configure --enable-lang-es-utf8

$./configure --with-[implementacion lisp] = ruta del ejecutable

Se indica dónde se encuentra el ejecutable de la implementación lisp referida. Por ejemplo:

$./configure --with-gcl=/usr/local/bin/gcl


Para resumir, si se quiere compilar Maxima bajo GCL y CLisp, donde el ejecutable de GCL se encuentra en /opt/bin/gcl y se quiere añadir soporte para idioma español y la implementación Lisp que se quiere usar por defecto es Clisp, tenemos:

$./configure --enable-gcl --enable-clisp --with-gcl=/opt/bin/gcl --enable-lang-es --with-default-lisp=clisp

Para más información, ejecute:

$./configure --help

Una vez la ejecución de configure haya tenido éxito (no se hayan generado errores, en cuyo caso verfique si cuenta con todo el software para compilación instalado (autoconf, automake)), ejecute:

$ make

con esto el proceso de compilación se inicia y dependiendo de las características de la máquina y el número de implementaciones Lisp el tiempo puede variar. En una máquina de 128 Mb de RAM y un procesador de 800 Mhz el proceso puede tomar de 30 a 45 minutos con una sólo implementación. Si este proceso se llevó a cabo sin ningún contra-tiempo (la mayoría de los casos es así), entonces podemos ejecutar las pruebas (o test suite), para ello ejecutamos:

$ make check

Las pruebas son una serie de scripts que en condiciones normales evaluan que Maxima responda correctamente a diversas operaciones de índole aritmético, numérico y simbólico. Al final de la ejecución de las pruebas, se presentará un resumen del número de pruebas ejecutadas, cuales fueron correctamente ejecutadas, cuales fallaron y las fallas o bugs conocidos. Después de esto, se procede a la instalación en el sistema. Para hacer esto, se debe contar con permisos de usuario root (a menor que mediante el parámetro --prefix se haya indicado una ruta en donde existan permisos de escritura y ejecución para el usuario con el cual se trabaja). Para esto, se ejecuta:

$ make install

y listo. Desde ese momento podemos ejecutar Maxima, desde la shell con el comando maxima:

$ maxima
Maxima 5.11.0cvs http://maxima.sourceforge.net
Using Lisp CLISP 2.39 (2006-07-16)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1)

después del cual tendrémos un mensaje de bienvenida indicando la versión y la implementación de Lisp utilizada. En caso de que queramos utilizar otra de las implementaciones Lisp con la que fue compilado Maxima, simplemente:

$ maxima --lisp gcl
Maxima 5.11.0cvs http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1)

Si se quiere utilizar Maxima gráficamente, usamos el comando xmaxima.

Más adelante explicaré algunas cuestiones de funcionamiento y utilización de este CAS. Por el momento algunos enlaces interesantes:


2 comentarios:

Camilo dijo...

Que buena guia juan, es bueno tener a la mano una buena referencia como esa.
Siga asi :)

qraquen dijo...

Una excelente ayuda. Si no tienen tiempo o no son expertos en linux (como yo), les recomiendo instalen Guadalinex V4 (basado en Debian) y luego bajan Maxima como software. Muy simple y funciona de miedo.
Pueden bajar Guadalinex desde http://www.guadalinex.org/que-es-guadalinex,

Qraquen