Pbuilder: compilazione in ambienti puliti: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (rimosso lo stub)
Riga 1: Riga 1:
== Introduzione ==
Pbuilder è uno strumento che permette di creare un ambiente pulito per la compilazione e il test di pacchetti Debian. Inoltre può essere usato anche per effettuare i backport, compilazioni particolari e tutto quello che può richiedere l'uso di un ambiente pulito e controllato.
 
Questo how-to spiegher� il procedimento da seguire per compilare (alla debian-way) un kernel 2.6.11 con la patch bootsplash.
 
 
== Software richiesto ==
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornir� tutto (o quasi) ci� di cui abbiamo bisogno.
Anzitutto, editiamo il nostro '''/etc/apt/sources.list''' aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
 
<pre>deb http://www.bootsplash.de/files/debian/ unstable main</pre>
 
Abbiamo poi bisogno delle librerie e/o programmi che utilizzeremo per la compilazione vera e propria:


= Installazione =
Pbuilder è, ovviamente, contenuto in Debian:
<pre>
<pre>
PACCHETTO          VERSIONE MINIMA    COMANDO
# apt-get install pbuilder
 
binutils            2.12                ld -v
e2fsprogs          1.29                tune2fs
gcc                2.95.3              gcc --version
make                3.78                make --version
module-init-tools  0.9.10              depmod -V
procps              3.1.13              ps --version
util-linux          2.10o              fdformat --version
kernel-package
initrd-tools
libncurses-dev
</pre>
</pre>


Ora possiamo procedere al download dei sorgenti del kernel:
= Configurazione e Opzioni =
 
Normalmente non sono necessarie configurazioni particolari, osserviamo, perciò, le opzioni più importanti:
<pre># apt-get install kernel-source-2.6.11</pre>
 
Con questo comando, [[APT]] scaricher� un archivio .tar.bz2 in '''/usr/src/''', contenente proprio il sorgente del [[kernel]].
 
&Egrave; inoltre necessario scaricare una patch apposita da applicare al kernel:
 
[http://www.bootsplash.de/files/bootsplash-3.1.6-2.6.11.diff Patch per Kernel 2.6.11]
 
In caso si tenti questa procedura con altri kernel, oppure, essendo la pagina soggetta ad aggiornamento, il file risulti inesistente, &egrave; possibile scaricare la patch di interesse cercandola in http://www.bootsplash.de/files/


''formato: bootsplash-versione_patch-versione_kernel.diff''
== pbuilder ==
; --basetgz [base.tgz] : permette di indicare una locazione, per il [[tarball]] dell'ambiente da gestire, diverso da quello di default
; --buildplace [location of build] : permette di specificare un directory, diversa da quella di default, dove ricreare l'ambiente ed eseguire le compilazioni
; --mirror [mirror location] : permette di specificare un [[mirror]] Debian diverso da quello predefinito
; --othermirror [other mirror location in apt deb-line format, delimited with | signs] : permette di aggiungere altri mirror (o repository)
; --http-proxy [proxy] : se è presente un proxy http nella rete, è possibile gestirne l'accesso (nella forma http://username:password@server)
; --distribution [distribution(potato|woody|sarge|sid|etch|experimental)] : imposta la distribuzione
; --buildresult [location-to-copy-build-result] : permette di specificare una directory diversa in cui posizionare i pacchetti creati
; --aptcache [location of retrieved package files] : permette di specificare una directory in cui immagazzinare i pacchetti debian scaricati (e usati) per soddisfare le dipendenze per la compilazione
; --configfile [configuration file to load] : specifica un file di configurazione alternativo
; --debemail [mail address] : imposta l'indirizzo email
; --debbuildopts [dpkg-buildpackage options] : permette di impostare delle opzioni aggiuntive per il comando ''dpkg-buildpackage'', che si occupa della creazione di un pacchetto Debian a partire dai sorgenti
; --logfile [filename to output log] : specifica un file di log, utile per analizzare con calma i risultati delle compilazioni
; --binary-arch : permette di impostare l'architettura da usare per la creazione dell'ambiente (utile nel caso di supporto per più architetture (macchina a 64 bit))
; --save-after-login/--save-after-exec : permette di salvare lo stato della macchina al termine di una sessione interattiva, ricreando il tarball a partire dall'ambiente modificato (usare con attenzione)


== Compilazione ==
== pdebuild ==
; --use-pdebuild-internal :
; --auto-debsign : impone la firma automatica al termine della compilazione del pacchetto
; --debsign-k [keyid] : imposta la chiave con cui eseguire la firma del pacchetto


=== Scompattazione e Patch del Sorgente ===
== Azioni ==
; create : creazione di un nuovo ambiente
; update : aggiornametno di un ambiene esistente
; build : compilazione
; clean : pulizia di un ambiente
; login : login all'interno di un ambiente
; execute : esecuzione di un comando all'interno di un ambiente
; dumpconfig : mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug


Bene, prima di procedere con la compilazione, &egrave; necessario applicare la patch bootsplash (vedi sopra) al nostro kernel.


Prima di tutto, scompattiamo l'archivio contenente i sorgenti.
= Utilizzo =
 
== Creazione Ambiente ==
Per fare ci�, spostiamoci in '''/usr/src/''', e procediamo con la scompattazione':
In questo esempio creeremo un ambiente per la distribuzione sid, con i repository Debian '''main''', '''contrib''' e '''non-free'''.


<pre>
<pre>
# cd /usr/src/
# pbuilder create --basetgz /home/maxer/pbuilder/sid.tgz --mirror http://debian.fastweb.it/debian \
# tar -jxvf kernel-source-2.6.11.tar.bz2
    --othermirror http://debian.fastweb.it/debian contrib non-free --distribution sid \
    --debemail maxer@knio.it --binary-arch i386
</pre>
</pre>


A questo punto verr&agrave; creata una nuova directory, '''/usr/src/kernel-source-2.6.11/'''.
Analizzando il comando osserviamo che:
* con '''--basetgz''' impostiamo un percorso diverso per salvare il [[tarball]] che conterrà l'immagine del nostro ambiente;
* con '''--mirror''' specifichiamo un mirror italiano, mentre con '''--othermirror''' aggiungiamo anche ''non-free'' e ''contrib'' (allo stesso modo potremmo aggiungere altri repository...);
* con '''--distribution''' impostiamo la distribuzione di cui vogliamo creare l'ambiente;
* con '''--debemail''' impostiamo la nostra email;
* con '''--bynary-arch''' impostiamo l'architettura dei nostri binari (utile nei sistemi a 64 bit, in cui è possibile emulare l'architettura a 32 bit ;-).


Spostiamoci dunque nella nuova directory e applichiamo la patch che abbiamo scaricato:
Pbuilder scaricherà dalla rete tutto il materiale necessario, e creerà l'immagine (potrebbe volerci molto tempo.. quindi è consigliata una bella tazzona di caffè)!


<pre>
== Aggiornamento Ambiente ==
# cd /usr/src/kernel-source-2.6.11
L'aggiornamento di un ambiente è utile per le release diversa da Stable, nelle quali sono spesso presenti degli aggiornamenti, che potrebbero portare ad una modifica delle dipendenze (si pensi, ad esempio, alla migrazione da xfree ad xorg).
# patch -p1 < /usr/src/bootsplash-3.1.6-2.6.11.diff
</pre>


Non dovrebbe essere segnalato alcun errore nella patch a questo punto. In caso contrario, rimuoviamo la directory dei sorgenti e ripetiamo la procedura dall'inizio. &Egrave; importante applicare la patch bootsplash prima di qualunque altra patch, cio&egrave; sul kernel debian originale preso da APT.
Per aggiornare i pacchetti ed il database dei repository, è sufficiente un
<pre> # pbuider update --basetgz /home/maxer/pbuilder/sid.tgz</pre>


A questo punto, possiamo procedere con la compilazione del kernel.
== Compilazione di pacchetti ==
La compilazione può avvenire in due modi:
* '''Da un pacchetto di sorgenti''', tramite pbuilder
* '''Dalla directory che contiene i sorgenti''' tramite pdebuild


=== Configurazione del Kernel ===
=== Da un pacchetto di sorgenti ===
Questa procedura funziona se si dispone di un pacchetto Debian in formato ''sorgente''... la procedura è usabile, ad esempio, per ricompilare un pacchetto presente in testing o unstable per una distribuzione stable (tecnica chiamata [[backport]]).


Anzitutto, configuriamo il kernel stesso:
<pre> # pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc </pre>


<pre># make menuconfig</pre>
Questo comando avvierà la compilazione, esattamente secondo le seguenti fasi:
# creazione dell'ambiente a partire dal tarball indicato
# risoluzione delle dipendenze per la compilazione
# compilazione
# rimozione ambiente creato (definito ''sporco'')
# eventuale firma GnuPG


Vediamo cosa selezionare, brevemente.
=== Dalla Directory dei sorgenti ===
Questa procedura, a differenza di quella illustrata precedentemente, è molto più usata (almeno nel mio caso) in quanto può essere applicata direttamente alla directory dei sorgenti (si sta sempre parlando di pacchetti Debian, quindi i sorgenti devono contenere la directory ''debian/'', che gestisce la creazione dei pacchetti.


Selezioniamo il nostro modello di processore:
Una volta posizionati nella directori contenente i sorgenti, è sufficiente eseguire questo comando:
<pre>
<pre> # pdebuild build --basetgz /home/maxer/pbuilder/sid.tgz</pre>
| Processor type and features
|--- Processor family (Athlon/Duron/K7)
</pre>


In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:
# esecuzione ''debian/rules clean'' all'interno della directory dei sorgenti
# creazione dell'ambiente a partire dal tarball indicato
# risoluzione delle dipendenze per la compilazione
# compilazione
# rimozione ambiente creato (definito ''sporco'')
# eventuale firma GnuPG


Attiviamo qualche altra opzione per il boot:
==Firma GnuPG==
Pbuilder permette anche la firma con chiave [[GnuPG]], molto utile in quanto evita l'utilizzo di ''deb-sign'', automatizzando il tutto!
L'unico problema (se così si può definire) è la necessità di esportare la propria chiave privata ed importarla nel [[keyring]] dell'utente root.


<pre>
==File di Configurazione==
| Device Drivers
Una pratica diffusa e molto comoda per semplificare l'utilizzo di pbuider sono i file di configurazione: essi permettono, infatti, di specificare direttamente al loro interno i parametri (oltre ad offrirne molti di più).
|--- Block devices
|------ <*> Loopback device support
|------ <*> RAM disk support
|------ (8192) Default RAM disk size (kbytes)
|------ [*]  Initial RAM disk (initrd) support
</pre>


Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni (come ubuntu, knoppix, ...) che altrimenti non sarebbero supportate dal pbuilder dispnibile in Debian.


Attiviamo le opzioni necessarie a mostrare la schermata di boot:
I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:
* [[Pbuilder: Breezy.conf]]
* [[Pbuilder: Dapper.conf]]


<pre>
=Varie=
| Device Drivers
==Semplifichiamo i comandi con alias==
|--- Graphics support
I comandi da impartire sono spesso complessi e lunghi... in questo caso ci viene in aiuta ''alias'', che permette di creare un nuovo ''comando'', alias di uno più complesso.
|------ <M>  VGA 16-color graphics support
|------ <*>  VESA VGA graphics support
|------ Console display driver support
|--------- [*] VGA text console
|--------- [*]  Video mode selection support
|--------- <*> Framebuffer Console support
|------ Bootsplash configuration
|--------- [*] Bootup splash screen
</pre>
 
Ricordiamoci ovviamente di indicare, tra i [http://it.wikipedia.org/wiki/Filesystem Filesystem], quelli che utilizziamo sulla nostra macchina in aggiunta a quello ''ROM'', che viene utilizzato per le immagini initrd, le schede che abbiamo, etc...
 
Se stiamo ricompilando un kernel ovviamente sono cose che non si dovrebbero dimenticare!!!
 
=== Compilazione con make-kpkg (debian-way) ===
 
Ora che il kernel � compilato, possiamo procedere alla compilazione (debian-way):
 
<pre>
# make-kpkg clean
# make-kpkg --initrd --append-to-version -splash binary
</pre>
 
Prendiamo in considerazione l'ultimo comando:
 
'''make-kpkg''' � uno strumento che ci aiuta a creare kernel pacchettizzati in file binari, con estensione *.deb.
: --initrd - Crea il RAMDisk iniziale per mostrare l'immagine al boot;
: --append-to-version -splash - Aggiunge la stringa '-splash' alla versione del kernel che stiamo creando. In questo modo, se stiamo gi� utilizzando un kernel 2.6.11, il nostro nuovo kernel sar� il '2.6.11-splash', cos� in caso di problemi al boot potremo sempre tornare al kernel ''funzionante''.
: binary - Questo argomento specifica il ''target'' della nostra compilazione:


Per fare questo, è sufficiente inserire nel file ''/root/.bashrc'' delle righe simili alle seguenti:
<pre>
<pre>
binary          specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers
# comandi per la compilazione
                e kernel_source
alias pdebuild-sarge="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/stable -- --basetgz /store3/sarge.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-etch="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/testing -- --basetgz /store3/etch.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-sid="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/unstable -- --basetgz /store3/sid.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-breezy="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/breezy -- --basetgz /store3/breezy.tgz \
    --configfile /root/pbuilder-breezy.conf"


kernel_source    questo target produce un pacchetto .deb contenente i sorgenti del nuovo
# automatizziamo al massimo
                kernel che stiamo compilando
alias pdebuild-all="pdebuild-sarge; pdebuild-etch; pdebuild-sid; pdebuild-breezy"


kernel_headers  questo target produce un pacchetto .deb contenente gli header inclusi nel
# aggiornamento
                nuovo kernel
alias pbuilder-update-sid="pbuilder update --basetgz /store3/sid.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-etch="pbuilder update --basetgz /store3/etch.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-sarge="pbuilder update --basetgz /store3/sarge.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-breezy="pbuilder update --basetgz /store3/breezy.tgz --configfile /root/pbuilder-breezy.conf"


kernel_doc      questo target produce un pacchetto .deb contenente la documentazione
# automatizziamo al massimo
                relativa al nuovo kernel
alias pbuilder-update-all="pbuilder-update-sarge && pbuilder-update-etch && pbuilder-update-sid && pbuilder-update-breezy"
 
kernel_image    questo target produce un pacchetto .deb contenente il kernel in formato
                binario, con tutti i moduli specificati nella configurazione
</pre>
</pre>
I comandi elencati sono, per l'esattezza, quelli che uso io per creare i pacchetti per qualsiasi release Debian ed Ubuntu.


Una volta terminata la compilazione, troveremo in /usr/src un pacchetto il cui nome sar&agrave; qualcosa di molto simile a '''kernel-image-2.6.11-splash_10.00.Custom_i386.deb'''.
[[Categoria:Apt-Dev]]
 
A questo punto possiamo installare il nostro nuovo kernel!
 
<pre>
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
</pre>
 
Controlliamo la presenza del RAMDisk iniziale. Per fare ci&ograve; eseguiamo questo comando:
 
<pre>
# ls /boot/initrd.img-2.6.11*
</pre>
 
Se il comando restituisce un errore, creiamo il nostro RAMDisk:
 
<pre>
# cd /boot/
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
</pre>
 
== Installazione di Bootsplash ==
 
In questa fase ci viene in aiuto quel repository che abbiamo aggiunto all'inizio al nostro '''/etc/apt/sources.list'''.
 
Aggiorniamo i nostri archivi APT ed installiamo Bootsplash:
 
<pre>
# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
</pre>
 
Attenzione! L'ultimo pacchetto (bootsplash-theme-tuxinfo-debian) &egrave; il '''tema che vedremo al boot'''. Per vedere quali temi sono disponibili, diamo il seguente comando:
 
<pre>
# apt-cache search bootsplash-theme
</pre>
 
(Suggerimento: conviene inviare l'output in pipe a ''more'' o ''less'', dato che esistono numerosi temi!)
 
Scegliamo in questo caso il tema "tuxinfo-debian".
 
Durante l'installazione comparir&agrave; una finestra per la configurazione, che ci chieder&agrave; quale immagine utilizzare per il nostro boot.
 
Selezioniamo l'immagine creata in precedenza, cio&egrave; '''initrd.img-2.6.11-splash'''.
 
=== Configurazione del Bootloader ===
 
A questo punto siamo pronti per modificare il nostro bootloader. Facciamo un esempio per i due bootloader pi&ugrave; comuni: GRUB e LiLO:
 
Configurazione per GRUB ('''/boot/grub/menu.lst''')
<pre>
title          Debian GNU/Linux, kernel 2.6.11-splash
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.11-splash root=/dev/hda1 ro bootkbd=it
initrd          /boot/initrd.img-2.6.11-splash
savedefault
boot
</pre>
 
Configurazione per LiLO ('''/etc/lilo.conf''')
<pre>
image=/boot/vmlinuz-2.6.11-splash
        label="2.6.11-splash"
        initrd=/boot/initrd.img-2.6.11-splash
        append="splash=silent"
</pre>
 
Attenzione! Se usate LiLO come bootloader, &egrave; necessario aggiornare la sua configurazione con il seguente comando (dopo la modifica di /etc/lilo.conf):
<pre>
# lilo
</pre>
 
 
== Conclusioni ==
 
Bene, adesso siamo in grado di riavviare la nostra macchina e gustarci un bel bootsplash!
Nel caso vogliate cambiare tema, dopo aver installato il relativo pacchetto '''bootsplash-theme-*''', basta fare:
 
<pre>
# dpkg-reconfigure bootsplash
</pre>
 
Bisogna poi selezionare il nuovo tema che abbiamo installato, di nuovo initrd.img-2.6.11-splash come initrd, ricontrolliamo LiLO / GRUB e riavviamo...
 
Happy Debian!
 
----
[[User:Hanska|Hanska]] 20:32, 14 May 2005 (CEST)
 
[[Categoria:Kernel]]

Versione delle 16:06, 12 mag 2006

Pbuilder è uno strumento che permette di creare un ambiente pulito per la compilazione e il test di pacchetti Debian. Inoltre può essere usato anche per effettuare i backport, compilazioni particolari e tutto quello che può richiedere l'uso di un ambiente pulito e controllato.

Installazione

Pbuilder è, ovviamente, contenuto in Debian:

# apt-get install pbuilder

Configurazione e Opzioni

Normalmente non sono necessarie configurazioni particolari, osserviamo, perciò, le opzioni più importanti:

pbuilder

--basetgz [base.tgz]
permette di indicare una locazione, per il tarball dell'ambiente da gestire, diverso da quello di default
--buildplace [location of build]
permette di specificare un directory, diversa da quella di default, dove ricreare l'ambiente ed eseguire le compilazioni
--mirror [mirror location]
permette di specificare un mirror Debian diverso da quello predefinito
--othermirror [other mirror location in apt deb-line format, delimited with | signs]
permette di aggiungere altri mirror (o repository)
--http-proxy [proxy]
se è presente un proxy http nella rete, è possibile gestirne l'accesso (nella forma http://username:password@server)
--distribution [distribution(potato|woody|sarge|sid|etch|experimental)]
imposta la distribuzione
--buildresult [location-to-copy-build-result]
permette di specificare una directory diversa in cui posizionare i pacchetti creati
--aptcache [location of retrieved package files]
permette di specificare una directory in cui immagazzinare i pacchetti debian scaricati (e usati) per soddisfare le dipendenze per la compilazione
--configfile [configuration file to load]
specifica un file di configurazione alternativo
--debemail [mail address]
imposta l'indirizzo email
--debbuildopts [dpkg-buildpackage options]
permette di impostare delle opzioni aggiuntive per il comando dpkg-buildpackage, che si occupa della creazione di un pacchetto Debian a partire dai sorgenti
--logfile [filename to output log]
specifica un file di log, utile per analizzare con calma i risultati delle compilazioni
--binary-arch
permette di impostare l'architettura da usare per la creazione dell'ambiente (utile nel caso di supporto per più architetture (macchina a 64 bit))
--save-after-login/--save-after-exec
permette di salvare lo stato della macchina al termine di una sessione interattiva, ricreando il tarball a partire dall'ambiente modificato (usare con attenzione)

pdebuild

--use-pdebuild-internal
--auto-debsign
impone la firma automatica al termine della compilazione del pacchetto
--debsign-k [keyid]
imposta la chiave con cui eseguire la firma del pacchetto

Azioni

create
creazione di un nuovo ambiente
update
aggiornametno di un ambiene esistente
build
compilazione
clean
pulizia di un ambiente
login
login all'interno di un ambiente
execute
esecuzione di un comando all'interno di un ambiente
dumpconfig
mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug


Utilizzo

Creazione Ambiente

In questo esempio creeremo un ambiente per la distribuzione sid, con i repository Debian main, contrib e non-free.

# pbuilder create --basetgz /home/maxer/pbuilder/sid.tgz --mirror http://debian.fastweb.it/debian \
    --othermirror http://debian.fastweb.it/debian contrib non-free --distribution sid \
    --debemail maxer@knio.it --binary-arch i386

Analizzando il comando osserviamo che:

  • con --basetgz impostiamo un percorso diverso per salvare il tarball che conterrà l'immagine del nostro ambiente;
  • con --mirror specifichiamo un mirror italiano, mentre con --othermirror aggiungiamo anche non-free e contrib (allo stesso modo potremmo aggiungere altri repository...);
  • con --distribution impostiamo la distribuzione di cui vogliamo creare l'ambiente;
  • con --debemail impostiamo la nostra email;
  • con --bynary-arch impostiamo l'architettura dei nostri binari (utile nei sistemi a 64 bit, in cui è possibile emulare l'architettura a 32 bit ;-).

Pbuilder scaricherà dalla rete tutto il materiale necessario, e creerà l'immagine (potrebbe volerci molto tempo.. quindi è consigliata una bella tazzona di caffè)!

Aggiornamento Ambiente

L'aggiornamento di un ambiente è utile per le release diversa da Stable, nelle quali sono spesso presenti degli aggiornamenti, che potrebbero portare ad una modifica delle dipendenze (si pensi, ad esempio, alla migrazione da xfree ad xorg).

Per aggiornare i pacchetti ed il database dei repository, è sufficiente un

 # pbuider update --basetgz /home/maxer/pbuilder/sid.tgz

Compilazione di pacchetti

La compilazione può avvenire in due modi:

  • Da un pacchetto di sorgenti, tramite pbuilder
  • Dalla directory che contiene i sorgenti tramite pdebuild

Da un pacchetto di sorgenti

Questa procedura funziona se si dispone di un pacchetto Debian in formato sorgente... la procedura è usabile, ad esempio, per ricompilare un pacchetto presente in testing o unstable per una distribuzione stable (tecnica chiamata backport).

 # pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc 

Questo comando avvierà la compilazione, esattamente secondo le seguenti fasi:

  1. creazione dell'ambiente a partire dal tarball indicato
  2. risoluzione delle dipendenze per la compilazione
  3. compilazione
  4. rimozione ambiente creato (definito sporco)
  5. eventuale firma GnuPG

Dalla Directory dei sorgenti

Questa procedura, a differenza di quella illustrata precedentemente, è molto più usata (almeno nel mio caso) in quanto può essere applicata direttamente alla directory dei sorgenti (si sta sempre parlando di pacchetti Debian, quindi i sorgenti devono contenere la directory debian/, che gestisce la creazione dei pacchetti.

Una volta posizionati nella directori contenente i sorgenti, è sufficiente eseguire questo comando:

 # pdebuild build --basetgz /home/maxer/pbuilder/sid.tgz

In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:

  1. esecuzione debian/rules clean all'interno della directory dei sorgenti
  2. creazione dell'ambiente a partire dal tarball indicato
  3. risoluzione delle dipendenze per la compilazione
  4. compilazione
  5. rimozione ambiente creato (definito sporco)
  6. eventuale firma GnuPG

Firma GnuPG

Pbuilder permette anche la firma con chiave GnuPG, molto utile in quanto evita l'utilizzo di deb-sign, automatizzando il tutto! L'unico problema (se così si può definire) è la necessità di esportare la propria chiave privata ed importarla nel keyring dell'utente root.

File di Configurazione

Una pratica diffusa e molto comoda per semplificare l'utilizzo di pbuider sono i file di configurazione: essi permettono, infatti, di specificare direttamente al loro interno i parametri (oltre ad offrirne molti di più).

Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni (come ubuntu, knoppix, ...) che altrimenti non sarebbero supportate dal pbuilder dispnibile in Debian.

I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:

Varie

Semplifichiamo i comandi con alias

I comandi da impartire sono spesso complessi e lunghi... in questo caso ci viene in aiuta alias, che permette di creare un nuovo comando, alias di uno più complesso.

Per fare questo, è sufficiente inserire nel file /root/.bashrc delle righe simili alle seguenti:

# comandi per la compilazione
alias pdebuild-sarge="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/stable -- --basetgz /store3/sarge.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-etch="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/testing -- --basetgz /store3/etch.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-sid="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/unstable -- --basetgz /store3/sid.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-breezy="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/breezy -- --basetgz /store3/breezy.tgz \
    --configfile /root/pbuilder-breezy.conf"

# automatizziamo al massimo
alias pdebuild-all="pdebuild-sarge; pdebuild-etch; pdebuild-sid; pdebuild-breezy"

# aggiornamento
alias pbuilder-update-sid="pbuilder update --basetgz /store3/sid.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-etch="pbuilder update --basetgz /store3/etch.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-sarge="pbuilder update --basetgz /store3/sarge.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-breezy="pbuilder update --basetgz /store3/breezy.tgz --configfile /root/pbuilder-breezy.conf"

# automatizziamo al massimo
alias pbuilder-update-all="pbuilder-update-sarge && pbuilder-update-etch && pbuilder-update-sid && pbuilder-update-breezy"

I comandi elencati sono, per l'esattezza, quelli che uso io per creare i pacchetti per qualsiasi release Debian ed Ubuntu.