Come sicuramente sapete, è possibile installare software precompilato nella vostra Linux Box basata su Debian, scaricandolo dai vari repository tramite il comodo apt-get. In alcuni casi potrebbe essere utile compilare il software manualmente, perché è necessario modificare qualche parametro di configurazione, oppure aggiungere qualche funzionalità oppure installare una particolare patch. La procedura non è molto complessa e ci si può basare sui sorgenti utilizzati nei repository Debian per i pacchetti precompilati.
Vediamo come procedere compilando un pacchetto di esempio. Scegliamo di compilare apache2 a cui aggiungiamo una patch.
Innanzitutto bisogna assicurarsi di avere il riferimento a deb-src nel file /etc/apt/sources.list. Nel caso non ci sia nessuna riga di questo tipo, se ne può aggiungere una come segue:
deb-src http://ftp.it.debian.org/debian/ testing/updates main contrib non-free
Installiamo intanto alcuni tools che ci serviranno successivamente per la compilazione:
apt-get install dpkg-dev build-essential devscripts
Ora creiamo le cartelle in cui lavorare:
# mkdir /usr/src/apache2-src
# cd /usr/src/apache2-src
# apt-get source apache2
Ora nella cartella troverete diversi file:
# ls
apache2_2.2.9 apache2_2.2.9-10+lenny2.diff.gz apache2_2.2.9-10+lenny2.dsc apache2_2.2.9.orig.tar.gz
A questo punto possiamo spostarci nella cartella apache2-2.2.9 con i sorgenti ed effettuare le necessarie modifiche.
Bene, ora scarichiamo i pacchetti che contendono le librerie necessarie per la compilazione con:
# apt-get build-dep apache2
Ora entriamo nella cartella con i sorgenti ed installiamo la patch che ipotizziamo sia /tmp/apache2.patch
# cd apache2_2.2.9
# patch -p1 < /tmp/apache2.patch
Infine, per avviare la compilazione vera e propria, dalla cartella dove sono i sorgenti del pacchetto che abbiamo appena personalizzato, digitiamo:
# dpkg-buildpackage -rfakeroot -uc -b
dove le opzioni servono per:
b = Crea solo il pacchetto binario e non quello dei sorgenti
-uc = Non crea il file .changes
ATTENZIONE: Per passare opzioni aggiuntibe alla procedura di compilazione, si può inizializzare la variabile d’ambiente DEB_BUILD_OPTIONS
DEB_BUILD_OPTIONS="--enable-gui --enable-radio" fakeroot debian/rules binary
Per passare parametri al MakeFile, come ad esempio l’uso del gcc 3.4:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui --enable-radio" fakeroot debian/rules binary
A questo punto i pacchetti (binario e librerie) sono pronti e sono stati creati nella cartella di livello superiore. Spostiamoci in tale cartella ed installiamo il pacchetto di cui abbiamo bisogno tra quelli disponibili:
# cd ..
# ls
# dpkg -i XXXXXXX.deb
dove XXXXXXX.deb è chiaramente il pacchetto da noi scelto per l’installazione