sabato 21 ottobre 2006

Matlab Symbolic Toolbox sotto Linux - Come sistemare la GLIBC_2.0

Uella! Galvanizzato anche solo minimamente dalle 2 (e dico 2) visite grazie all'articolo su KOctave, vi rendo partecipi della scoperta riguardo al Symbolic Toolbox di Matlab con Kubuntu, che ieri, dopo non poche imprecazioni sono riuscito a configurare.
Ovviamente stiamo parlando del computer del mio vicino, che guarda caso usa Kubuntu con Kernel 2.6 e ha Matlab con la licenza e ogni tanto me lo fa usare per l'univertità! :-)
Bene, ieri mi sono trovato ad avere assoluto bisogno del Symbolic Toolbox per fare un'operazione, sapevo già che non andava ma ho provato lo stesso... e Matlab come le volte precenti mi ha risposto picche così:
Unable to load mex file: /usr/local/matlab7/toolbox/symbolic/maplemex.mexglx.
/usr/local/matlab7/bin/glnx86/libmaple.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
??? Invalid MEX-file '/usr/local/matlab7/toolbox/symbolic/maplemex.mexglx': .

Error in ==> maple at 104
[result,status] = maplemex(statement);

Error in ==> sym.maple at 85
[result,status] = maple(statement);

Error in ==> sym.plus at 22
X = maple(A(:),'+',B(:));
Dopo aver installato praticamente tutte le librerie possibili e immaginabili di C e C++ ho trovato un post in un forum che dice semplicemente di eseguire questo comando prima dell'esecuzione di Matlab:
you@Kubuntu$ export LD_ASSUME_KERNEL=2.4.1
In sostanza il comando dice alla shell di considerare i comandi da lì in avanti (in quella sessione di bash) come se si stesse usando la versione 2.4.1 del kernel.
In questo modo il Symbolic Toolbox funziona completamente, nel senso che se prima era possibile solo definire variabili simboliche ma non usarle a causa dell'errore sopra citato, ora la funzionalità è completa.
Da quanto ho usato questo trucchetto non ho riscontrato ulteriori problemi del genere.
Per facilitare l'avvio senza dover ogni volta ricordarmi questo comando ho modificato il profilo della shell di bash creando un alias nel file .bashrc nella cartella home in questo modo:
# Alias 4 Matlab
alias matlab-start='export LD_ASSUME_KERNEL=2.4.1; matlab -nosplash'
Personalmente ho inserito queste righe dopo il blocco some other aliases ma dovrebbe funzionare in ogni posizione del file di configurazione della shell di bash.
Grazie all'alias ogni volta che scrivo "matlab-start" la shell esegue in realtà i due comandi tra le virgolette. Notate che Matlab è chiamato con l'opzione "nosplash" che inibisce la finestrella con il simbolo di Matlab all'avvio, questo velocizza un po' lo startup dell'applicazione ma se volete ri-abilitarlo basta che togliete l'opzione quando create l'alias in .bashrc
E' tutto, spero di essere stato abbastanza chiaro, se avete problemi commentate e vedremo!
Buon lavoro con il Symbolic Toolbox di Matlab!

9 commenti:

  1. aaargh!!! Non ce la posso fare!! Sto cercando di avere un'installazione decente di Octave e OctaveForge sul mio bellissimo iBook con Mac OS X... ma è impossibile, ti devi fare degli sbattimenti assurdi per far funzionare la dannata funione sym, e in un giorno sono riuscito ad installare e disinstallare Octave 5 volte!! Ma perché non fanno un pacchetto autoinstallante, voglio dire... sono un Mac User, a me piacciono le cose belle e facili, che (come direbbe Steve Jobs) le scarichi e "BOOM!", funzionano!

    MANNAGGIAAAAAA!!

    ps: sto scaricando la edubuntu live per il WC e mi sto facendo spedire al 6.06 LTS per PC e Mac... per caso hai provato ad upgradare alla Edgy?

    RispondiElimina
  2. No, non ho ancora provato ma penso di farlo presto sul fisso!

    Per Octave stava smadonnando anche MacTeo e anche su Linux non è una passeggiata.... ossia funziona tutto (soprattutto octave-forge ;-P) ma non il comando legend dagli script e ti puoi immaginare lo sbattimento, anche a Teo non funzionava legend da script, prova a controllare!

    C'è lo stesso un modo per fare la legenda dando un comando plot un po' tamarrato ma il problema verò è GNUPlot ancora troppo allo stato primordiale.

    Cmq non getto la spugna ho intenzione di provare altri programmi per i grafici da interfacciare con octave.

    RispondiElimina
  3. io ho letto da qualche parte che esistono programmi diversi da GNUPLOT per il plot con octave, qualcosa tipo proplot o plotpro, non mi ricordo!
    Davvero non funziona legend? Eppure in octave-forge la funzione per il legend c'è! Bah, certe volte mi chiedo perché il software Open debba essere così complicato! L'esempio da seguire dovrebbe essere quello di FireFox, OpenOffice e lo stesso Ubuntu!

    RispondiElimina
  4. D'accordissimo! L'idea che però mi sono fatto sull'inaffidabilità di alcuni progetti è che materialmente e fisiologicamente non ci siano abbastanza persone interessate (o con il tempo necessario) per mettersi a sviluppare in modo costante e sistematico.
    Questo è proprio il caso di Octave dove si possono notare gli sforzi immani fatti per tirare fuori una nuova release con qualche cosina in più e meno bachi, ma vista la tempistica media di uscita delle versioni dà proprio l'idea che siano veramente sforzi al limite delle possibilità dell'attuale team di sviluppo.

    Per il comando legend la faccenda è davvero strana, se tu lo metti da linea di comando funziona alla perfezione, ma quando lo inserisci in uno script s'incazza! E' davvero inspiegabile questa faccenda, io all'inizio credevo che fosse un ploblema di codifica ma poi ho cambiato idea, infatti tutto il resto dello script funziona bene, invece se provi a cambiare codifica non parte proprio nulla, anzi si blocca subito perchè non riconosce più i simboli dei commenti per dirne una a caso!

    Per i programmi alternativi per plottare ho provato a mettere kplot e octaveplot ma non ho approfondito abbastanza per arrivare a farli funzionare... bisogna cambiare qualcosa nelle impostazioni di Octave per farglieri vedere... farò sicuramente un post sull'argomento!

    Per ora 'notte... sto crollando :-)

    RispondiElimina
  5. Anch'io utilizzo matlab su linux (ho momentaneamente abbandonato octave data la mia necessità di utilizzare simulink). Il mio problema usando kubuntu è la visulizzazione dei font, che sono minuscoli (è possibile modificarli, ma non per es. nei grafici). Hai incontrato lo stesso problema? E in caso come l'hai risolto? Con matlab 7 R14 in suse il problema non c'era...

    RispondiElimina
  6. Ciao "anonimo", benvenuto su Remmirath!
    Ho dato un'occhiatina per i font: per modificare quelli generici dell'interfaccia del programma basta andare in Edit -> Preferences e modificarli.

    Per i grafici invece non si può agire da lì.. un metodo che funziona ma che fa perdere tempo è quello di modificare "a mano" il plot appena fatto visualizzando le proprietà (degli assi o del titolo) con il tasto destro del mouse.
    Si apre sotto al grafico un blocco con le proprietà dell'elemento selezionato e tra queste c'è anche il carattere che si può ingrandire e modificare a piacimento.

    Le stesse proprietà DEVONO essere modificabili anche da linea di comando, bisogna solo capire COME!

    Per quanto riguarda gli assi è disponibile il comando di basso livello AXES che permette di impostare da linea di comando le stesse proprietà che si aprono nel box quando si selezionano gli assi nella GUI.

    Per quanto riguarda il font del titolo non sono riuscito a trovare qualcosa di equivalente... prova a dare un'occhiata ai comandi GET e SET anche se in questi non ho trovato nulla di esplicito sulle dimensioni del font del titolo, ma solo sulle impostazioni della figura in generale.

    RispondiElimina
  7. Thanks!
    Your post really helped me!!!

    RispondiElimina
  8. slackwarelife12/15/2006 11:44 AM

    Nel caso qualcuno di voi avesse trovato dei problemi con la nuova Ubuntu/Kubuntu 6.10 dove sembra che questo trucchetto non funzioni, posto il link dove ho trovato la soluzione definitiva per tutte le versioni di Linux:

    http://forum.ubuntu-fr.org/viewtopic.php?pid=575013

    Di seguito una breve spiegazione:

    scaricare da questo sito la libreria libmaple.so

    http://rapidshare.com/files/6442064/libmaple.zip

    Questa libreria è stata riscritta dalla matworks per non chiamare più GLIBC_2.0

    Deve essere coppiuata in $MATLAB/bin/glnx86 (fate copia di backup della precedente).

    Grazie e buona giornata

    RispondiElimina
  9. Grazie mille slackwarelife... oggi era destino che mi piovesse dal web la soluzione di questo problema, infatti anche un anonimo mi ha postato sulla versione inglese un commento con la issue bella spiegata nel sito della mathworks! LINK
    Che dire proverò la soluzione proposta e farò un nuovo post quando avrò tempo; non per gloria personale ma giusto per fare da mirror e aumentare la probabilità che i diversi utenti trovino la soluzione sul web!
    Per finire ringrazio ancora e ti linko spero in modo corretto... non so che casino abbia fatto blogger col tuo link nel commento ;-)
    Il sito di slackwarelife è QUESTO!
    'notte a tutti!
    see ya!

    RispondiElimina