Difference between revisions of "Trinity desktop environment raspberry pi 2"
(Aggiunto una nota circa l'avvenuto rilascio dei sorgenti corretti per TDENETWORK) |
(Corretto proseguo in prosieguo) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | {{header_it|title=Installazione di TDE 14.0.1 su SlackwareArm Linux 14.1| keyword={{Template:keyword_it_tde}}| description=Installazione di Trinity Desktop Environment e Slackware Linux 14.1 per architettura ARM su Raspberry Pi 2 | link_page=En/Trinity_desktop_environment_raspberry_pi_2}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
Il '''Raspberry Pi''' è un computer di dimensioni molto ridotte, occupa una superficie paragonabile ad una carta di credito, e dal costo contenuto, una trentina di Euro, progettato con il fine di '''insegnare la programmazione ai più giovani'''. La prima versione fu introdotta il 29 Febbraio del 2012 dalla [https://www.raspberrypi.org fondazione Raspberry Pi], che ne cura tuttora lo sviluppo e gestisce gli aggiornamenti. Nel Febbraio del 2015, è stato rilasciato il primo modello della nuova generazione di Raspberry Pi: Il '''Raspberry Pi 2'''. Una macchina dotata di un processore Quad Core a 900 MHz e 1 Gb di memoria RAM integrata: una potenza di calcolo di tutto rispetto, migliaia di volte superiore alla dotazione dei server che installavo alcuni anni fa. Ciò conferma come il Raspberry Pi sia ideale per lo sviluppo di progetti complessi ed articolati e che sto diventando veramente vecchio >_< . | Il '''Raspberry Pi''' è un computer di dimensioni molto ridotte, occupa una superficie paragonabile ad una carta di credito, e dal costo contenuto, una trentina di Euro, progettato con il fine di '''insegnare la programmazione ai più giovani'''. La prima versione fu introdotta il 29 Febbraio del 2012 dalla [https://www.raspberrypi.org fondazione Raspberry Pi], che ne cura tuttora lo sviluppo e gestisce gli aggiornamenti. Nel Febbraio del 2015, è stato rilasciato il primo modello della nuova generazione di Raspberry Pi: Il '''Raspberry Pi 2'''. Una macchina dotata di un processore Quad Core a 900 MHz e 1 Gb di memoria RAM integrata: una potenza di calcolo di tutto rispetto, migliaia di volte superiore alla dotazione dei server che installavo alcuni anni fa. Ciò conferma come il Raspberry Pi sia ideale per lo sviluppo di progetti complessi ed articolati e che sto diventando veramente vecchio >_< . | ||
Line 10: | Line 5: | ||
'''Raspian''', una versione di '''Debian GNU Linux''' appositamente modificata, è il sistema operativo ufficialmente supportato e fornito dalla [https://www.raspberrypi.org fondazione Raspberry Pi]. Esiste comunque la possibilità di installare altri sistemi operativi sugli apparati. Una qualsiasi distribuzione '''Linux''' compatibile con l''''architettura ARM''', ad esempio '''SlackwareARM 14.1''', girerà egregiamente sul Rasperry Pi 2 fornendo all'utenza tutte le applicazioni e gli strumenti abitualmente disponibili su un comune PC. Molte applicazioni risultano fluide e reattive, mentre altre perdono nel confronto con le prestazioni di un moderno portatile. Una nota dolente è rappresentata dall'ambiente desktop '''KDE 4''', che richiede una quantità di risorse forse eccessiva per il Raspberry Pi. Una potenziale soluzione consisterebbe nell'impiego di un desktop leggero ad esempio '''XFCE''', ma ciò comporta rinunciare a molte delle ottime applicazioni integrate in KDE. Una soluzione alternativa alquanto laboriosa, ma decisamente più soddisfacente consiste nell'installazione di TDE. Il progetto '''Trinity Desktop Environment''' ha lo scopo di continuare lo sviluppo del ramo 3 di KDE migliorando l'esperienza utente e mantenendo aggiornato il supporto hardware. TDE rappresenta un ambiente desktop maturo, ricco di applicazioni e funzionalità, decisamente più leggero di KDE 4 e, come tale, '''meglio indicato per macchine con risorse limitate'''. | '''Raspian''', una versione di '''Debian GNU Linux''' appositamente modificata, è il sistema operativo ufficialmente supportato e fornito dalla [https://www.raspberrypi.org fondazione Raspberry Pi]. Esiste comunque la possibilità di installare altri sistemi operativi sugli apparati. Una qualsiasi distribuzione '''Linux''' compatibile con l''''architettura ARM''', ad esempio '''SlackwareARM 14.1''', girerà egregiamente sul Rasperry Pi 2 fornendo all'utenza tutte le applicazioni e gli strumenti abitualmente disponibili su un comune PC. Molte applicazioni risultano fluide e reattive, mentre altre perdono nel confronto con le prestazioni di un moderno portatile. Una nota dolente è rappresentata dall'ambiente desktop '''KDE 4''', che richiede una quantità di risorse forse eccessiva per il Raspberry Pi. Una potenziale soluzione consisterebbe nell'impiego di un desktop leggero ad esempio '''XFCE''', ma ciò comporta rinunciare a molte delle ottime applicazioni integrate in KDE. Una soluzione alternativa alquanto laboriosa, ma decisamente più soddisfacente consiste nell'installazione di TDE. Il progetto '''Trinity Desktop Environment''' ha lo scopo di continuare lo sviluppo del ramo 3 di KDE migliorando l'esperienza utente e mantenendo aggiornato il supporto hardware. TDE rappresenta un ambiente desktop maturo, ricco di applicazioni e funzionalità, decisamente più leggero di KDE 4 e, come tale, '''meglio indicato per macchine con risorse limitate'''. | ||
− | Nel | + | Nel prosieguo dell'articolo verrà illustrato come installare la versione 14.0.1 del '''Trinity Desktop Environment''', '''TDE''' in breve, sul Raspberry Pi e SlackwareARM 14.1. |
Line 24: | Line 19: | ||
=== Preparazione della Scheda MicroSD === | === Preparazione della Scheda MicroSD === | ||
− | Le operazioni di installazione devono essere eseguite da un utente con privilegi elevati quale '''root'''. Salvo dove diversamente specificato nel | + | Le operazioni di installazione devono essere eseguite da un utente con privilegi elevati quale '''root'''. Salvo dove diversamente specificato nel prosieguo dell'articolo si presupporrà che stiate operando come root. |
Collegare la scheda al PC mediante l'apposito lettore. La scheda correttamente rilevata dovrebbe comparire nell'elenco dei dischi reso dal comando '''fdisk''' come nel seguente esempio: | Collegare la scheda al PC mediante l'apposito lettore. La scheda correttamente rilevata dovrebbe comparire nell'elenco dei dischi reso dal comando '''fdisk''' come nel seguente esempio: | ||
Line 35: | Line 30: | ||
Disk identifier: 0x00000000 | Disk identifier: 0x00000000 | ||
− | + | Device Boot Start End Blocks Id System | |
− | /dev/sdc1 8192 31116287 15554048 c | + | /dev/sdc1 8192 31116287 15554048 c W95 FAT32 (LBA) |
Scaricare l'immagine di installazione di '''SlacwareArm''' in una directory locale | Scaricare l'immagine di installazione di '''SlacwareArm''' in una directory locale | ||
Line 58: | Line 53: | ||
Disk identifier: 0x08dd8e65 | Disk identifier: 0x08dd8e65 | ||
− | + | Device Boot Start End Blocks Id System | |
− | /dev/sdc1 * 32 156287 78128 c | + | /dev/sdc1 * 32 156287 78128 c W95 FAT32 (LBA) |
=== Pacchetti di Installazione === | === Pacchetti di Installazione === | ||
Line 65: | Line 60: | ||
# Leggendo i pacchetti esportati via rete tramite protocollo NFS. | # Leggendo i pacchetti esportati via rete tramite protocollo NFS. | ||
# Leggendo i pacchetti da un supporto collegato via USB. | # Leggendo i pacchetti da un supporto collegato via USB. | ||
− | Nel | + | Nel prosieguo dell'articolo si utilizzerà la seconda opzione. Un elenco di locazioni da cui scaricare i pacchetti può essere reperito al [http://arm.slackware.com/getslack/ seguente indirizzo]. Una volta scaricati, i pacchetti costituenti SlackwareARM devono essere copiati sulla pennetta USB che dovrà essere collegata al Raspberry Pi durante l'installazione. |
=== Avviare l'Installazione di SlackwareARM === | === Avviare l'Installazione di SlackwareARM === | ||
Line 140: | Line 135: | ||
== Installazione di Trinity Desktop Environment su Raspberry Pi 2 == | == Installazione di Trinity Desktop Environment su Raspberry Pi 2 == | ||
− | Il 6 Settembre del 2015 è stata ufficialmente rilasciata la '''versione 14.0.1 del Trinity Desktop Environment'''. Si tratta di un rilascio di '''bug fix''' e rappresenta il risultato di svariati mesi di lavoro per correggere i problemi segnalati dagli utenti. '''Non esistono pacchetti precompilati di TDE per Slackware Linux'''. Non per PC e neppure per dispositivi basati su architettura ARM. Si dovrà pertanto procedere compilando i singoli pacchetti a partire dal codice sorgente. Gli archivi compressi contenenti il codice sorgente per i pacchetti possono essere scaricati dal seguente [http://tde-mirror.yosemite.net/trinity/releases/R14.0.1/downloads.html indirizzo]. Trattandosi di una versione di bug fix, la 14.0.1 non si discosta di molto dalla precedente 14.0.0 la cui procedura di compilazione è stata oggetto di un [[trinity_desktop_environment_14.0.0 |precedente articolo]] a cui si rimanda per una descrizione dettagliata degli script di compilazione. Nel | + | Il 6 Settembre del 2015 è stata ufficialmente rilasciata la '''versione 14.0.1 del Trinity Desktop Environment'''. Si tratta di un rilascio di '''bug fix''' e rappresenta il risultato di svariati mesi di lavoro per correggere i problemi segnalati dagli utenti. '''Non esistono pacchetti precompilati di TDE per Slackware Linux'''. Non per PC e neppure per dispositivi basati su architettura ARM. Si dovrà pertanto procedere compilando i singoli pacchetti a partire dal codice sorgente. Gli archivi compressi contenenti il codice sorgente per i pacchetti possono essere scaricati dal seguente [http://tde-mirror.yosemite.net/trinity/releases/R14.0.1/downloads.html indirizzo]. Trattandosi di una versione di bug fix, la 14.0.1 non si discosta di molto dalla precedente 14.0.0 la cui procedura di compilazione è stata oggetto di un [[trinity_desktop_environment_14.0.0 |precedente articolo]] a cui si rimanda per una descrizione dettagliata degli script di compilazione. Nel prosieguo dell'articolo verranno invece descritte le differenze e le aggiunte introdotte specificamente per la versione 14.0.1. |
=== Compilazione in Parallelo === | === Compilazione in Parallelo === | ||
Line 146: | Line 141: | ||
La variabile è stata introdotta nella riga che invoca il comando '''make''', immediatamente dopo la fase di configurazione del codice sorgente: | La variabile è stata introdotta nella riga che invoca il comando '''make''', immediatamente dopo la fase di configurazione del codice sorgente: | ||
+ | <syntaxhighlight lang="bash"> | ||
'''make''' VERBOSE=1 ${JOB_NUM} | '''make''' VERBOSE=1 ${JOB_NUM} | ||
+ | </syntaxhighlight> | ||
Come standard per i pacchetti si è optato per '''un livello di parallelismo pari a 6''' in accordo con i vecchi script ufficiali di compilazione di KDE 3 per Slackware. La variabile definita negli script SlackBuild deve essere impostata attraverso il file '''TDE.options''', contenente le opzioni di compilazione per l'intero ambiente desktop. | Come standard per i pacchetti si è optato per '''un livello di parallelismo pari a 6''' in accordo con i vecchi script ufficiali di compilazione di KDE 3 per Slackware. La variabile definita negli script SlackBuild deve essere impostata attraverso il file '''TDE.options''', contenente le opzioni di compilazione per l'intero ambiente desktop. | ||
+ | <syntaxhighlight lang="bash"> | ||
JOB_NUM=-j6 | JOB_NUM=-j6 | ||
+ | </syntaxhighlight> | ||
Per impostare un livello di parallelismo maggiore o minore sarà sufficiente variare il valore numerico impostato dopo l'opzione ''-j''. Un valore pari a ''-j1'' implicherà l'uso di un singolo core '''disabilitando di fatto la compilazione in parallelo'''. | Per impostare un livello di parallelismo maggiore o minore sarà sufficiente variare il valore numerico impostato dopo l'opzione ''-j''. Un valore pari a ''-j1'' implicherà l'uso di un singolo core '''disabilitando di fatto la compilazione in parallelo'''. | ||
=== Errori Dovuti al Parallelismo === | === Errori Dovuti al Parallelismo === | ||
Esistono segnalazioni da parte di utenti che lamentano l'insorgere di errori durante la compilazione di alcuni pacchetti di TDE quando il livello di parallelismo impostato è maggiore di 1. La maggior parte delle segnalazioni riguardano due pacchetti: '''tdebindings''' e '''tdemultimedia'''. I test eseguiti durante la stesura del presente articolo non hanno rilevato alcun problema, cionondimeno se tali problemi dovessero presentarsi sarà possibile aggirarli durante la compilazione impostando un valore di parallelismo pari ad 1. A tal fine dovrà essere modificato il contenuto del file globale '''TDE.options''', oppure le opzioni specifiche per il singolo pacchetto contentue nel relativo file '''local.options'''. Se ad esempio si volesse generare un pacchetto per '''tdebindings''' senza ricorrere alla compilazione parallela sarà sufficiente spostarsi nella directory contente gli script di compilazione, il codice sorgente ed il file local.options: /usr/src/trinity/base/tdebindings nel nostro caso, aprire il file '''local.options''' con un programma di elaborazione di testi a scelta ed aggiungere la riga: | Esistono segnalazioni da parte di utenti che lamentano l'insorgere di errori durante la compilazione di alcuni pacchetti di TDE quando il livello di parallelismo impostato è maggiore di 1. La maggior parte delle segnalazioni riguardano due pacchetti: '''tdebindings''' e '''tdemultimedia'''. I test eseguiti durante la stesura del presente articolo non hanno rilevato alcun problema, cionondimeno se tali problemi dovessero presentarsi sarà possibile aggirarli durante la compilazione impostando un valore di parallelismo pari ad 1. A tal fine dovrà essere modificato il contenuto del file globale '''TDE.options''', oppure le opzioni specifiche per il singolo pacchetto contentue nel relativo file '''local.options'''. Se ad esempio si volesse generare un pacchetto per '''tdebindings''' senza ricorrere alla compilazione parallela sarà sufficiente spostarsi nella directory contente gli script di compilazione, il codice sorgente ed il file local.options: /usr/src/trinity/base/tdebindings nel nostro caso, aprire il file '''local.options''' con un programma di elaborazione di testi a scelta ed aggiungere la riga: | ||
+ | <syntaxhighlight lang="bash"> | ||
JOB_NUM=-j1 | JOB_NUM=-j1 | ||
+ | </syntaxhighlight> | ||
Apportata la modifica sarà possibile lanciare immediatamente la compilazione del pacchetto tramite lo script SlackBuild presente nella medesima directory: | Apportata la modifica sarà possibile lanciare immediatamente la compilazione del pacchetto tramite lo script SlackBuild presente nella medesima directory: | ||
'''sh''' ./tdebindings.SlackBuild | '''sh''' ./tdebindings.SlackBuild | ||
Line 164: | Line 165: | ||
==== TDELIBS ==== | ==== TDELIBS ==== | ||
Durante il primo tentativo di compilare il pacchetto '''tdelibs''' la procedura è fallita rendendo il seguente errore: | Durante il primo tentativo di compilare il pacchetto '''tdelibs''' la procedura è fallita rendendo il seguente errore: | ||
+ | <syntaxhighlight lang="cmake"> | ||
[ 0%] Building C object dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o | [ 0%] Building C object dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o | ||
In file included from <command-line>:0:0: | In file included from <command-line>:0:0: | ||
Line 173: | Line 175: | ||
make[1]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/all] Error 2 | make[1]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/all] Error 2 | ||
make: *** [all] Error 2 | make: *** [all] Error 2 | ||
+ | </syntaxhighlight> | ||
Inizialmente si è pensato ad un potenziale problema derivante dal parallelismo introdotto dato che la versione 14.0.0 del pacchetto non presentava alcun difetto. Un secondo tentativo eseguito impostando l'opzione '''-j1''' ha reso esito analogo. Scartata la compilazione parallela come causa potenziale del problema si è proceduto a verificare che tutti i prerequisiti fossero stati correttamente installati e che il file '''ntqglobal.h''' fosse presente nel sistema. Il comando '''find''' ha confermato l'esistenza di un file con tale nome: | Inizialmente si è pensato ad un potenziale problema derivante dal parallelismo introdotto dato che la versione 14.0.0 del pacchetto non presentava alcun difetto. Un secondo tentativo eseguito impostando l'opzione '''-j1''' ha reso esito analogo. Scartata la compilazione parallela come causa potenziale del problema si è proceduto a verificare che tutti i prerequisiti fossero stati correttamente installati e che il file '''ntqglobal.h''' fosse presente nel sistema. Il comando '''find''' ha confermato l'esistenza di un file con tale nome: | ||
Line 182: | Line 185: | ||
Il problema è stato risolto '''aggiungendo un percorso di ricerca per i file include''' durante la fase di compilazione del codice sorgente. A tal fine sono state aggiunte le righe: | Il problema è stato risolto '''aggiungendo un percorso di ricerca per i file include''' durante la fase di compilazione del codice sorgente. A tal fine sono state aggiunte le righe: | ||
+ | <syntaxhighlight lang="bash"> | ||
# Add some include paths to the standard compiler flags otherwise the build | # Add some include paths to the standard compiler flags otherwise the build | ||
# process will fail with an error | # process will fail with an error | ||
SLKCFLAGS="${SLKCFLAGS} -I${PREFIX}/include" | SLKCFLAGS="${SLKCFLAGS} -I${PREFIX}/include" | ||
+ | </syntaxhighlight> | ||
Aventi lo scopo di accodare '''/opt/trinity/include''' all'elenco dei percorsi predefiniti. Lo script modificato gira con successo. | Aventi lo scopo di accodare '''/opt/trinity/include''' all'elenco dei percorsi predefiniti. Lo script modificato gira con successo. | ||
==== TDENETWORK ==== | ==== TDENETWORK ==== | ||
Nel caso del pacchetto '''tdenetwork''' il problema non si è presentato immediatamente, ma relativamente più tardi a procedura avanzata: durante la fase di copia dei file costituenti l'installazione. L'errore reso nel caso specifico era: | Nel caso del pacchetto '''tdenetwork''' il problema non si è presentato immediatamente, ma relativamente più tardi a procedura avanzata: durante la fase di copia dei file costituenti l'installazione. L'errore reso nel caso specifico era: | ||
+ | <syntaxhighlight lang="cmake"> | ||
[ 71%] Building CXX object krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o | [ 71%] Building CXX object krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o | ||
/tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp: In function 'void output(const char*, ...)': | /tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp: In function 'void output(const char*, ...)': | ||
Line 197: | Line 203: | ||
make[1]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/all] Error 2 | make[1]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/all] Error 2 | ||
make: *** [all] Error 2 | make: *** [all] Error 2 | ||
+ | </syntaxhighlight> | ||
Anche in questo caso si è proceduto verificando che il problema non fosse una conseguenza diretta del livello di parallelismo pari a 6, ma nuovamente i test hanno dimostrato che la causa dovesse essere cercata altrove. Leggendo la documentazione relativa alle classi TQString e TQCString interessate: | Anche in questo caso si è proceduto verificando che il problema non fosse una conseguenza diretta del livello di parallelismo pari a 6, ma nuovamente i test hanno dimostrato che la causa dovesse essere cercata altrove. Leggendo la documentazione relativa alle classi TQString e TQCString interessate: | ||
Line 204: | Line 211: | ||
Per ovviare definitivamente al problema è stata preparata la seguente '''patch''': | Per ovviare definitivamente al problema è stata preparata la seguente '''patch''': | ||
+ | <syntaxhighlight lang="cpp"> | ||
*** krdc/vnc/threads.cpp 2015-09-13 20:01:24.889992277 +0200 | *** krdc/vnc/threads.cpp 2015-09-13 20:01:24.889992277 +0200 | ||
--- krdc/vnc/threads.cpp 2015-09-13 19:59:20.899992324 +0200 | --- krdc/vnc/threads.cpp 2015-09-13 19:59:20.899992324 +0200 | ||
Line 222: | Line 230: | ||
va_end(args); | va_end(args); | ||
− | + | </syntaxhighlight> | |
+ | |||
Richiamata dallo script di compilazione mediante le righe: | Richiamata dallo script di compilazione mediante le righe: | ||
+ | <syntaxhighlight lang="bash"> | ||
# Patch the krdc/vncn/threads.cpp source file in order to solve an issue with the | # Patch the krdc/vncn/threads.cpp source file in order to solve an issue with the | ||
# output function. | # output function. | ||
− | + | patch -p0 -i ${SRCDIR}/threads_sprintf.patch | |
+ | </syntaxhighlight> | ||
In seguito, spulciando le segnalazioni presenti nel bug tracker del progetto Trinity ne è stata trovata una relativa al problema sopra descritto: [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2525 BUG 2525]. La patch è stata proposta come soluzione. | In seguito, spulciando le segnalazioni presenti nel bug tracker del progetto Trinity ne è stata trovata una relativa al problema sopra descritto: [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2525 BUG 2525]. La patch è stata proposta come soluzione. | ||
Line 263: | Line 274: | ||
* Smistare gli archivi contenenti il codice sorgente per i pacchetti nelle omonime directory contenute in '''base''', '''library''' e '''prerequisite'''. Il file '''TDE.options''', di cui viene fornito un esempio, contiene le opzioni di compilazione per l'intero ambiente: | * Smistare gli archivi contenenti il codice sorgente per i pacchetti nelle omonime directory contenute in '''base''', '''library''' e '''prerequisite'''. Il file '''TDE.options''', di cui viene fornito un esempio, contiene le opzioni di compilazione per l'intero ambiente: | ||
+ | <syntaxhighlight lang="bash"> | ||
# Global options used to build TDE. | # Global options used to build TDE. | ||
# | # | ||
Line 278: | Line 290: | ||
TAG="sg" | TAG="sg" | ||
TAR_OPTION="-xjvf" | TAR_OPTION="-xjvf" | ||
+ | </syntaxhighlight> | ||
* Aprire il file con un qualsiasi programma di elaborazione di testo ed impostare i valori desiderati per le variabili contenute. Le variabili che dovrebbero essere popolate con riguardo all'architettura e alle preferenze personali sono: | * Aprire il file con un qualsiasi programma di elaborazione di testo ed impostare i valori desiderati per le variabili contenute. Le variabili che dovrebbero essere popolate con riguardo all'architettura e alle preferenze personali sono: | ||
Line 294: | Line 307: | ||
Una nota a parte merita il pacchetto '''tde-i18n''' contenente i file di localizzazione in tutte le lingue supportate da TDE. Lo script principale contiene le istruzioni necessarie ad eseguirne la compilazione, ma l'operazione risulta essere molto onerosa in termini di tempo perciò '''le istruzioni sono commentate''' ed i pacchetti di localizzazione vengono ignorati. Se si desiderasse generare anche i file di localizzazione sarà necessario modificare lo script TDE.SlackBuild rimuovendo il commento dalla riga: | Una nota a parte merita il pacchetto '''tde-i18n''' contenente i file di localizzazione in tutte le lingue supportate da TDE. Lo script principale contiene le istruzioni necessarie ad eseguirne la compilazione, ma l'operazione risulta essere molto onerosa in termini di tempo perciò '''le istruzioni sono commentate''' ed i pacchetti di localizzazione vengono ignorati. Se si desiderasse generare anche i file di localizzazione sarà necessario modificare lo script TDE.SlackBuild rimuovendo il commento dalla riga: | ||
+ | <syntaxhighlight lang="bash"> | ||
# bash ./${PKG}.SlackBuild | # bash ./${PKG}.SlackBuild | ||
+ | </syntaxhighlight> | ||
modificandola in | modificandola in | ||
+ | <syntaxhighlight lang="bash"> | ||
bash ./${PKG}.SlackBuild | bash ./${PKG}.SlackBuild | ||
+ | </syntaxhighlight> | ||
=== Tempistiche === | === Tempistiche === | ||
Line 338: | Line 355: | ||
---- | ---- | ||
− | + | {{footer_it | link_page=En/Trinity_desktop_environment_raspberry_pi_2}} |
Latest revision as of 13:01, 2 May 2022
Benvenuti nella pagina Wiki di Simone Giustetti.
Lingue: English - Italiano
Il Raspberry Pi è un computer di dimensioni molto ridotte, occupa una superficie paragonabile ad una carta di credito, e dal costo contenuto, una trentina di Euro, progettato con il fine di insegnare la programmazione ai più giovani. La prima versione fu introdotta il 29 Febbraio del 2012 dalla fondazione Raspberry Pi, che ne cura tuttora lo sviluppo e gestisce gli aggiornamenti. Nel Febbraio del 2015, è stato rilasciato il primo modello della nuova generazione di Raspberry Pi: Il Raspberry Pi 2. Una macchina dotata di un processore Quad Core a 900 MHz e 1 Gb di memoria RAM integrata: una potenza di calcolo di tutto rispetto, migliaia di volte superiore alla dotazione dei server che installavo alcuni anni fa. Ciò conferma come il Raspberry Pi sia ideale per lo sviluppo di progetti complessi ed articolati e che sto diventando veramente vecchio >_< .
Raspian, una versione di Debian GNU Linux appositamente modificata, è il sistema operativo ufficialmente supportato e fornito dalla fondazione Raspberry Pi. Esiste comunque la possibilità di installare altri sistemi operativi sugli apparati. Una qualsiasi distribuzione Linux compatibile con l'architettura ARM, ad esempio SlackwareARM 14.1, girerà egregiamente sul Rasperry Pi 2 fornendo all'utenza tutte le applicazioni e gli strumenti abitualmente disponibili su un comune PC. Molte applicazioni risultano fluide e reattive, mentre altre perdono nel confronto con le prestazioni di un moderno portatile. Una nota dolente è rappresentata dall'ambiente desktop KDE 4, che richiede una quantità di risorse forse eccessiva per il Raspberry Pi. Una potenziale soluzione consisterebbe nell'impiego di un desktop leggero ad esempio XFCE, ma ciò comporta rinunciare a molte delle ottime applicazioni integrate in KDE. Una soluzione alternativa alquanto laboriosa, ma decisamente più soddisfacente consiste nell'installazione di TDE. Il progetto Trinity Desktop Environment ha lo scopo di continuare lo sviluppo del ramo 3 di KDE migliorando l'esperienza utente e mantenendo aggiornato il supporto hardware. TDE rappresenta un ambiente desktop maturo, ricco di applicazioni e funzionalità, decisamente più leggero di KDE 4 e, come tale, meglio indicato per macchine con risorse limitate.
Nel prosieguo dell'articolo verrà illustrato come installare la versione 14.0.1 del Trinity Desktop Environment, TDE in breve, sul Raspberry Pi e SlackwareARM 14.1.
SlackwareARM sul Raspberry Pi 2
Il primo passo consiste ovviamente nell'installare l'ultima versione disponibile di SlackwareARM sul Raspberry Pi 2. La fondazione Raspberry Pi non supporta la distribuzione derivata Slackware, nè SlackwareARM fornisce supporto per il Raspberry Pi. Non di meno l'operazione non si discosta molto da una normale installazione di Slackware Linux su PC ed in rete è possibile reperire documentazione esaustiva in merito. Le poche difformità nascono dalle differenze architetturali intercorrenti tra sistemi embedded e personal computer come ad esempio l'assenza di un BIOS, di un lettore CD/DVD e di altri componenti tipici di un PC.
Prima di procedere sarà necessario procurarsi:
- Una scheda MicroSD da 16 Gb su cui verrà installato il sistema operativo.
- Un lettore di schede MicroSD per PC.
- Una pennetta USB da almeno 4 Gb su cui copiare i pacchetti di installazione.
- Mouse USB, tastiera USB, monitor, cavi e tutto il necessario per il funzionamento del Raspberry Pi.
Preparazione della Scheda MicroSD
Le operazioni di installazione devono essere eseguite da un utente con privilegi elevati quale root. Salvo dove diversamente specificato nel prosieguo dell'articolo si presupporrà che stiate operando come root.
Collegare la scheda al PC mediante l'apposito lettore. La scheda correttamente rilevata dovrebbe comparire nell'elenco dei dischi reso dal comando fdisk come nel seguente esempio:
fdisk -l Disk /dev/sdc: 15.9 GB, 15931539456 bytes 255 heads, 63 sectors/track, 1936 cylinders, total 31116288 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdc1 8192 31116287 15554048 c W95 FAT32 (LBA)
Scaricare l'immagine di installazione di SlacwareArm in una directory locale
- cd /tmp
- wget http://rpi2.fatdog.eu/files/img/rpi2-slackwarearm-install_13Mar15_fd.img.xz
- wget http://rpi2.fatdog.eu/files/img/rpi2-slackwarearm-install_13Mar15_fd.img.xz.md5
Ad operazione terminata eseguire un controllo di congruenza per accertarsi che l'immagine non si sia corrotta durante il trasferimento:
- md5sum -c rpi2-slackwarearm-install_13Mar15_fd.img.xz.md5
Nel caso il comando rendesse un errore sarà necessario scaricare nuovamente il file immagine sperando che il problema non si ripeta. Altrimenti si potrà procedere copiando l'immagine sulla scheda MicroSD mediante il comando dd:
- xz -dc rpi2-slackwarearm-install_13Mar15_fd.img.xz | dd of=/dev/sdc bs=65536
Ove /dev/sdc è la scheda MicroSD collegata al PC e precedentemente rilevata. Il buon esito della copia potrà essere verificato utilizzando nuovamente il comando fdisk per accertarsi che le dimensioni della partizione siano mutate e che sia stato attivato il flag di boot:
fdisk -l Disk /dev/sdc: 15.9 GB, 15931539456 bytes 4 heads, 32 sectors/track, 243096 cylinders, total 31116288 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x08dd8e65 Device Boot Start End Blocks Id System /dev/sdc1 * 32 156287 78128 c W95 FAT32 (LBA)
Pacchetti di Installazione
Non esistono immagini ISO di SlackwareARM dato che la grande maggioranza dei dispositivi basati su architettura ARM non è dotata di lettore CD/DVD e che anche collegandone uno esterno via USB non sarebbe comunque possibile eseguire il boot dai supporti. SlackwareARM può essere installata in due modi dopo aver avviato il programma di installazione:
- Leggendo i pacchetti esportati via rete tramite protocollo NFS.
- Leggendo i pacchetti da un supporto collegato via USB.
Nel prosieguo dell'articolo si utilizzerà la seconda opzione. Un elenco di locazioni da cui scaricare i pacchetti può essere reperito al seguente indirizzo. Una volta scaricati, i pacchetti costituenti SlackwareARM devono essere copiati sulla pennetta USB che dovrà essere collegata al Raspberry Pi durante l'installazione.
Avviare l'Installazione di SlackwareARM
Ultimati i preparativi si potrà cominciare l'installazione vera e propria.
- Inserire la scheda MicroSD nell'apposito lettore integrato nel Raspberry Pi.
- Collegare tastiera e mouse USB.
- Collegare la chiavetta USB contenente i pacchetti di SlackwareARM precedentemente scaricati.
- Collegare il cavo HDMI/RCA al monitor.
- Accendere il monitor.
- Collegare il cavo di alimentazione al Raspberry Pi.
Se tutto va bene sul Raspberry Pi si accenderanno in sequenza la spia rossa dell'alimentazione e la spia verde collegata al lettore MicroSD che incomincerà a lampeggiare. Sulla parte alta del monitor compariranno un numero di lamponi pari al numero di core e più sotto la schermata di selezione della tastiera. In caso contrario qualcosa non funziona: potrebbe trattarsi di un problema dell'immagine di installazione risolvibile ripetendo l'operazione di scrittura della scheda MicroSD oppure un problema della scheda stessa; in quest'ultimo caso sarà necessario sostituirla e provarne un'altra.
Impostazione di Data e Ora
Il Raspberry Pi non è dotato di un orologio hardware perciò ad ogni avvio la data di sistema viene azzerata al 1 Gennaio 1970 ed è necessario impostare data ed ora correnti. Tale operazione deve essere eseguita anche durante l'installazione altrimenti la procedura si rifiuterà di installare pacchetti di molti anni più recenti del sistema ipotizzando un errore di configurazione. Per impostare la data di sistema sarà necessario:
- Selezionare un layout di tastiera dall'elenco fornito.
- Collegarsi come utente root (Durante l'installazione non viene richiesta una password).
- Lanciare il comando date con l'opzione -s per impostare la data:
- date -s "<day> <month> <date> <hour>:<minute>:<second> <year>"
Ove
- <day> = Stringa di 3 lettere che specifica il giorno della settimana in inglese.
- <month> = Mese dell'anno rappresentato con una stringa di 3 lettere.
- <date> = Giorno del mese rappresentato con 2 cifre numeriche.
- <year> = Anno rappresentato con 4 cifre numeriche.
- <hour> = Ora rappresentata con 2 cifre numeriche.
- <minute> = Minuti rappresentati con 2 cifre numeriche.
- <second> = Secondi rappresentati con 2 cifre numeriche.
- Es: date -s "Thu Sep 3 16:06:35 2015"
Nel caso in cui la rete fosse configurata e funzionante sarà invece possibile aggiornare la data di sistema interrogando un server NTP esterno mediante il comando:
- ntpdate pool.ntp.org
Partizionamento della Scheda MicroSD
La scheda MicroSD è gestita come un disco e come tale deve essere partizionata. Creare un numero di partizioni maggiore di uno garantisce una maggior sicurezza per i dati residenti sul sistema oltre che una maggiore flessibilità nell'eseguire aggiornamenti, back-up o per reinstallare il sistema. Il primo passo consiste nell'individuare la scheda tra i supporti riconosciuti dal sistema mediante il comando fdisk di cui si riporta un estratto:
fdisk -l /dev/mmcblk0 /dev/mmcblk0p1
La scheda corrisponde al dispositivo /dev/mmcblk0 mentre /dev/mmcblk0p1 è la prima partiziona, che contiene i file di avvio. Per partizionare la scheda è possibile far ricorso al comando cfdisk comune in moltissime distribuzioni Linux:
- cfdisk /dev/mmcblk0
La partizione esistente non deve essere modificata. Oltre ad essa sarà necessario creare una partizione di swap, tipologia 082, di almeno 256 Mb di dimensione, una partizione di root, ove installare il sistema ed una partizione /home per i dati dell'utenza. È ovviamente possibile creare molte altre partizioni secondo le proprie esigenze; quelle elencate rappresentano una configurazione minima. Verificare che il flag di boot della prima partizione VFAT sia attivo prima di salvare la tabella delle partizioni ed uscire da cfdisk.
Copia dei Pacchetti
Montare la pennetta USB contenente i pacchetti di SlackwareARM su di una directory locale ed avviare il programma di installazione mediante il comando setup, che presenterà le schermate standard di una installazione di Slackware Linux.
- Attivare la partizione di swap.
- Attivare la partizione di sistema e le altre configurate.
- Salvare la configurazione delle partizioni nel file /etc/fstab.
- Attivare la partizione di boot (VFAT) facendo attenzione ad impostare umask 177 in fase di mount onde evitare che ne sia sovrascritto il contenuto per errore.
- Selezionare la sorgente dei pacchetti specificando la directory ove è stata in precedenza montata la pennetta USB.
- Selezionare la tipologia di installazione ed avviare la copia dei pacchetti.
Come anticipato in precedenza lo scopo del presente articolo consiste nel dimostrare che TDE 14.0.1 rappresenti un ottimo rimpiazzo per KDE 4 pertanto si consiglia di non installare i pacchetti relativi a KDE 4 ed alla versione 4 delle librerie Qt. Le librerie Qt4 potrebbero essere richieste da programmi non necessariamente legati a KDE 4 e possono convivere con TQt: la versione di Qt 3 manutenuta dal progetto Trinity. Purtroppo la presenza di Qt4 può causare problemi durante la compilazione dei pacchetti costituenti il Trinity Desktop Environment pertanto si consiglia di rimandarne l'installazione a dopo aver ultimato quella di TDE.
Configurazione di Sistema
Il programma di installazione di SlackwareARM ricalca quello standard di Slackware perciò la procedura di configurazione va a toccare tutti i punti gestiti da quest'ultimo:
- Configurazione del mouse.
- Configurazione dell'interfaccia di rete.
- Impostazione del nome della macchina.
- Impostazione del dominio.
- Impostazione di un indirizzo IP statico oppure configurazione del servizio DHCP.
- Configurazione dei servizi da avviare al boot.
- Selezione di un font per la console.
- Configurazione del fuso orario.
- Configurazione del Window Manager predefinito. Operazione che dovrà essere ripetuta dopo aver compilato ed installato TDE.
- Impostazione della password per l'utente root.
In chiusura il programma di installazione chiederà di eseguire un riavvio del sistema. Non riavviare immediatamente e procedere invece collegandosi ad un nuovo terminale per:
- Rimuovere pacchetti inutili:
- ROOT=/mnt removepkg kernel_kirkwood kernel-modules-kirkwood
- ROOT=/mnt removepkg kernel_armv7 kernel-modules-armv7
- Rimuovere il file initrd.gz dalla partizione di boot:
- mount -t vfat /dev/mmcblk0p1 /mnt/boot
- rm /mnt/boot/initrd.gz
- Installare il firmware per il Raspberry Pi ed i dati per il kernel:
- ROOT=/mnt installpkg /rpi2-extra/kernel* /rpi2-extra/rpi2*
Ultimate le operazioni sopra elencate si potrà smontare la sorgente dei pacchetti di installazione ed eseguire il riavvio. L'installazione di SlackwareARM sul Raspberry Pi è conclusa ed al termine della procedura di avvio sarà possibile collegarsi al sistema appena installato per procedere all'installazione di TDE.
Installazione di Trinity Desktop Environment su Raspberry Pi 2
Il 6 Settembre del 2015 è stata ufficialmente rilasciata la versione 14.0.1 del Trinity Desktop Environment. Si tratta di un rilascio di bug fix e rappresenta il risultato di svariati mesi di lavoro per correggere i problemi segnalati dagli utenti. Non esistono pacchetti precompilati di TDE per Slackware Linux. Non per PC e neppure per dispositivi basati su architettura ARM. Si dovrà pertanto procedere compilando i singoli pacchetti a partire dal codice sorgente. Gli archivi compressi contenenti il codice sorgente per i pacchetti possono essere scaricati dal seguente indirizzo. Trattandosi di una versione di bug fix, la 14.0.1 non si discosta di molto dalla precedente 14.0.0 la cui procedura di compilazione è stata oggetto di un precedente articolo a cui si rimanda per una descrizione dettagliata degli script di compilazione. Nel prosieguo dell'articolo verranno invece descritte le differenze e le aggiunte introdotte specificamente per la versione 14.0.1.
Compilazione in Parallelo
I moderni processori sono costituiti da più core: una soluzione architetturale che consente di eseguire molte istruzioni in parallelo. Tale caratteristica può essere sfruttata dai compilatori recenti consentendo di ridurre drasticamente le tempistiche di generazione del codice eseguibile. Molti pacchetti costituenti il Trinity Desktop Environment possono trarre giovamento dalla compilazione in parallelo mentre in altri causa la generazione di errori. Per aggirare l'insorgere potenziale di errori, gli script realizzati in occasione del rilascio di TDE 14.0.0 non utilizzavano alcuna forma di parallelismo nel generare i pacchetti. Uno spreco di risorse se si considera che il Raspberry Pi 2, come la maggior parte dei processori in commercio, dispone di 4 core. Si è pertanto deciso di rettificare la scelta cautelativa di qualche mese fa introducendo negli script una nuova variabile adibita al controllo del livello di parallelismo: JOB_NUM.
La variabile è stata introdotta nella riga che invoca il comando make, immediatamente dopo la fase di configurazione del codice sorgente:
'''make''' VERBOSE=1 ${JOB_NUM}
Come standard per i pacchetti si è optato per un livello di parallelismo pari a 6 in accordo con i vecchi script ufficiali di compilazione di KDE 3 per Slackware. La variabile definita negli script SlackBuild deve essere impostata attraverso il file TDE.options, contenente le opzioni di compilazione per l'intero ambiente desktop.
JOB_NUM=-j6
Per impostare un livello di parallelismo maggiore o minore sarà sufficiente variare il valore numerico impostato dopo l'opzione -j. Un valore pari a -j1 implicherà l'uso di un singolo core disabilitando di fatto la compilazione in parallelo.
Errori Dovuti al Parallelismo
Esistono segnalazioni da parte di utenti che lamentano l'insorgere di errori durante la compilazione di alcuni pacchetti di TDE quando il livello di parallelismo impostato è maggiore di 1. La maggior parte delle segnalazioni riguardano due pacchetti: tdebindings e tdemultimedia. I test eseguiti durante la stesura del presente articolo non hanno rilevato alcun problema, cionondimeno se tali problemi dovessero presentarsi sarà possibile aggirarli durante la compilazione impostando un valore di parallelismo pari ad 1. A tal fine dovrà essere modificato il contenuto del file globale TDE.options, oppure le opzioni specifiche per il singolo pacchetto contentue nel relativo file local.options. Se ad esempio si volesse generare un pacchetto per tdebindings senza ricorrere alla compilazione parallela sarà sufficiente spostarsi nella directory contente gli script di compilazione, il codice sorgente ed il file local.options: /usr/src/trinity/base/tdebindings nel nostro caso, aprire il file local.options con un programma di elaborazione di testi a scelta ed aggiungere la riga:
JOB_NUM=-j1
Apportata la modifica sarà possibile lanciare immediatamente la compilazione del pacchetto tramite lo script SlackBuild presente nella medesima directory:
sh ./tdebindings.SlackBuild
Le considerazioni riportate sopra hanno valore generale e possono essere utilizzate anche per tdemultimedia o qualsiasi altro pacchetto che presentasse problemi riconducibili alla compilazione in parallelo.
Script SlackBuild Modificati
Sebbene la maggior parte dei pacchetti siano rimasti invariati nel passaggio dalla versione 14.0.0 alla 14.0.1, in alcuni casi sono state introdotte nuove dipendenze o purtroppo nuovi errori per cui è nata la necessità di ricorrere a patch correttive. Di seguito sono riportate le modifiche apportate ad alcuni specifici script di compilazione:
TDELIBS
Durante il primo tentativo di compilare il pacchetto tdelibs la procedura è fallita rendendo il seguente errore:
[ 0%] Building C object dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o
In file included from <command-line>:0:0:
/usr/include/tqt/tqt.h:54:23: fatal error: ntqglobal.h: No such file or directory
#include <ntqglobal.h>
^
compilation terminated.
make[2]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o] Error 1
make[1]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/all] Error 2
make: *** [all] Error 2
Inizialmente si è pensato ad un potenziale problema derivante dal parallelismo introdotto dato che la versione 14.0.0 del pacchetto non presentava alcun difetto. Un secondo tentativo eseguito impostando l'opzione -j1 ha reso esito analogo. Scartata la compilazione parallela come causa potenziale del problema si è proceduto a verificare che tutti i prerequisiti fossero stati correttamente installati e che il file ntqglobal.h fosse presente nel sistema. Il comando find ha confermato l'esistenza di un file con tale nome:
find / -name "ntqglobal.h" /opt/trinity/include/ntqglobal.h
Spulciando i dettagli dei pacchetti installati si è ricevuta conferma che si trattasse del file corretto:
grep ntqglobal.h /var/log/packages/* /var/log/packages/tqt3-R14.0.1-arm-1sg:opt/trinity/include/ntqglobal.h
Il problema è stato risolto aggiungendo un percorso di ricerca per i file include durante la fase di compilazione del codice sorgente. A tal fine sono state aggiunte le righe:
# Add some include paths to the standard compiler flags otherwise the build
# process will fail with an error
SLKCFLAGS="${SLKCFLAGS} -I${PREFIX}/include"
Aventi lo scopo di accodare /opt/trinity/include all'elenco dei percorsi predefiniti. Lo script modificato gira con successo.
TDENETWORK
Nel caso del pacchetto tdenetwork il problema non si è presentato immediatamente, ma relativamente più tardi a procedura avanzata: durante la fase di copia dei file costituenti l'installazione. L'errore reso nel caso specifico era:
[ 71%] Building CXX object krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o
/tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp: In function 'void output(const char*, ...)':
/tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp:113:10: error: 'class TQString' has no member named 'vsprintf'
message.vsprintf(format, args);
^
make[2]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o] Error 1
make[1]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/all] Error 2
make: *** [all] Error 2
Anche in questo caso si è proceduto verificando che il problema non fosse una conseguenza diretta del livello di parallelismo pari a 6, ma nuovamente i test hanno dimostrato che la causa dovesse essere cercata altrove. Leggendo la documentazione relativa alle classi TQString e TQCString interessate:
man tqt3-tqcstring man tqt3-tqstring
è emerso che queste non disponessero di un metodo vsprintf, come segnalato dall'errore. Esiste invece un metodo chiamato sprintf, implementato come una chiamata al precedente. Da cui si è dedotto che la soluzione consistesse nel sostituire il metodo vsprintf con sprintf nel codice della funzione output del file threads.cpp. Apportata la modifica e lanciato il comando make install la compilazione si è conclusa con successo.
Per ovviare definitivamente al problema è stata preparata la seguente patch:
*** krdc/vnc/threads.cpp 2015-09-13 20:01:24.889992277 +0200
--- krdc/vnc/threads.cpp 2015-09-13 19:59:20.899992324 +0200
***************
*** 110,116 ****
va_start(args, format);
TQString message;
! message.vsprintf(format, args);
va_end(args);
--- 110,116 ----
va_start(args, format);
TQString message;
! message.sprintf(format, args);
va_end(args);
Richiamata dallo script di compilazione mediante le righe:
# Patch the krdc/vncn/threads.cpp source file in order to solve an issue with the
# output function.
patch -p0 -i ${SRCDIR}/threads_sprintf.patch
In seguito, spulciando le segnalazioni presenti nel bug tracker del progetto Trinity ne è stata trovata una relativa al problema sopra descritto: BUG 2525. La patch è stata proposta come soluzione.
Aggiornamento: La patch è stata rifiutata perchè l'origine dell'errore è stata identificata altrove. Sembra che parte del codice per il prossimo rilascio 14.1.0 sia finito nell'archivio del 14.0.1. Esistono due soluzioni per l'errore:
- Scaricare il codice sorgente dal repository GIT di TDE.
- Aspettare la sostituzione dell'archivio contenente il codice sorgente di tdenetwork con la versione corretta.
Quale che sia la strada adottata, applicare la patch al codice corretto causerà un errore. Per prevenirlo è necessario commentare le righe aggiunte allo script SlackBuild.
Aggiornamento: Ad inizio Ottobre sono stati rilasciati gli archivi conteneti il codice sorgente corretto della versione 14.0.1. La patch inclusa per correggere il problema di compilazione del pacchetto tdenetwork non è più necessaria. Il build tree è stato aggiornato commentando le righe che applicavano la patch. Per cortesia accertatevi di aver scaricato gli archivi contenenti il codice sorgente aggiornato prima di lanciare la procedura di compilazione.
Non sono state necessarie modifiche ad alti script appartenenti ai gruppi: base, library e prerequisite di TDE.
Legare Tutto Assieme
Per semplificare l'operazione di compilazione di TDE è stato preparato uno script principale: TDE.SlackBuild avente lo scopo di guidare la procedura richiamando quelli per specifici pacchetti nell'ordine suggerito dalla documentazione. Una copia dello script e dell'intero build tree è scaricabile sotto forma di archivio compresso dal seguente indirizzo. Una volta scaricato l'archivio ed il codice sorgente del progetto TDE in una directory locale quale /tmp si potrà procedere seguendo i passi dettagliati nel seguito:
- Creare la directory /usr/src/trinity:
- mkdir /usr/src/trinity
- Copiare l'archivio contenente il build tree in tale directory
- cp /tmp/tde_build_tree_sg-14.0.1-2.tar.bz2 /usr/src/trinity
- Spostarsi nella directory /usr/src/trinity
- cd /usr/src/trinity
- Estrarre il contenuto dell'archivio utilizzando il comando tar:
- tar -jxf tde_build_tree_sg-14.0.1-2.tar.bz2
La directory /usr/src/trinity verrà così popolata:
ls -la total 14 drwxr-xr-x 7 root root 1024 Sep 14 19:52 . drwxr-xr-x 5 root root 1024 Sep 14 19:52 .. -rw-r--r-- 1 root root 314 Sep 14 14:53 TDE.options drwxr-xr-x 113 root root 7168 Sep 14 17:40 application drwxr-xr-x 22 root root 1024 Jan 1 1970 base drwxr-xr-x 13 root root 1024 Jan 1 1970 library drwxr-xr-x 16 root root 1024 Jan 1 1970 prerequisite drwxr-xr-x 4 root root 1024 Jan 1 1970 tde_build_script
- Smistare gli archivi contenenti il codice sorgente per i pacchetti nelle omonime directory contenute in base, library e prerequisite. Il file TDE.options, di cui viene fornito un esempio, contiene le opzioni di compilazione per l'intero ambiente:
# Global options used to build TDE.
#
# Do not place here package specific options. Use a file named
# "local.options" in the build root directory of the package
# instead.
ARCH="arm"
ARCHIVE_FORMAT="tar.bz2"
BUILD="1"
JOB_NUM="-j6"
MARCH="arm"
PREFIX="/opt/trinity"
SRCVER="R14.0.1"
TAG="sg"
TAR_OPTION="-xjvf"
- Aprire il file con un qualsiasi programma di elaborazione di testo ed impostare i valori desiderati per le variabili contenute. Le variabili che dovrebbero essere popolate con riguardo all'architettura e alle preferenze personali sono:
- ARCH e MARCH che impostano l'architettura per cui si desideri compilare i pacchetti: arm nel caso del Raspberry Pi 2.
- BUILD che dovrebbe essere incrementato ogni volta che si apporta una modifica alla procedura.
- JOB_NUM che specifica il livello di parallelismo utilizzato per compilare i pacchetti.
- PREFIX che impone la directory di installazione di TDE. Impostare /opt/trinity consente la convivenza di TDE e KDE 4.
- SRCVER è la versione di TDE che si desidera compilare.
- TAG è l'identificatore di chi esegue la compilazione. Impostare una stringa a piacere.
- Spostarsi nella directory /usr/src/trinity/tde_build_script/bin e lanciare la procedura di generazione dei pacchetti:
- cd /usr/src/trinity/tde_build_script/bin
- sh ./TDE.SlackBuild
Lo script si farà autonomamente carico di compilare ogni pacchetto e di installarlo. I pacchetti generati ed i relativi file di log potranno essere reperiti nella directory /tmp.
Una nota a parte merita il pacchetto tde-i18n contenente i file di localizzazione in tutte le lingue supportate da TDE. Lo script principale contiene le istruzioni necessarie ad eseguirne la compilazione, ma l'operazione risulta essere molto onerosa in termini di tempo perciò le istruzioni sono commentate ed i pacchetti di localizzazione vengono ignorati. Se si desiderasse generare anche i file di localizzazione sarà necessario modificare lo script TDE.SlackBuild rimuovendo il commento dalla riga:
# bash ./${PKG}.SlackBuild
modificandola in
bash ./${PKG}.SlackBuild
Tempistiche
Per capire quanto il livello di parallelismo incida sulla tempistica di compilazione dell'intero ambiente sono riportati alcuni dati relative alla generazione dei pacchetti inerenti Trinity Desktop Environment su Rasperry Pi 2. I dati coprono la tempistica relativa alla compilazione dei prerequisiti, dell'ambiente completo con l'esclusione dei pacchetti di localizzazione e, infine, delle librerie opzionali. Non sono state prese in considerazione le applicazioni a corredo di TDE. Personalmente non uso quasi nessuna di tali applicazioni e l'ambiente funziona perfettamente anche senza. L'operazione di compilazione con un livello di parallelismo pari a 1 in totale ha richiesto 47 ore. Impostando un parallelismo pari a 6 invece la tempistica è scesa sotto le 20 ore con un notevole risparmio di tempo.
Conclusioni
Nel corso del presente articolo è stato affrontato il tema dell'installazione di SlackwareARM e di Trinity Desktop Environment su un Raspberry Pi modello 2. L'operazione si è rivelata semplice e lineare e ha consentito di dotare il Raspberry Pi di un ambiente grafico completo, funzionale e leggero. In conclusione si riportano alcune immagini dell'ambiente desktop in funzione.
Fig: 1 - Come si presenta il desktop all'avvio di TDE.
Fig: 2 - La schermata di avvio di KRDC programma che ha creato qualche problema compilando tdenetwork.
Fig: 3 - Il mitico Ksirtet.
Fig: 4 - TDevelop un IDE per sviluppatori integrato nell'ambiente desktop.
Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.
Link esterni
- Home page della fondazione Raspberry Pi (En)
- La pagina di Wikipedia dedicata al Raspberry Pi
- Home page di Slackware (En)
- Slackware Linux per piattaforma ARM
- Supporto non ufficiale per Slackware su Raspberry Pi 2
- Home page del progetto TDE (En)
Lingue: English - Italiano