Capitolo 15. La compilazione e l'installazione di software libero

Sommario
15.1. Introduzione
15.1.1. Prerequisiti
15.1.2. Compilazione
15.1.3. Struttura di una distribuzione
15.2. Decompressione
15.2.1. Archivi tar.gz
15.2.2. Uso di GNU Tar
15.2.3. bzip2
15.2.4. Fatelo e basta!
15.3. Configurazione
15.3.1. Autoconf
15.3.2. Imake
15.3.3. Vari script da shell
15.3.4. Alternative
15.4. Compilazione
15.4.1. make
15.4.2. Regole
15.4.3. Attenti, pronti, via!
15.4.4. Spiegazioni
15.4.5. Cosa fare... se non funziona?
15.5. Installazione
15.5.1. Con make
15.5.2. Problemi
15.6. Supporto
15.6.1. Documentazione
15.6.2. Supporto tecnico
15.6.3. Come reperire il software libero
15.7. Ringraziamenti

Spesso i neofiti si domandano come si fa a installare del software libero direttamente dai sorgenti. Compilare personalmente i programmi è davvero facile, perché molti dei passi da seguire sono gli stessi a prescindere dal software specifico che desiderate installare. Lo scopo di questo capitolo è quello di guidare il principiante un passo alla volta, spiegandogli il significato di ogni mossa. Si presume che il lettore abbia una conoscenza minima di Unix (dei comandi ls o mkdir, ad esempio).

Questo capitolo costituisce soltanto una guida, non un manuale di riferimento; il che spiega perché al termine vengono proposti numerosi riferimenti, in maniera da poter soddisfare le domande che restano senza risposta. Questa guida molto probabilmente è suscettibile di miglioramenti, dunque ogni osservazione o correzione in merito al contenuto sarà accolta con piacere.

15.1. Introduzione

Quello che distingue il software libero, detto anche "software liberamente distribuibile", dal software proprietario è la possibilità di accedere ai sorgenti dello stesso[1]. Questo comporta anche che il software libero viene sempre distribuito come archivi dei sorgenti. Gli utenti dei programmi liberamente distribuibili, dunque, devono compilare i sorgenti di persona prima di poter usare il software, e questo può sembrare piuttosto inusuale ai principianti.

Esistono versioni compilate di molti programmi che appartengono al mondo del software libero: l'utente che va di fretta non deve far altro che installare questi binari precompilati. Una parte di questi programmi, tuttavia, non viene distribuita secondo questa modalità, oppure si tratta delle versioni iniziali che ancora non vengono rilasciate in forma binaria; se usate un sistema operativo poco diffuso, inoltre, oppure una piattaforma hardware piuttosto rara, una gran parte del software libero non è ancora stata compilata per il vostro sistema. È importante sapere che compilare di persona il software da installare vi permette di abilitare soltanto le opzioni che vi interessano, o di estendere la funzionalità del programma aggiungendo estensioni di vario tipo, in maniera da ottenere un software che sia perfettamente adeguato ai vostri bisogni.

15.1.1. Prerequisiti

Per compilare software avete bisogno di:

  • un computer con un sistema operativo funzionante,

  • una conoscenza di base del sistema operativo che utilizzate,

  • una certa quantità di spazio sul vostro disco rigido,

  • un compilatore (in genere per il linguaggio C) e un programma di archiviazione (tar),

  • un po' di cibo (in casi difficili la compilazione può impiegare un tempo considerevole). Un vero hacker mangia pizza - non caviale.

  • qualcosa da bere (per la stessa ragione). Un vero hacker beve cola - per la caffeina.

  • il numero di telefono del vostro amico smanettone che ricompila il kernel tutte le settimane,

  • soprattutto pazienza, e in buona quantità!

Compilare dei sorgenti in genere non presenta grandi problemi, ma se non lo avete mai fatto prima il più piccolo intralcio può bloccarvi all'istante. Lo scopo di questo capitolo è quello di mostrarvi come potete evitare situazioni di questo tipo.

15.1.2. Compilazione

15.1.2.1. Principi di base

Per tradurre un codice sorgente in un file binario è necessario effettuare una compilazione; in genere i sorgenti sono scritti in C o C++, che sono i linguaggi più diffusi nella comunità del software libero (in particolare per Unix). Una parte dei programmi liberamente distribuibili è scritta in linguaggi che non richiedono compilazione (il Perl, ad esempio, o il linguaggio della shell), ma necessitano comunque di una configurazione.

La compilazione di programmi scritti in C viene effettuata per mezzo di un compilatore C, ovviamente, che di solito è gcc, il compilatore liberamente distribuibile creato dal progetto GNU (potrete saperne di più visitando la URL http://www.gnu.org/). La compilazione di un intero pacchetto software è un'operazione complessa, che si basa sulla compilazione in sequenza dei diversi file sorgenti (per una serie di motivi, è più semplice per il programmatore distribuire parti diverse del proprio lavoro in file separati). Al fine di rendere l'intero processo più semplice, queste operazioni ripetitive vengono gestite da un programma chiamato make.

15.1.2.2. Le quattro fasi della compilazione

Per capire come funziona la compilazione, così da poter risolvere eventuali problemi, dovete conoscere le quattro fasi da cui è composta. Lo scopo è quello di tradurre poco a poco un testo scritto in un linguaggio che è comprensibile per un essere umano ben allenato (e cioè il linguaggio C) in un linguaggio comprensibile da una macchina (o da un essere umano molto ben allenato, e anche in tal caso non sarebbero molti). gcc esegue quattro programmi uno dopo l'altro, ciascuno dei quali gestisce una fase della compilazione:

  1. cpp: Il primo passo consiste nel rimpiazzare le direttive (del preprocessore) con delle istruzioni in C vere e proprie. Questo significa, di norma, inserire un header (#include) o definire una macro (#define). Al termine di questa fase viene generato un puro codice C.

  2. cc1: Questa fase consiste nella conversione del codice C in linguaggio assembler. Il codice generato dipende dalla architettura su cui deve girare il programma.

  3. as: Questo passo consiste nella produzione di codice oggetto (o codice binario) a partire dal linguaggio assembler. Al termine di questa fase viene generato un file .o.

  4. ld: Come ultimo passo (linkage) vengono collegati tutti i file oggetto (.o) e le librerie relative, e viene prodotto un file eseguibile.

15.1.3. Struttura di una distribuzione

Una distribuzione di software libero strutturata in maniera corretta presenta sempre la medesima organizzazione dei file:

  • Un file INSTALL, che descrive la procedura di installazione.

  • Un file README, che contiene informazioni generali riguardanti il programma (breve descrizione, autore, URL del sito dove lo si può scaricare, documentazione relativa al programma, collegamenti utili, etc.). Se il file INSTALL non è presente, di solito una breve descrizione della procedura di installazione è contenuta nel file README.

  • Un file COPYING, che contiene la licenza o descrive le condizioni secondo le quali può essere distribuito il software. A volte è rimpiazzato da un file LICENSE.

  • Un file CONTRIB o CREDITS, che contiene una lista delle persone che hanno contribuito al progetto (partecipazione diretta, suggerimenti utili, programmi di terze parti, etc.).

  • Un file CHANGES (o, meno frequentemente, un file NEWS), che contiene una lista degli ultimi miglioramenti e dei bug eliminati.

  • Un file Makefile (si veda la sezione make), che permette di compilare il software (è un file di cui ha bisogno make). Spesso questo file all'inizio non esiste e viene generato durante il processo di configurazione.

  • Molto spesso, un file configure o Imakefile, che permette di generare un nuovo file Makefile,

  • Una directory che contiene i sorgenti, e dove viene in genere collocato il file binario alla fine della compilazione. Spesso viene chiamata src.

  • Una directory che contiene la documentazione relativa al programma (normalmente in formato man o Texinfo), il cui nome spesso è doc.

  • A volte, una directory che contiene dati specifici del software (si tratta, tipicamente, di file di configurazione, esempi di dati prodotti, o file che costituiscono risorse di vario tipo).

Note

[1]

Questo non è del tutto esatto, in quanto alcune case che producono software proprietario mettono a disposizione i sorgenti. Ma, a differenza di quello che succede con il software libero, l'utente finale non ha il permesso di utilizzarli come vorrebbe.


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/