Spesso nel mondo del software libero si fanno correzioni ai programmi che contengono dei bug. Per fare questo è necessario scaricare il sorgente del programma: APT fornisce un modo semplice per scaricare i sorgenti di un programma, compresi i file necessari per creare il pacchetto .deb.
Un altro uso comune dei sorgenti è compilare su una distribuzione stable i pacchetti di testing o di unstable dato che, quelli presenti in quest'ultime, sono più recenti. Infatti, compilando un pacchetto su stable, sarà creato un .deb le cui dipendenze sono automaticamente aggiustate per operare in questa distribuzione.
Per poter fare questo dev'essere specificata almeno una riga deb-src in /etc/apt/sources.list che punti ai pacchetti di testing o di unstable. Vedere Il file /etc/apt/sources.list, Sezione 2.1.
Per scaricare un pacchetto sorgente, si può usare il seguente comando:
$ apt-get source packagename
Questo scaricherà tre file: un .orig.tar.gz, un .dsc e un .diff.gz. Se un pacchetto è fatto specificamente per Debian, l'ultimo fra quelli elencati non è scaricato e al primo della lista mancherà orig nel nome.
Il file .dsc è usato da dpkg-source per decomprimere il pacchetto sorgente nella directory nomepacchetto-versione. Dentro tutti i pacchetti sorgente, una volta scompattati, c'è dentro una directory debian/ che contiene i file necessari per la costruzione del pacchetto .deb.
Per automatizzare la costruzione del pacchetto, dopo aver scaricato i sorgenti, è sufficiente aggiungere l'opzione -b nella riga di comando:
$ apt-get -b source packagename
Se invece non si vuole creare il .deb al termine del download, lo si può creare successivamente lanciando:
$ dpkg-buildpackage -rfakeroot -uc -b
dopo essersi assicurati che nella directory corrente sia quella creata per il pacchetto al termine del download. Per installare il pacchetto creato con i precedenti comandi si deve usare direttamente il gestore di pacchetti in questo modo:
# dpkg -i file.deb
C'è una differenza fra il metodo source e gli altri messi a
disposizione da apt-get
: tale metodo può essere usato da tutti gli
utenti senza che questi abbiano i privilegi di root. I file sono scaricati
nella directory dalla quale è stato lanciato il comando apt-get source
package.
Normalmente per compilare un pacchetto sorgente è necessario aver installato header e librerie appropriate. Tutti i pacchetti sorgente hanno nei loro file di controllo un campo chiamato "Build-Depends:" che indica quali pacchetti devono essere installati per poter costruire il pacchetto dai sorgenti.
APT possiede un metodo veramente semplice per scaricare questi pacchetti. È sufficiente lanciare apt-get build-dep pacchetto, dove "pacchetto" è il nome del pacchetto che si vuole compilare. Per esempio:
# apt-get build-dep gmc Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev libgpmg1-dev 0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded. Need to get 1069kB of archives. After unpacking 3514kB will be used. Do you want to continue? [Y/n]
Saranno installati i pacchetti necessari per la corretta compilazione del
pacchetto gmc
. È importante notare che questo comando non
recupera i file sorgente del pacchetto che si vuole compilare, per scaricarlo
va lanciato prima apt-get source.
Se invece si è interessati solo a controllare quali pacchetti sono necessari per compilare un certo pacchetto c'è una variante del comando apt-cache show (vedere Ottenere informazioni sui pacchetti, Capitolo 5), che vi mostrerà fra le varie informazioni la riga Build-Depends in cui sono elencati questi pacchetti.
# apt-cache showsrc pacchetto
APT HOWTO
1.8.10 - Novembre 2004kov@debian.org