13.3. Configurazione

Una conseguenza puramente tecnica del fatto di avere a disposizione i sorgenti creati dagli autori è il porting del software. Il software libero sviluppato per un sistema UNIX può essere utilizzato su tutti i sistemi UNIX, che siano aperti o proprietari, una volta effettuate alcune modifiche. Questo richiede una configurazione del software prima di procedere alla compilazione.

Esistono diversi sistemi di configurazione. Siete obbligati a usare quello scelto dall'autore del programma, e, talvolta, ne serve più d'uno. In genere potete:

13.3.1. AutoConf

13.3.1.1. La teoria

AutoConf viene usato per configurare il software in maniera corretta. Crea i file richiesti dal processo di compilazione (Makefile ad esempio), e talvolta cambia i file sorgenti direttamente (ad esempio usando un file config.h.in).

Il principio di funzionamento di AutoConf è semplice:

  • Il programmatore autore del software sa quali test sono richiesti per configurarlo (ad esempio: "quale versione di questa libreria state usando?"). Perciò li raccoglie in un file chiamato configure.in, seguendo una sintassi ben precisa.

  • Quindi esegue AutoConf, che genera uno script di configurazione chiamato configure dal file configure.in. Questo script esegue i test richiesti quando il programma viene configurato.

  • L'utente finale esegue lo script, e AutoConf configura tutto ciò che è necessario per la compilazione.

13.3.1.2. Un esempio pratico

Un esempio dell'uso di AutoConf:

$ ./configure
loading cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for main in -lX11... yes
checking for main in -lXpm... yes
checking for main in -lguile... yes
checking for main in -lm... yes
checking for main in -lncurses... yes
checking how to run the C preprocessor... gcc -E
checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include
checking for ANSI C header files... yes
checking for unistd.h... yes
checking for working const... yes
updating cache ./config.cache
creating ./config.status
creating lib/Makefile
creating src/Makefile
creating Makefile

È possibile aggiungere alcune opzioni per mezzo della linea di comando, in modo da avere un controllo maggiore su quello che viene generato da configure. Ad esempio:

$ ./configure --with-gcc --prefix=/opt/GNU

oppure (con bash):

$ export CC=`which gcc`
$ export CFLAGS=-O2
$ ./configure --with-gcc

o ancora:

$ CC=gcc CFLAGS=-O2 ./configure

13.3.1.3. Cosa fare... se non funziona?

Se configure si blocca, in genere comparirà un errore del tipo configure: error: Cannot find library guile; la maggior parte degli errori dello script configure hanno questo aspetto.

Questo errore significa che lo script configure non è riuscito a trovare una libreria (nell'esempio citato si tratta della libreria guile). Il metodo seguito da configure è quello di compilare un breve programma di prova che usa tale libreria. Se la compilazione di tale programma fallisce, ciò significa che non sarà possibile compilare il software in questione. Di conseguenza, venite avvertiti dell'errore.

  • Scoprite la causa dell'errore esaminando la parte finale del file config.log, che contiene un registro di tutti i passi seguiti nel corso della configurazione. Il compilatore C è sufficientemente chiaro nei suoi messaggi d'errore, e questo vi aiuterà a risolvere il problema.

  • Controllate che la sunnominata libreria sia installata correttamente: se non lo è, installatela (dai sorgenti, o usando un file binario precompilato) e lanciate di nuovo configure. Un metodo efficace per controllare è quello di cercare il file che contiene i simboli della libreria, che è sempre lib<name>.so. Ad esempio,
    $ find / -name 'libguile*'
    o anche:
    $ locate libguile

  • Controllate che il compilatore possa accedervi, il che significa che deve trovarsi in una delle seguenti directory: /usr/lib , /lib , /usr/X11R6/lib (oppure in una di quelle specificate dalla variabile d'ambiente LD_LIBRARY_PATH, trattata nel punto 5.b di Cosa fare... se non funziona?). Controllate che questo file sia una libreria digitando il comando file libguile.so.

  • Controllate che i file header che corrispondono a tale libreria siano installati nel posto giusto (in genere /usr/include, oppure /usr/local/include o anche /usr/X11R6/include). Se non sapete quali sono gli header di cui avete bisogno, controllate che sia stata installata la versione per sviluppatori della libreria richiesta (ad esempio, gtk+-devel invece di libgtk). La versione per sviluppatori di una libreria fornisce i file "include" necessari per compilare software che faccia uso della suddetta libreria.

  • Accertatevi di avere spazio sufficiente sul disco rigido (lo script configure ha bisogno di una certa quantità di spazio per dei file temporanei). Usate il comando df -k per mostrare lo spazio disponibile sulle partizioni del vostro sistema, e prestate attenzione a quelle piene o quasi piene.

Se non capite il messaggio di errore contenuto nel file config.log, non esitate a chiedere aiuto alla comunità del software libero (consultate la sezione Supporto tecnico).

Controllate inoltre se configure risponde sempre No a ragione, oppure se risponde No anche quando siete sicuri della presenza di una data libreria. Sarebbe davvero strano, ad esempio, che la libreria curses non fosse presente sul vostro sistema. In tal caso, la variabile LD_LIBRARY_PATH probabilmente è sbagliata!

13.3.2. imake

imake vi permette di configurare un programma creando un file Makefile sulla base di semplici regole. Queste regole determinano quali file debbano essere compilati per costruire il file binario, e imake genera il Makefile corrispondente. Queste regole sono state specificate in un file chiamato Imakefile.

La caratteristica più interessante di imake è il fatto che fa uso di informazioni dipendenti dalla particolare installazione (ovvero dalla particolare architettura hardware). È molto comodo per applicazioni che usano X Window System. Ma imake viene usato anche per molte altre applicazioni.

Il modo più semplice per usare imake è quello di spostarsi nella directory principale dell'archivio decompresso, e lanciare poi lo script xmkmf, che richiama il programma imake:

$ xmkmf -a
imake -DUseInstalled -I/usr/X11R6/lib/X11/config
make Makefiles

Se la vostra installazione non funziona correttamente, ricompilate e installate X11R6!

 

13.3.3. Vari script da shell

Leggete i file INSTALL o README per avere più informazioni. Di solito dovrete lanciare un file del tipo install.sh o configure.sh. A questo punto, lo script di installazione può essere non interattivo (e stabilire autonomamente ciò di cui ha bisogno), oppure chiedervi informazioni sul sistema (percorsi, ad esempio).

Se non riuscite a determinare quale sia il file da eseguire, potete digitare ./ (in una shell bash), e poi premere due volte il tasto TAB (tasto di tabulazione). Nella sua configurazione predefinita, bash completa automaticamente la linea di comando inserendo il nome di un file eseguibile contenuto nella directory corrente (e quindi un eventuale script di configurazione). Se è presente più di un file eseguibile, vi verrà presentata una lista: non dovete far altro che scegliere il file giusto.

Un caso particolare è quello della installazione di moduli perl (ma non solo). L'installazione di tali moduli viene effettuata lanciando in esecuzione uno script di configurazione, che è scritto in perl. Il comando da eseguire in genere è:

$ perl Makefile.PL

13.3.4. Alternative

Alcune distribuzioni di software libero sono organizzate in modo non ottimale, soprattutto durante le prime fasi di sviluppo (ma l'utente è avvertito!). A volte richiedono di cambiare "a mano" alcuni file di configurazione. Normalmente questi file sono un file Makefile (consultate la sezione make) e un file config.h (questo nome è del tutto convenzionale).

Vi sconsigliamo queste modifiche, fatta eccezione per quegli utenti che sanno quello che fanno. Queste operazioni richiedono una buona conoscenza e una certa determinazione per riuscire, ma la pratica le rende comunque banali.


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. 2002.
http://www.mandrakelinux.com/