jump to navigation

Compilare con Debian (e Ubuntu)

In Facili, o quasi :), Guide il 17/11/04 @ 14:27 trackback

La Debian è una delle più solide e affidabili distribuzioni linux, l’unica sviluppata interamente su Internet, l’unica che non fa capo ad una azienda a scopo di lucro, quella che per prima ha cercato di promuovere l’adesione a tutti gli standard riconosciuti dalla comunità, la prima in assoluto a sviluppare un gestore di pacchetti, tuttora insuperato, e l’unica ad essere stata sponsorizzata dalla Free Software Foundation. Per questi motivi è considerata da molti “la” distribuzione linux. Per questi motivi ci sono decine di migliaia di pacchetti debian sulla rete (circa 10.000 soltanto nel mirror ufficiale…). I sorgenti di software di grande successo come MPlayer o anche l’intero progetto KDE, per citarne due, sono “debianizzati”, cioè pronti per essere compilati su una debian con il semplice comando:

$: dpkg-buildpackage

…che tra l’altro è solo uno dei tanti modi per installare un sorgente “debianizzato”, ce ne sono molti altri. In particolare io uso spesso

$: debian/rules binary

che permette di creare un pacchetto debian personalizzato con le opzioni che passereste a ./configure! Nei sorgenti “debianizzati” debian è una sottodirectory nell’albero dei sorgenti del pacchetto, mentre rules è lo script che fa tutto il “lavoraccio”. Il bello di dpkg-buildpackage invece è che non si limita a compilare: esegue un controllo per verificare che le librerie necessarie all’installazione ci siano tutte, configura i sorgenti, li compila e poi crea un pacchetto deb, pronto per essere installato come se fosse un pacchetto nativo appena scricato da un mirror debian.Si possono usare a piacimento, in base alle esigenze o al gusto.

Ecco come mi comporto io quando devo installare un’applicazione che viene in sorgenti “debianizzati”:

La mia Debian è al momento una woody, detta anche “stable”, ho però modificato il mio file /etc/apt/sources.list in modo che APT, il gestore di pacchetti Debian, vada
a recuperare i sorgenti dei pacchetti tra quelli della distribuzione “unstable”, che in genere sono versioni più recenti di quelli che si trovano in woody. Debian mantiene infatti contemporaneamente tre versioni del suo sistema operativo: stable (Woody), testing (Sarge) e unstable (Sid). C’è da dire che la versione
unstable è pur sempre una Debian, io l’ho usata per oltre un anno in passato, e non ho avuto nessuno dei problemi che invece hanno presentato di volta in volta le varie release di Mandrake o RedHat… meditate gente

L’esempio

Detto questo, faccio un esempio pratico, in questi giorni ho provato waimea, un piccolo window manager alla blackbox (ho la fissa per blackbox…), bene, mi sarebbe bastato fare qualcosa come:

$: apt-get build-dep waimea$: apt-get source --compile waimea

per installare eventuali dipendenze necessarie alla compilazione di waimea, scaricare i sorgenti di waimea, configurarli, compilarli e creare un pacchetto debian ottimizzato per la mia box… Ma la flessibilità di questo sistema si apprezza facendo un passo alla volta. Il comando:

$: apt-get build-dep waimea

Mi ha detto che per compilare correttamente waimea bisogna installare le librerie imlib2-dev, che a loro volta dipendono dalle imlib2, che a loro volta dipendono dalle libpng2-dev… Ora, la versione di libpng nel mio sistema è la 3, quindi per non creare conflitti ho deciso di scaricare anche i sorgenti di imlib2, per compilarli con le libpng3. Verifico eventuali dipendenze per compilare le imlib2:

$: apt-get build-dep imlib2

Ok, nessuna dipendenza da soddisfare, quindi scarico, compilo e installo le imlib2 e scarico waimea:

waimea

$: cd /usr/src/deb
$: mkdir imlib2
$: cd imlib2
$: apt-get source --compile imlib2
$: cd ../
$: dpkg -i *.deb
$: rm -rf *

$: mkdir waimea
$: cd waimea
$: apt-get source waimea
$: cd waimea-0.4.0-1

Ok, adesso, dopo aver letto i vari README, INSTALL ecc ecc… sono pronto ad analizzare i sorgenti di waimea per veder cosa posso fare perottimizzarne la compilazione:

$: ./configure --help

Non ricordo di aver trovato niente di particolare, ma facciamo finta che voglia che il pacchetto debian creato abbia il supporto per le immagini nella titlebar disabilitato, che poi sarebbe il compito delle imlib2 (…), facciamo finta che l’opzione che avrei dato al configure sarebbe stata –disable-pixmap, dunque faccio:

$: DEB_BUILD_OPTIONS="--disable-pixmap" debian/rules binary

La variabile DEB_BUILD_OPTIONS viene letta dallo script debian/rules e viene aggiunta ai parametri passati di default a configure, quindi il tutto procede automaticamente: configurazione, compilazione e costruzione del pacchetto debian “su misura” :) A questo punto non mi resta che installare il pacchetto generato:

$: cd ../
$: dpkg -i waimea_0.4.0-1.deb

Et voila! Fatto, ho installato il mio nuovo pacchetto. Per rimuovere l’installazione di waimea e imlib2 senza lasciare alcuna traccia basterà in qualsiasi momento usare gli strumenti classici di apt o dpkg:

$: apt-get --purge remove waimea imlib2-dev
$: dpkg --purge waimea imlib2-dev

Ovviamente questo genere di flessibilità si apprezza solo dopo aver fatto un po’ di pratica con il potentissimo strumento alla base di tutto: dpkg, e magari quando si ha a che fare con compilazioni di una certa complessità.

Ultima cosa, la grande potenza di dpkg sta anche nel convertire con relativa semplicità sorgenti originali tar.gz reperiti in rete in sorgenti “debianizzate”, ma questa è un’altra storia… :)

Condividi questo articolo:

  • FriendFeed 
  • TwitThis 
  • Facebook 
  • Badzu 
  • LinkedIn 
  • Google 
  • del.icio.us 
  • Wikio IT 
  • DiggIta 
  • Technotizie 
  • OKNotizie 

Pagine forse correlate:


Commenti »

1. Anonymous - 7/02/05 @ 22:34

Ciao!
Mi viene spontanea una domandina: Non si potrebbe fare un pacchetto per Debian con il “famigerato” USB Fastrate 100 e le dipendenze del Kernel???
Pongo la domanda come neofita Linux ed in particolare di Quilinux Distro italiana!!!E’ l’unica che riconosce il modem suindicato, ma bisogna fare attenzione alla “TUA” meravigliosa Guida. Cmq, potrebbe essere fattibile un pacchetto DEB con tutto l’occorrente per il famigerato modem??
[email protected]

2. felipe - 7/02/05 @ 22:47

…in teoria sì, in pratica è molto ma molto difficile, visto che creare un pacchetto kernel con tutte le opzioni del caso non è impresa facile. Che io sappia solo Mandrake ha un kernel che di default supporta tutto quello che basta per poter solo installare i driver.

Fare un rpm per Mandrake quindi non dovrebbe essere difficile, ma per deb bisogna lavorare un po’ :)

3. Compilare con Ubuntu: 1) apt-get build-dep « pollycoke :) - 22/10/06 @ 15:09

[...] Questa guida si ispira ad una delle primissime cose scritte per pollycoke: il post “Compilare con Debian“, che a sua volta era un approfondimento al post “Compilare sorgenti“. Prima di cominciare a fare qualsiasi cosa quindi vi chiedo di leggere quelle due guide: contengono nozioni indispensabili. [...]

4. Installare e Configurare Compiz da GIT « pollycoke :) - 9/09/08 @ 18:31

[...] Compilare con Debian [...]

(commentando accetti implicitamente le Regole di pollycoke, leggile!)