domenica 28 febbraio 2010

Installare Sage su Sabayon Linux

Dopo aver combattuto per tre giorni con Mathematica su Windows, ho deciso che ne avevo abbastanza. Il mio problema era piuttosto semplice: verificare se la mia tecnica di risoluzione numerica di una classe di modelli forniva risultati corretti, confrontandola con la soluzione analitica nota. La forma analitica della soluzione non era neanche troppo complessa: un semplice integrale e qualche costante qua e la. Ma niente da fare. Sintassi incomprensibile, stalli indefiniti, errori numerici di qualunque tipo e genere. Ad un tratto, mi sono ricordato di chi sono: quando mai io ho usato Winzozz, se non nei primordi della mia adolescenza ignorante? Non c'è un'alternativa valida a Mathematica in ambiente open source? So che di MatLab esiste una versione per Linux ma, essendo contrario per principio all'utilizzo software proprietario, mi sono rifiutato di installarlo per vedere se riuscivo a cavare un ragno dal buco. Così ho domandato un po' in giro e ho travato Sage. Sage si candida come il sostituto naturale in ambiente open source per MatLab e Mathematica. In realtà, non è un vero e proprio software a sé stante ma una sorta di front end che permette di utilizzare tutta una serie di altri software matematici già presenti in Linux come Octave, Maxima, ecc.

Passiamo all'installazione. Il pacchetto per Sage non è presente sul Portage nè tanto meno su Entropy. Per installare il tutto, quindi, è necessario andare a cercare l'ebuild da qualche parte. Esiste un overlay completamente dedicato a Sage: sage-on-gentoo. Per prima cosa quindi è necessario installare l'overlay tramite layman:
$ sudo layman -L
$ sudo layman -a sage-on-gentoo
Se, come nel mio caso, layman installa gli overlay in /usr/local/portage/layman allora, dopo aver lanciato i comandi suddetti, vi ritroverete con una nuova directory /usr/local/portage/layman/sage-on-gentoo. In tale directory sono contenute, tra l'altro, le directory package.use e package.keyword con due file di nome sage al loro interno. Il contenuto del file sage presente nella directory package.keyword va copiato all'interno del vostro file /etc/portage/package.keyword oppure, nel caso in cui utilizziate package.keyword in forma di directory, sarà possibile copiare direttamente il file sage al suo interno. Tale operazione serve a smascherare i pacchetti necessari a sage per essere installato. La stessa cosa va fatta per il file sage contenuto nella directory package.use il cui contenuto va copiato nel vostro file /etc/portage/package.use. Anche in questo caso se utilizzate package.use in forma di directory potete semplicemente copiare il file sage al suo interno. Questa operazione serve per settare correttamente le USE flags affinché le dipendenze di sage vengano compilate con tutte le funzionalità necessarie.
$ sudo echo #SAGE >> /etc/portage/package.keyword
$ sudo cat /usr/local/portage/sage-on-gentoo/package.keyword/sage >> /etc/portage/package.keyword
$ sudo echo #SAGE >> /etc/portage/package.use
$ sudo cat /usr/local/portage/sage-on-gentoo/package.use/sage >> /etc/portage/package.use
Fin qui stiamo semplicemente seguendo le istruzioni contenute nella pagina principale del sito dedicato all'overlay sage-on-gentoo. Tali istruzioni non sono risultate sufficienti nel mio caso: alcuni pacchetti risultavano ancora mascherati e alcune USE flags non erano ancora settate bene.
Ho sistemato il tutto con:
$ sudo echo "net-zope/zope-i18nmessageid **" >> /etc/portage/package.keyword
$ sudo echo "sci-mathematics/maxima ecl -sbcl" >> /etc/portage/package.use
$ sudo echo "dev-libs/boehm threads" >> /etc/portage/package.use
$ sudo echo "dev-libs/boehm threads" >> /etc/portage/package.use
Ora potete partire con la compilazione di sage con un bel
$ sudo emerge sage
Mettetevi comodi ci vorrà un po' di tempo.

PS: se la compilazione fallisce provate a settare la USE flag thread anche per il pacchetto media-gfx/tachyon e a selezionare l'implementazione atlas per le librerie lapack tramite:
$ sudo eselect lapack set at