Microsoft's Internet Explorer browser has no built-in vector graphics machinery required for "loss-free" gradient background themes.
Please upgrade to a better browser such as Firefox, Opera, Safari or others with built-in vector graphics machinery and much more. (Learn more or post questions or comments at the Slide Show (S9) project site. Thanks!)
Il sistema di building GNU, altrimenti noto come autotools, consiste in una suite di programmi e utility progettati per assistere lo sviluppatore nella creazione e nella distribuzione di pacchetti di codice sorgente portabili su piattaforme UNIX-like (Linux compreso)
Gli autotools comprendono una serie di programmi tra cui:
Altri tool tipicamente usati nello sviluppo di un progetto sono:
In generale, i repository della distribuzione (e in particolare Debian e tutte le derivate) contengono migliaia di software già pacchettizzati. Tuttavia alle volte può rendersi necessaio installare un programma direttamente compilandone i sorgenti, per una serie di ragioni:
Gli strumenti necessari per compilare da sorgente dipendono, ovviamente, dal linguaggio di programmazione usato. In generale comunque andranno precedentemente installati lo specifico compilatore e alcuni tools per la gestione delle librerie e delle dipendednze del codice.
Per quanto rigurada i programmi scritti in C/C++, Debian (e Ubuntu) mette a disposizione il metapacchetto buil-essentials che ha tra le sue dipendenze tutti i tools base per la compilazione:
sudo apt-get install build-essentials
Un altro pacchetto la cui presenza è consigliata, prima della compilazione, è checkinstall:
sudo apt-get install checkinstall
Generalmente i sorgenti di un pacchetto sono reperibili sulla home page del progetto o dello sviluppatore, in un qualche tipo di archivio. I formati più comuni sono:
Per estrarre un archivio tar.gz o tar.bz2, ad es, è sufficiente lanciare i comandi (rispettivamente):
tar xzvf nomeprogetto-versione.tar.gz tar xjvf nomeprogetto-versione.tar.bz2
dove x sta per extract, z per uncompress gz (j per uncompress bz2), v per verbose e f per file (l’archivio da decomprimere)
In alcuni casi, occorre prelevare i sorgenti direttamente dal repository utilizzato dagli sviluppatori per la revisione del codice. I CSM maggiormente utilizzati al momento sono svn, mercurial e git
Una volta decompresso l’archivio dei sorgenti di un pacchetto, nella directory creata si dovrebbero trovare i seguenti file (secondo le raccomandazione GNU per la distribuzione di sorgenti):
Grazie agli autotools del progetto GNU, gli step per configurare e compilare un pacchetto dai suoi sorgenti è un processo per lo più semplice e standard. In quasi tutti i casi i comandi da lanciare, dopo aver decompresso l’archivio ed essersi spostati nella directory creata sono 3:
./configure make make install
Il primo comando lancia uno script di autoconfigurazione, in cui viene effettuato un probing del sistema, per verificare se tutte le dipendenze (ad es. la presenza di alcune librerie) sono soddisfatte. Al termine di questo processo (che può durare anche alcuni minuti), viene generato un file di configurazione per il comando make (Makefile)
Il secondo comando effettua la compilazione vera e propria (a seconda della dimensione del progetto e della potenza della macchina, questa fase può durare anche alcune ore)
Il terzo e ultimo comando serve ad installare i binari ottenuti in fase di compilazione nelle directory di sistema
Il processo di autoconfiguarzione, che come si è visto viene effettuato dallo script configure, è in genere la fase più delicata nel processo di installazione da sorgenti.
Configure in generale offre una serie di opzioni per modificarne il comportamento; per ottenere la lista delle stesse è sufficiente lanciare lo script con lo switch —help:
./configure --help
Per portare a termine con successo il task di configurazione, è necessario installare sul sistema tutte le dipendenze richieste dal software che si intende compilare. La determinazione delle stesse è un compito che richiede una certa esperienza (anche se esistono dei tool che vengono in aiiuto dell’utente). In generale comunque, è sufficiente prestare attenzione ai messaggi di configure.
In distribuzioni Debian based, l’installazione delle dipendenze è abbastanza semplice: è sufficiente installare, dopo averne determinato il nome con apt-cache, le librerie richieste e i relativi pacchetti di sviluppo (si differenziano dal resto dei pacchetti perché terminano con il prefisso -dev e contengono gli header file necessari alla compilazione)
Es.:
#Ricerca di librerie relative ad Alsa apt-cache search alsa
#Installa il pacchetto di sviluppo e, come dipendenza, la libreria apt-get install libasound2-dev
Make è un tool per il controllo automatico delle dipendenze nella compilazione (building) di sorgenti. La configurazione di make si effettua attraverso un file di testo (makefile) in cui vengono elencati con una sintassi abbastanza semplice tutti i comandi necessari, e l’ordine con cui gli stessi devono essere eseguiti.
Make offre le seguenti caratteristiche:
Un makefile è basato su una serie di regole, richiamabili attraverso un target. Ciascuna regola specifica le eventuali altre regole da cui dipende, e i comandi che devono essere eseguiti.
La toolchain GNU aggiunge automaticamente al makefile dei pacchetti sviluppati con gli autotools alcuni target standard:
L’installazione dei binari, dopo la fase di compilazione, può essere effettuata lanciando semplicemente il comando:
make install
Tuttavia questo approccio presenta il grosso svantaggio di non interfacciarsi con il sistema di pacchettizzazione della distribuzione, rendendo dunque la successiva disinstallazione abbastanza complicata. Per ovviare a questo inconveniente esiste il programma checkinstall.
Checkinstall utilizza il comando passatogli in argomento (generalmente make install) per generare un pacchetto binario a scelta tra i formati Debian, Redhat (rpm) o Slackware, e successivamente lo installa mediante i tool standard della distribuzione. Per installare da sorgenti mediante checkinstall si utilizza dunque il comando:
checkinstall make install
Alle volte può succedere, soprattutto se si scaricano i pacchetti dal repository di sviluppo, che nel tree dei sorgenti NON sia presente uno script configure.
In questi casi, per prima cosa è necessario controllare nel tree dei sorgenti se sia presente uno script chiamato autoconf.sh, o template per gli autotools (Makefile.am e configure.ini).
Nel primo caso è sufficiente eseguire lo script (./autoconf.sh), nel secondo invece bisogna utilizzare il comando autoconf (autotools). In entrambi i casi il risultato sarà la creazione dello script di autoconfigurazione (configure)
È comunque consigliato, prima di procedere in questi passi, leggere il file INSTALL, che dovrebbe contenere informazioni più dettagliate sulle operazioni da compiere.
La compilazione del kernel è considerata ancora una sorta di arte oscura. In effetti per non incorrere in spiacevoli inconvenienti (difficoltà in fase di avvio, freeze successivi..) occorre conoscere almeno sommariamente l’architettura di un sistema basato su Linux ed il relativo processo di boot
In aggiunta, la configurazione del kernel si basa su tools ad-hoc diversi da quelli precedentemente visti. Ciò è dovuto essenzialmente a:
La fonte ufficiale per reperire il kernel vanilla Linux (per vanilla si intende il kernel direttamente rilasciato da Linus Torvalds) è il sito ftp.kernel.org (ed i relativi mirror nazionali).
In rete possono essere rintracciate versioni modificate di Linux, o singole patch, che aggiungono funzionalità ancora sperimentali, o codice per il supporto a piattaforme hardware diverse da quelle supportate direttamente nel vanilla.
È anche possibile scaricare i sorgenti del kernel direttamente dai repository della distribuzione. In questo modo però, si ottiene una versione comprensiva di tutte le patch applicate dal distributore (ad es. Ubuntu aggiunge al vanilla patch per la gestione di hardware ancora sperimentale, configurazioni specifiche e filesystem non ancora entrati nel tree vanilla, come aufs)
La configurazione del kernel consiste nella scelta dell’architettura, delle funzionalità e dei driver di periferiche (in gergo moduli) che si vorranno utilizzare.
Tutto il processo di building del kernel è pilotato dal programma make. Per accedere alla configurazione, è possibile lanciare uno dei seguenti comandi, che compila e lancia il rispettivo tool di configurazione:
make config
make menuconfig
make xconfig make gconfig
make oldconfig
Nota: nei kernel della famiglia 2.6 il backend di configurazione è stato unificato (libkconfig). Tutti i comandi precedenti dunque parsano i file Kconfig presenti nell’albero dei sorgenti per valutare dipendenze e scelte dell’utente
Il passo successivo alla configurazione è, naturalmente, la compilazione vera e propria. Questo processo può durare anche alcune ore, ed è pilotato da una serie di regole nel Makefile. In particolare:
Le distribuzioni Debian based offrono un comodo tool (make-kpkg) per la compilazione e l’installazione del kernel Linux. Per installare questa utility lanciare il comando:
apt-get install kernel-package
Per l’installazione in debian-way, dopo le normali fasi di configurazione, sarà sufficiente lanciare il comando:
make-kpkg --append-to-version -nomepersonalizzato --revision=1 kernel_image
che creerà automaticamente un pacchetto del tipo: linux-image-versione-nomeprsonalizzato-i386_1.Custom_i386.deb, installabile con dpkg.
Una volta installato un nuovo kernel (sia nella maniera classica che in debian way), occorre eseguire due passi di post-configurazione:
In Debian queste operazioni sono effettuabili con due semplici comandi:
update-initramfs -k versione -c update-grub