Pbuilder: compilazione in ambienti puliti

Da Guide@Debianizzati.Org.

Versione delle 16:00, 13 apr 2006, autore: MaXeR (Discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.


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.

Indice

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:

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

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

Varie

Firma GnuPG

Semplifichiamo i comandi con alias

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti