Indice

FIXME this is a draft

Matlab R14, come posso installarlo su Linux?

Preambolo

Prima o poi nella vita di un “aspirante ingegnere”, PURTROPPO occorrerà utilizzare Matlab… questo fatto, oltre al pochissimo tempo libero, ha fatto in modo che molte persone, fra cui alcuni miei conoscenti, non abbiano avuto modo di fare il GRANDE salto e passare a LINUX.

È da poco uscito Matlab 7.4 ( R2007a), che è molto più semplice da installare: bisogna eseguire solo lo script di installazione (install_matlab) e il gioco è fatto.

Personalmente l'ho provato: è vero che è più semplice da installare, ma è anche vero che risulta essere estremamente PESANTE. (Se il vostro PC ha poca RAM e non è molto potente lasciate perdere, perché è INUTILIZZABILE!!!)

Appunto per cercare di aiutare tutti coloro che hanno intenzione di effettuare questo “salto” ho deciso di illustrare l'esperienza accumulata sul campo nell'installare questo benedetto software su differenti distribuzioni.

Se volete lasciare commenti, descrivere la vostra esperienza, oppure richiedere un'ulteriore aiuto, registratevi al nostro sito. Tenteremo, nel limite delle nostre possibilità, di darvi una mano.

Lista dei principali bug risolti:

A mio avviso i migliori risultati sono stati ottenuti sotto Fedora core 5, mentre con le distribuzioni Debian based (ho provato Debian Etch) ho rilevato alcuni piccoli difettucci che non sto qui a menzionare.

Le prove di installazione sono state effettuate su un notebook Acer TravelMate 250, Pentium 4 2.8Ghz e 256MB di RAM e la versione di Matlab utilizzata è la Matlab 7 R14.

Ovviamente in quest'articolo troverete TANTISSIME altre informazioni e soluzioni!!!

Grazie per l'attenzione e buona lettura!!!

Fedora Core 6

Finalmente, lo so che è tardi, sono riuscito ad installare la mia R14 anche su Fedora Core 6. Come prima cosa ricordatevi di installare Java SE seguendo la procedura illustrata sul nostro sito. Fatto ciò non ci resta che iniziare:

  1. Per prima cosa bisognerà creare una directory all'interno del nostro sistema /usr/local/matlab7 (entrando in modalità super-utente):
    $ su -
    Parola d'ordine: <hidden password>
    # mkdir /usr/local/matlab7 
    

    all'interno di questa directory bisognerà copiarci il file license.dat (il file che vi viene fornito con l'acquisto della licenza).

  2. Prima di far eseguire lo script install (ricordatevi di effettuare questa operazione da super utente), presente nel primo cd-rom ricordatevi di disabilitare SELinux.
    setenforce 0 # disabilita SELinux
    setenforce 1 # abilita SELinux
    

    N.B. Al termine dell'installazione SELinux può essere riattivato.

  3. Una volta disabilitato SELinux si può procedere tranquillamente con l'installazione dei tre cd-rom in nostro possesso. Inserite il primo cd-rom ed avviate lo script install.
  4. Arrivati a questo punto non ci resta che avviare lo script install_matlab presente all'interno della directory matlab7, quella dove voi avete deciso di installare Matlab, nel mio caso (e di tutti coloro che hanno seguito questa piccola guida):
    # /usr/local/matlab7/install_matlab
    

    avviando questo script da super utente e rispondendo alle varie domande lo script sistemerà quasi tutto…. (lo devo ammettere io ho risposto a tutto Yes….senza troppi complimenti)

  5. In caso all'avvio di Matlab si riceva un warning che indichi che il programma non ha accesso alle openGL bisognerà digitare da terminale i seguenti comandi:
     
     # cd ${MATLAB_ROOT}/sys/os/glnx86
     # mv libgcc_s.so.1 libgcc_s.so.1_orig
     # ln -sf /lib/libgcc_s.so.1 ./
    
  6. Simulink con Fedora Core 6 mi ha dato qualche problema, se al primo avvio vi darà un'errore del genere (è all'inizio della lista di errori che vi si presenterà di fronte):
    ??? Can't load '/usr/local/matlab/bin/glnx86/libmwsimulink.so': libXft.so.1: cannot open shared object file: No such file or directory undefined symbol: FcPatternInsertElt
    

    Aprite una finestra del terminale, entrate come super-utente (su -), e digitate i seguenti comandi:

    # updatedb && locate libXft.so
    /usr/lib/libXft.so
    /usr/lib/libXft.so.1.1
    /usr/lib/libXft.so.2
    /usr/lib/libXft.so.2.1.2
    # ln -s /usr/lib/libXft.so.2 /usr/lib/libXft.so.1
    

    Riavviando matlab e rieseguendo Simulink questa volta vi dovrebbe dare il seguente errore:

    ??? Can't load '/usr/local/matlab/bin/glnx86/libmwsimulink.so': /usr/local/matlab/bin/glnx86/libqt-mt.so.3: undefined symbol: XftFreeTypeOpen
    

    Per risolvere anche questo problema digitate i seguenti comandi:

    # yum install qt
    (solo se ancora non sono state installate sul proprio sistema )
    # mv /usr/local/matlab7/bin/glnx86/libqt-mt.so.3 /usr/local/matlab7/bin/glnx86/libqt-mt.so.3_backup
    (in maniera da preservare la copia originale)
    # ln -s /usr/lib/qt-3.3/lib/libqt-mt.so.3 /usr/local/matlab7/bin/glnx86/libqt-mt.so.3
    
  7. Se Matlab si chiude improvvisamente quando provate ad interagire con i grafici che avete generato, e compare un errore legato alla libreria libmwm_ir.so, provate a seguire la procedura descritta qui, dovrebbe fare a caso vostro!!!.

LIBMAPLE.SO

Avviate Matlab ed eseguite questi due comandi:

syms x
taylor(exp(-x))

quasi certamente riceverete quest'errore:

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': .

La soluzione è disponibile sul sito della mathworks.

In pratica dovete scaricarvi il file presente il fondo alla pagina linkata (questo): libmaple.zip ( state attenti … il link dà problemi. Ricordate, tasto destro del mouse “Salva destinazione con nome…” e rinominate il file da “attachment.html” in “libmaple.zip”)

  1. scompattate il file;
  2. aprite una finestra di terminale, ed entrate come super utente;
  3. spostatevi nella cartella /usr/local/matlab7/bin/glnx86: ( N.B. /usr/local/matlab7/ rappresenta il percorso dove si trova la vostra directory di installazione)
    # cd /usr/local/matlab7/bin/glnx86
    
  4. create una copia di backup del file libmaple.so:
    # mv libmaple.so libmaple.so_b
    
  5. copiateci dentro il nuovo file (quello che avete scaricato e scompattato):
    # mv /<directory dove si trova il file>/libmaple.so .
    

ri-eseguite i due comandi Matlab menzionati all'inizio e otterrete: 1-x+1/2*x^2-1/6*x^3+1/24*x^4-1/120*x^5

Fedora Core 5

L'installazione in se è molto semplice: basta seguire alcuni accorgimenti. Prima di tutto bisogna aver installato sulla propria macchina Java SE seguendo la procedura illustrata sul nostro sito.

Una volta finita l'installazione di Java si può procedere con l'installazione del nostro beneamato Matlab:

  1. Per prima cosa bisognerà creare una directory all'interno del nostro sistema /usr/local/matlab7 (entrando in modalità super-utente):
     
    $ su -
    Parola d'ordine: <hidden password>
    # mkdir /usr/local/matlab7 
    

    all'interno di questa directory bisognerà copiarci il file license.dat (il file che vi viene fornito con l'acquisto della licenza).

  2. Prima di far eseguire lo script install (ricordatevi di effettuare questa operazione da super utente), presente nel primo cd-rom ricordatevi di disabilitare SELinux.
    setenforce 0 # disabilita SELinux
    setenforce 1 # abilita SELinux
    

    N.B. Al termine dell'installazione SELinux può essere riattivato.

  3. Una volta disabilitato SELinux si può procedere tranquillamente con l'installazione dei tre cd-rom in nostro possesso. Inserite il primo cd-rom ed avviate lo script install. <note warning>

Fate molta attenzione a non saltare nessun cd-rom. Ancora oggi, ogni volta che installo Matlab, non riesco a capire l'utilità del tasto Skip presente all'interno della finestra di installazione.

Quindi, quando il sistema vi avvertirà di effettuare il cambio di CD, smontate il cd-rom presente nel vostro lettore e montate il successivo. </note>

  1. Alla fine dell'installazione copiate il file license.lic nella directory /usr/local/matlab7/etc
  2. Ricordate di dare al nostro utente i “diritti” di accesso al file license.lic:
    # chown giuseppe /usr/local/matlab7/etc/license.lic
    
  3. Arrivati a questo punto non ci resta che avviare lo script install_matlab presente all'interno della directory matlab7, quella dove voi avete deciso di installare Matlab, nel mio caso (e di tutti coloro che hanno seguito questa piccola guida):
    # /usr/local/matlab7/install_matlab
    

    avviando questo script da super utente e rispondendo alle varie domande lo script sistemerà quasi tutto…. (lo devo ammettere io ho risposto a tutto Yes….senza troppi complimenti)

  4. Dopo tutto questo al primo avvio di matlab non si riesce ad avviare simulink, ricevendo un errore simile a questo:
    ??? Can't load '/usr/local/matlab/bin/glnx86/libmwsimulink.so': /usr/lib/libXft.so.1
    

    Per risolvere questo problema, procuratevi il seguente pacchetto: xorg-x11-libs-6.8.2-37.FC4.49.2.1.i386.rpm. Non vi resta che scompattate il pacchetto (tasto destro del mouse → estrai), entrare nella directory del file appena scompattato e recarvi nella sottodirectory /usr/X11R6/lib e cercate il file libXft.so.1.1. Copiate questa libreria all'interno della directory /usr/lib/ presente nel vostro sistema e create il seguente link simbolico:

     
     # ln -s /usr/lib/libXft.so.1.1 /usr/lib/libXft.so.1
    
  5. Un altro problema che sarete chiamati a risolvere riguarda le openGL. Per risolvere questo problema occorre, prima di tutto, creare un'apposita cartella, ad esempio:
     # mkdir /usr/local/matlab-support 
    

    All'interno di questa directory bisognerà linkarvi i due file presenti nella sottodirectory qui riportata (ricordati che il percorso /usr/local/matlab7/ rappresenta il TUO percorso di installazione):

     # cd /usr/local/matlab7/sys/opengl/lib/glnx86
     # ln -s libGL.so /usr/local/matlab-support/
     # ln -s libGLU.so /usr/local/matlab-support/
    
  6. Per facilitare l'avvio di Matlab vi consiglio di realizzare sul desktop un file di testo (ad esempio usando gedit o kate) e all'interno copiateci questo script:
    #! /bin/sh
    #
    # Script di avvio di Matlab
    
    LD_LIBRARY_PATH=/usr/local/matlab-support/:$LD_LIBRARY_PATH /usr/local/matlab7/bin/matlab -desktop
    

    Fornite i permessi di esecuzione a questo script:

    $ chmod +x /.......( nome e percorso dello script creato )...
    

    <note>

E' ovvio che non è obbligatorio realizzare lo script basta copiare in una finestra del terminale la seguente riga e premere “invio”:

LD_LIBRARY_PATH=/usr/local/matlab-support/:$LD_LIBRARY_PATH /usr/local/matlab7/bin/matlab -desktop

</note> Vi posso tranquillamente comunicare che avviando lo script scritto in precedenza ( punto 9 ) dovreste essere in grado di utilizzare Matlab senza problemi…

In caso di problemi ( spero che non ne abbiate perché sarà molto difficile darvi una mano… specie con questi programmi precompilati è un “casino”, ci sono troppe variabili in gioco ), o in caso vogliate rilasciare un parere, un appunto per sviluppare questa sezione, non esitate a contattarci via email o tramite i commenti…

Fedora Core 4

Fino al punto 5 installare Matlab su Fedora Core 4 e Fedora Core 5 è identico, compresa l'installazione di Java che deve essere presente e ben funzionante. In Fedora Core 4 per far funzionare il tutto effettuate le seguenti operazioni (comandi trovati sul sito di Mathworks…in funzione degli errori riscontrati durante le prime settimane di utilizzo):

  1. In caso all'avvio di matlab si riceva un warning che indichi che il programma in questione non ha accesso alle openGL bisogna digitare da terminale i seguenti comandi:
    # cd ${MATLAB_ROOT}/sys/os/glnx86
    # mv libgcc_s.so.1 libgcc_s.so.1_orig
    # ln -sf /lib/libgcc_s.so.1 ./
    
  2. Per consentire a Matlab di funzionare correttamente, prima di eseguire il programma (basta una volta per sessione) ricordati di disabilitare SELinux (setenforce 0, come visto al punto 2 riguardante Fedora Core 5) e digitare, rigorosamente da utente “normale”, le seguenti istruzioni:
    $ export LD_ASSUME_KERNEL=2.4.1 
    $ matlab
      
    oppure:
     
    $ LD_ASSUME_KERNEL=2.4.1 matlab
    

VALIDO PER FEDORA 4,FEDORA 5 e FEDORA 6

Se durante il normale utilizzo di Matlab, in particolare, svolgendo alcune operazioni come “Figure Properties…” oppure generando delle figure a partire da un M-file, in uscita si otterrà un errore simile a questo:

Configuration:
 MATLAB Version: 7.0.0.19901 (R14)
 Operating System: Linux 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686
 Window System: The XFree86 Project, Inc (40300000), display :0.0
 Current Visual: 0x23 (class 4, depth 24)
 Processor ID: x86 Family 15 Model 2 Stepping 9, GenuineIntel
 Virtual Machine: Java 1.4.2_02 with Sun Microsystems Inc. Java HotSpot(TM) Client VM
 (mixed mode)
 Default Charset: UTF-8
 
 Register State:
 eax = 00000000 ebx = b65fa480
 ecx = 00000000 edx = a4fab858
 esi = a4fac428 edi = 08723d70
 ebp = bfff4a18 esp = bfff49d0
 eip = b65bb733 flg = 00210286
 
 Stack Trace:
 [0] libmwm_ir.so:mps_sweep_term_pools(0x08723cd4, 0xa4fac428, 0x08e95d60 "high, just return input.\n y ", 0xb614cc0a) + 211 bytes
 [1] libmwm_interpreter.so:in_delete_ir_record(_ir_context*, _ir_record*)(0x08723cd4, 0xbfff4cc0, 0xbfff4c30, 0xbfff4ad0) + 117 bytes
 [2] libmwm_interpreter.so:Mfh_mp::inCompileMfile(char const*)(0x08506810, 0x08dd14d5 "/usr/local/matlab/toolbox/matlab..", 0, 0xb70e64b9) + 2106 bytes [3] libmwm_interpreter.so:Mfh_mp::inCompileMOrLoadPFile()(0x08506810, 0xb7377660, 0xb7280600, 0) + 1350 bytes
 [4] libmwm_interpreter.so:Mlm_mp::load_file()(0xb4b8f300, 1, 0xbfff6018, 0xb73593fe) + 51 bytes
 [5] libmwm_dispatcher.so:Mlm_file::load_mf()(0xb4b8f300, 0x9b1fc150, 0xbfff6068, 0xb73278e6) + 127 bytes

SOLUZIONE:

  1. rinomina il seguente file: /usr/local/matlab7/bin/glnx86/libmwm_ir.so
    # cd /usr/local/matlab7/bin/glnx86
    # mv libmwm_ir.so libmwm_ir.so.old
    
  2. scarica il seguente file da Mathworks: libmwm_ir.so
  3. posiziona la libreria scaricata in /usr/local/matlab7/bin/glnx86/ e il gioco è fatto.

Debian Etch/Ubuntu

Accertatevi di aver installato Java: digitate su un terminale java -version, se non risulta essere installato seguite le istruzioni presenti sul nostro sito per procedere all'installazione di Sun Java.

Probabilmente il vostro utente è quello che detiene il server X, per concedere a tutti gli altri utenti (root compreso) di accedere al server X digitate:

$ xhost +

accediamo ad una nuova console, e acquisite i privilegi di super-utente ( su - etc… ), e, per avviare l'installazione:

# export DISPLAY=:0.0

N.B. un'alternativa potrebbe essere quella di avviare, dalla barra delle “Applicazioni”, un “Terminale di root”.

  1. Create la directory dove verrà installato Matlab:
    # mkdir /usr/local/matlab7
    

    e, al suo interno copiateci il file fornito con la licenza acquistata (lincense.dat).

  2. Lo script install presente sul primo cd-rom non può essere avviato così com'è ma dovrà essere modificato opportunamente visto che in Debian come in molte distribuzioni debian based (vedi Ubuntu) il CD-ROM non è eseguibile. Prima di modificare lo script dobbiamo creare una cartella nella nostra home e copiarci al suo interno tutto il contenuto del primo cd-rom in modo da poter editare lo script in questione. Editiamo lo script install sostituendo la seguente riga:
    ver=`/lib/libc.so.6 | head -1 | sed -e "s/^[^0-9]*//" -e "s/[ ,].*$//"`
    

    con

    ver=`objdump -x /lib/libc.so.6|egrep "GLIBC_"|tail -1|awk -F_ '{print $2}'`
    

    Fate molta attenzione che tra egrep” e GLIBC ci sia un solo un TAB. In caso durante l'avvio dello script o di matlab si riscontrino degli strani errori ricontrollate che ci sia un solo TAB.

  3. Aprite un ”terminale” e verificate che objdump sia un comando riconosciuto; in caso questo comando non venga trovato bisognerà installare il pacchetto binutils:
    # apt-get install binutils
    
  4. Avviate l'installazione eseguendo da root lo script ”install” precedentemente modificato:
    # /...directory_temporanea.../install
    
  5. Finita l'installazione del primo cd-rom, quello copiato sull'HD, potete proseguire installazione direttamente da cd-rom.
  6. Per permettere che Matlab venga eseguito correttamente dobbiamo editare lo script oscheck:
    # cd /usr/local/matlab7/bin/util/
    # vi oscheck.sh
    

    e sostituite la riga seguente:

    ver=`/lib/libc.so.6 | head -1 | sed -e "s/^[^0-9]*//" -e "s/[ ,].*$//"`
    

    con

    ver=`objdump -x /lib/libc.so.6|egrep" GLIBC_"|tail -1|awk -F_ '{print $2}'`
    

    ricordati ancora una volta che tra egrep” e GLIBC ci sia un solo TAB.

  7. Alla fine dell'installazione copiate il file license.lic nella directory /usr/local/matlab7/etc
  8. Ricordate di dare al nostro utente i “diritti” di accesso al file license.lic:
    # chown giuseppe /usr/local/matlab7/etc/license.lic
    
  9. Per completare l'installazione modificate anche lo script /usr/local/matlab7/install_matlab sostituendo sempre la medesima riga:
    ver=`/lib/libc.so.6 | head -1 | sed -e "s/^[^0-9]*//" -e "s/[ ,].*$//"`
    

    con

    ver=`objdump -x /lib/libc.so.6|egrep" GLIBC_"|tail -1|awk -F_ '{print $2}'`
    

    ricordando ancora che tra egrep” e GLIBC ci sia un solo TAB

  10. Avviate lo script appena modificato:
    # /usr/local/matlab7/install_matlab
    
  11. In caso all'avvio di matlab si riceva un warning che indichi che il programma in questione non ha accesso alle openGL bisogna digitare da terminale i seguenti comandi:
    # cd ${MATLAB_ROOT}/sys/os/glnx86
    # mv libgcc_s.so.1 libgcc_s.so.1_orig
    # ln -sf /lib/libgcc_s.so.1 ./
    
  12. Se si desidera avviare matlab per mezzo di un'icona d'avvio:
    setsid /usr/local/matlab7/bin/matlab -desktop
    

    N.B. Le immagini da utilizzare come icone sono presenti nella sottodirectory: /usr/local/matlab7/X11/icons