Compilare i sorgenti a volte è l’unico modo per installare un software. Capita infatti (per la verità molto di rado) che per un qualche motivo ci serva un programma non disponibile da repository e distribuito solo in versione sorgente.
Poco male, basta avere i pacchetti necessari per la compilazione di un sorgente e lanciare i famosi comandi:
make
make install
In questo modo però perdiamo la grande comodità di usare un pacchetto debian, che, grazie anche alle ultime implementazioni in Ubuntu, è del tutto utilizzabile come un file di installo (i famosi *.exe in windows).
I fastidi rilevano soprattutto in fase di disinstallo. Se è vero che basterebbe un
Per eliminare il programma, è altrettanto vero che poter usare il database dei pacchetti deb installati risulta molto pià comodo in funzione di applicazioni quali Synaptic che si occupano in visuale di fare quello che altrimenti dovremmo fare da linea di comando.
Se a questo aggiungiamo che spesso, la disinstallazione da terminale implica la non cancellazione di file, necessari per il programma, ma inutili senza, si capisce il perchè sia preferibile installare un debian, piuttosto che far tutto da sorgente.
Di seguito una piccola guida NON esaustiva.
Pacchetti necessari e consigliati
Prima di tutto dobbiamo avere il necessario per compilare i sorgenti ed impacchettarli per benico .
– Compilatori gcc e g++:
sudo apt-get install g++
E’ probabile che ci sia da installare solo il compilatore g++.
– Altri pacchetti necessari per la compilazione:
sudo apt-get install devscript
– Pacchetti necessari per la gestione dei debian:
sudo apt-get install dh-make
sudo apt-get install dpkg
sudo apt-get install dpkg-dev
E’ molto probabile che i pacchetti make e dpkg siano già installati nel sistema.
– Pacchetti consigliati:
Vedremo dopo perchè è consigliato .
Compiliamo!
La prima cosa che dobbiamo fare è scaricare i sorgenti dal sito del distributore. Verosimilmente scaricheremo un file tar compresso gz, bz2 o con qualche altro algoritmo di compressione.
Decomprimiamo il tutto in una directory a parte, di modo tale che il contenuto dell’archivio sia dentro una directory a se stante. Il più delle volte, l’archivio contiene già una directory madre in cui è contenuto il tutto, per cui basterà lanciare un:
Ho scritto un nome di archivio come tar.gz, ma ripeto, gz non è l’unico algoritmo di compressione utilizzabile.
Decompresso l’archivio dobbiamo stare attenti a che nome ha la directory che contiene i sorgenti decompressi. In base a questa otterremo il nome del pacchetto.
La struttura del nome della directory che contiene i sorgenti deve essere:
Con nomepacchetto che deve contenere caratteri alfanumerici o punti o caratteri + e – e versione che deve cominciare con un numero.
Una directory chiamata "Nome_Pacchetto-a1.0" non è valida in quanto infrange la policy per i seguenti motivi:
- lettere maiuscole nel nome;
- carattere non consentito (il _ );
- versione con iniziale diversa da un numero.
In casi del genere rinominate la directory in questo modo:
Corretto il nome della directory dei sorgenti, ove necessario, entriamo nella directory stessa con il comando cd.
E da li lanciamo questo comando:
Questo è il comando che lancerete se il pacchetto serve a voi, non dovete redistribuirlo e non avete modificato i sorgenti, il pacchetto è un programma singolo.
Difatti, l’opzione -s serve a dire che si tratta di un programma singolo. Nel caso fosse stato un modulo per il kernel avremmo usato -k. Oppure -l in caso di libreria.
Con -n evitiamo di far fare una copia di backup dei sorgenti. Da fare se non avete modificato i sorgenti. Altrimenti meglio evitare la cosa.
Queste sono le opzioni di base. Potete settarle a vostro piacimento specificandone altre o diverse. Basta leggere l’help rapido di dh_make con un:
Il comando appena lanciato creerà una directory /debian/ all’interno della directory dei sorgenti. Se e solo se dovete redistribuire il pacchetto, editate il file control contenuto nella directory debian, specificando una descrizione breve ed estesa adeguate.
Badate bene ad una cosa: la descrizione estesa DEVE essere scritta con uno spazio vuoto ad inizio di ogni riga.
A questo punto, sempre rimanendo nella directory dei sorgenti, possiamo cominciare il processo di compilazione vero e proprio. Configuriamo il pacchetto.
Se abbiamo necessità di specificare delle opzioni di configurazione scriveremo qualcosa del tipo:
Nel caso in cui ricevessimo un messaggio che ci avverte che non tutte le dipendenze sono soddisfatte, possiamo usare pbuilder come root, lanciando il comando:
Se i pacchetti richiesti sono nei nostri repository, risolveremo in pochi secondi .
Fatto questo lanciamo il processo vero e proprio di generazione del debian:
Il comando si occuperà di compilare i sorgenti generando i binari, ed impacchettarli in un pacchetto debian che avrà come nome nomeprogramma_versione_architettura.deb.
Per fare un tentativo, ho compilato l’ultima versione del php disponibile. Ho ottenuto il pacchetto php_5.2.1_i386.deb che posso installare facilmente con un click del mouse.
Non badate alla descrizione, giusto per testimonianza .
Tra le opzioni da passare al configure, un MUST è –prefix=/usr π
Altre info, se ti interessano sono nell’articolo che scrissi nel mio blog ormai diverso tempo fa π
Si può anche lasciare in default…
Dipende dalle proprie esigenze. La cosa migliore è, ove disponibile, fare un ./configure –help
Grazie per l’ottima guida π
Adesso pacchettizzo a manetta

Uh, “When Trevino met Davidonzo” … Ora ci manca solo Felipe π …
Bella guida, denghiu’ π !
Ma Trevino e felipe sono di un altra categoria…
Io sono niente più che un cazzeggione π
Ottimo! π
Seguendo la guida ad un certo punto konsole mi restituisce questo errore: Can’t find X libraries. Please check your installation and add the correct paths!
Suppongo mi chieda di installare xlibs-data, xlibs-dev, o no?
Ciao
Si Luppolo, devi installare i pacchetti “-devel” di X