Installare da sorgenti le librerie wxwidgets e wxpython

Aggiornamento 3 marzo: pare che le versioni 2.8 siano state aggiunte ai repository ufficiali(o forse ci sono sempre state e io non le vedevo,boh) quindi adesso la via più semplice per installarle è appunto usare il gestore pacchetti.

Sono commosso, dopo tre giorni a sbattere la testa sul monitor sono riuscito ad installare le wxwidgets2.8 e le wxpython2.8!!! Devo dirlo, è stato un calvario e a un certo punto stavo mollando tutto in favore di un banale sudo apt-get install python-wxgtk2.6 che avrebbe fatto tutto al posto mio, ma in un precedente post avevo promesso che avrei fatto una guida su come compilare le fiammanti versioni 2.8, e così sono andato fino in fondo!

Per prima cosa ricordo che questo post è classificato come living on my edge, quindi in particolare non mi assumo nessuna responsabilità se seguendolo vi ritroverete un sistema non più funzionante e vi avviso che se avrete problemi e mi chiederete come risolverli potrei non avere la risposta(questo perchè, ricordo, sono ancora al livello niubbuntu). In giro si trovano i pacchetti .deb che rendono immediata l’installazione, quindi se avete una versione di ubuntu precedente a feisty vi consiglio di usare quelli, mentre per quanto riguarda feisty non sono riuscito a trovare niente(non che abbia cercato molto…) e in questo caso una compilazione a manina si rende necessaria.

Per cominciare sappiate che vi basterà scaricare un solo pacchetto, di 23MB, dalla pagina apposita di sourceforge .

Scompattiamo il pacchettone e ci ritroveremo davanti la directory wxPython-src-2.8.x.x, che in realtà è la directory di wxwidgets, con dentro una sottodirectory wxPython(che contiene appunto wxPython).

Ok,ora si entra nella “fase terminale” (Applicazioni -> Accessori -> Terminale).

Installiamo prima le wxwidgets(su linux chiamate wxGTK)

Per avere le wxwidgets sul nostro sistema, entriamo nella cartella appena scompattata, creiamoci una cartella wxGTK-2.8 e spostiamovicisimiti dentro:
cd /directory/in/cui/avete/scompattato/wxPython-2.8.x.x
mkdir wxGTK-2.8
cd wxGTK-2.8
Perchè questa mossa? credo proprio non sia indispensabile, in effetti; in realtà i creatori di wxwidgets fanno la supposizione che noi vogliamo compilare diverse volte il codice sfruttando di volta in volta differenti librerie grafiche, e quindi consigliano di creare una cartella separata per ogni compilazione; noi invece vogliamo compilare una volta sola e quindi volendo possiamo evitarci questo passaggio, io comunque ho seguito il consiglio, chè non si sa mai.

Il secondo passo è creare la configurazione per il compilatore, quindi diamo:

../configure --enable-unicode --with-gtk --with-gnomeprint --with-opengl --enable-optimize --enable-geometry --enable-graphics_ctx --enable-sound --with-sdl --enable-mediactrl --enable-display --enable-debug_flag --disable-precomp-headers

(notare i due puntini iniziali, servono a prendere un file dalla cartella superiore a quella in cui ci si trova al momento)

In questo modo le librerie verranno poi installate sotto /usr/local/lib .
Delle opzioni passate allo script di configurazione, le più importanti dovrebbero essere:
--with-gtk ci vuole, perchè in realtà wxwidgets può usare gtk1 gtk2 o motif(e se non sbaglio anche direttamente X11), quindi dobbiamo scegliere una delle tre da utilizzare sul nostro pc. Mettendo --with-gtk=1 sceglieremmo la obsoleta versione 1 delle gtk, mentre se non specifichiamo il numero verranno scelte automaticamente le gtk2 presenti nel sistema
--disable-precomp-headers sono stato costretto a metterla a causa di un errore che portava il compilatore a mangiarmi centinaia di megabyte inutilmente
--enable-debug_flag a quanto pare serve a fare in modo che le applicazioni python non crashino subdolamente quando si verifica qualche errore relativo alle wxPython
--with-opengl servirà poi per abilitare una estensione di wxPython, il quale altrimenti darà errore in fase di compilazione(lamentandosi di qualcosa riguardo le glCanvas). L’alternativa sarebbe disabilitare questa estensione durante la successiva installazione di wxPython

Le altre opzioni possiamo considerarle “varie ed eventuali”, io ho cercato di abilitare più roba possibile, casomai qualche applicazione dovesse richiederle.

A questo punto possiamo passare alla compilazione. Attenti ai passaggi, il primo è il classico
make
dopodiché dobbiamo dare
make -C contrib/src/gizmos
e successivamente
make -C contrib/src/stc
Se volete installare wxPython sono necessari tutti e tre i passi, altrimenti wxPython rifiuterà di installarsi e darà errore di compilazione; La directory contrib/ contiene funzionalità non sviluppate direttamente dai giovani di wxwidgets, per questo si trovano in directory separate e non vengono compilate, se non su esplicita richiesta. Anche qui l’alternativa sarebbe disabilitare le funzionalità corrispondenti in wxPython, ma siccome l’installazione da pacchetto .deb comprende queste funzionalità ho preferito mantenerle anche in questa installazione da sorgenti (e poi molti programmi ne fanno uso, quindi è meglio averle).

Dopo un bel po’ di tempo e un bel po’ di megabyte andati via come il pane, il compilatore termina il suo lavoro. È tempo di mietitura.

Niente di più semplice, basta ripetere, usando questa volta i privilegi di amministratore, i tre comandi appena dati aggiungendogli un bel install; quindi:
sudo make install
sudo make -C contrib/src/gizmos install
sudo make -C contrib/src/stc install

Ultimo passaggio, dobbiamo avvertire il linker dinamico(quello che si occupa di passare le librerie giuste ai programmi che ne fanno richiesta quando vengono aperti) che ci sono delle nuove librerie nel sistema.
Quindi apriamo il file di configurazione di ld con i privilegi di amministratore:
sudo nano /etc/ld.so.conf
(nano è l’editor di testo più sbrigativo perchè funziona direttamente nel terminale, ma se volete potete usare gedit)
e aggiungiamo in una nuova riga:
/usr/local/lib
(se avete installato in un posto diverso, sostituite la riga di conseguenza, se avete installato in /usr/lib potete risparmiarvi questo passaggio, perchè /usr/lib è automaticamente inclusa)
Modificato il file di configurazione di ld, non ci resta che aggiornare il tutto con il comando:
sudo ldconfig

Fatto!!! Ora le librerie wxwidgets sono installate nel sistema e disponibili ai programmi che le richiedono!


Ora tocca alle wxPython

È un mattone questa guida, lo so, ma rallegratevi, l’installazione di wxpython richiede un solo comando…
Ci troviamo ancora nella cartella che avevamo creato all’inizio dell’installazione di wxwidgets? usciamone ed entriamo nella directory di wxpython con:
cd ../wxPython
(cioè “sali di una directory e da lì entra nella directory wxPython”)
a questo punto il comando:
python2.5 setup.py install
darà il via alle danze della compilazione, al termine delle quali vi ritroverete con le wxpython installate nel sistema. Evviva!!!

(N.b. per fare tutto il lavoro e per scrivere questa guida mi sono basato sulle istruzioni per l’installazione del sito wxpython.org, presenti anche nel pacchetto sorgenti)

Annunci

4 responses to this post.

  1. So cosa intendi…

    Ho una suse 10.1 box e sto diventando matto a compilare wxPython 2.8.1.1 da source RPM.

    prima non ne voleva sapere di compilare mediactrl.cpp e ho
    dovuto compilarmi il source rpm anche di libxml2
    E adesso mi tira scemo perche’ a compilazione terminata, mi
    installa wxWidgets sotto /var/tmp/lib (giusto) mentre wxPython
    va a finire sotto /var/tmp/usr/local, che e’ il suo default, cosi’ rpm non riesce a combinarli insieme e fallisce.
    ——
    RPM build errors:
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wx-2.8*-gtk2-unicode
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wx-2.8*-gtk2-unicode/*
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wxaddons
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wxaddons/*
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wxversion.*
    File not found by glob: /var/tmp/wxPython-buildroot/usr/lib*/python2.4/site-packages/wx.pth
    —–

    ora devo capire come cambiare l’installation directory di default di wxPython…

    Rispondi

  2. scusami t3000, non avevo mai usato le funzioni per lo spam(non sapevo manco che esistesse), akismet ha riconosciuto il tuo commento come spam (non so per quale motivo)e io non mi sono accorto di niente fino ad oggi…tra l’altro ora che ho scoperto questo servizio di wp, mi sono accorto che ci sono altri 6 commenti moderati automaticamente, ma non riesco a trovarli, boh…

    Rispondi

  3. Posted by linux_user on 9 agosto, 2007 at 9:12 pm

    Grazie 😉
    Anch’io non riuscivo a far funzionare le wxWidgets, volevo installarle su Fedora6, ma anche se le installava appena compilavo un’applicazione e la eseguiva non trovava dei file .so
    Ho aggiunto la riga “/usr/local/lib” a “/etc/ld.so.config”
    e poi ho digitato ldconfig e… tutto OK!!!!

    Rispondi

  4. Hmmmm. Interesting…

    Rispondi

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: