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

Sommario
17.1. Introduzione
17.1.1. Prerequisiti
17.1.2. Compilazione
17.1.3. Struttura di una distribuzione
17.2. Decompressione
17.2.1. Archivi tar.gz
17.2.2. Uso di GNU Tar
17.2.3. bzip2
17.2.4. Fatelo e basta!
17.3. Configurazione
17.3.1. AutoConf
17.3.2. imake
17.3.3. Vari script da shell
17.3.4. Alternative
17.4. Compilazione
17.4.1. make
17.4.2. Regole
17.4.3. Attenti, pronti, via!
17.4.4. Spiegazioni
17.4.5. Cosa fare... se non funziona?
17.5. Installazione
17.5.1. Con make
17.5.2. Problemi
17.6. Supporto
17.6.1. Documentazione
17.6.2. Supporto tecnico
17.6.3. Come reperire il software libero
17.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.

17.1. Introduzione

Quello che distingue il software libero, detto anche "software liberamente distribuibile", dal software proprietario è la possibilità di accedere ai suoi sorgenti[1]. Questo comporta anche che il software libero viene spesso distribuito in forma di 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 di 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 sarà 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.

17.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.

17.1.2. Compilazione

17.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 il relativo sito web). 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.

17.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 in molti a riuscirci). 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 dall'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 con estensione .o.

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

17.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 al suo posto si trova 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 anche 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 marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2001.
http://www.mandrakelinux.com/