Pbuilder: compilazione in ambienti puliti: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
revisionata
Nessun oggetto della modifica
(revisionata)
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.
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 =
== Installazione ==
Pbuilder è, ovviamente, contenuto in Debian:
Pbuilder è, ovviamente, contenuto in Debian:
<pre>
<pre>
Riga 7: Riga 10:
</pre>
</pre>


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


== pbuilder ==
=== pbuilder ===
; --basetgz [base.tgz] : permette di indicare una locazione, per il [[tarball]] dell'ambiente da gestire, diverso da quello di default
; <code>--basetgz [base.tgz]</code> : permette di indicare una locazione, per il [[tarball]] dell'ambiente da gestire, diverso da quello di default;
; --buildplace [location of build] : permette di specificare una directory, diversa da quella di default, dove ricreare l'ambiente ed eseguire le compilazioni
; <code>--buildplace [location of build] </code>: permette di specificare una 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
; <code>--mirror [mirror location]</code> : 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)
; <code>--othermirror [other mirror location in apt deb-line format, delimited with | signs]</code> : 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)
; <code>--http-proxy [proxy]</code> : 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
; <code>--distribution [distribution(potato|woody|sarge|sid|etch|experimental)]</code> : imposta la distribuzione;
; --buildresult [location-to-copy-build-result] : permette di specificare una directory diversa in cui posizionare i pacchetti creati
; <code>--buildresult [location-to-copy-build-result]</code> : 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
; <code>--aptcache [location of retrieved package files]</code> : 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
; <code>--configfile [configuration file to load]</code> : specifica un file di configurazione alternativo;
; --debemail [mail address] : imposta l'indirizzo email
; <code>--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
; <code>--debbuildopts [dpkg-buildpackage options]</code> : 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
; <code>--logfile [filename to output log]</code> : 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))
; <code>--binary-arch</code> : 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)
; <code>--save-after-login/--save-after-exec</code> : 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 ==
=== pdebuild ===
; --use-pdebuild-internal :
; <code>--use-pdebuild-internal</code> :
; --auto-debsign : impone la firma automatica al termine della compilazione del pacchetto
; <code>--auto-debsign</code> : impone la firma automatica al termine della compilazione del pacchetto;
; --debsign-k [keyid] : imposta la chiave con cui eseguire la firma del pacchetto
; <code>--debsign-k [keyid]</code> : imposta la chiave con cui eseguire la firma del pacchetto.


== Azioni ==
== Azioni ==
; create : creazione di un nuovo ambiente
; <code>create</code> : creazione di un nuovo ambiente;
; update : aggiornamento di un ambiente esistente
; <code>update</code> : aggiornamento di un ambiente esistente;
; build : compilazione
; <code>build</code> : compilazione;
; clean : pulizia di un ambiente
; <code>clean</code> : pulizia di un ambiente;
; login : login all'interno di un ambiente
; <code>login</code> : login all'interno di un ambiente;
; execute : esecuzione di un comando all'interno di un ambiente
; <code>execute</code> : esecuzione di un comando all'interno di un ambiente;
; dumpconfig : mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug
; <code>dumpconfig</code> : mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug.


= Utilizzo =
== Utilizzo ==
== Creazione Ambiente ==
=== Creazione Ambiente ===
In questo esempio creeremo un ambiente per la distribuzione Sid, con i repository Debian '''main''', '''contrib''' e '''non-free'''.
In questo esempio creeremo un ambiente per la distribuzione Sid, con i repository Debian '''main''', '''contrib''' e '''non-free'''.


Riga 51: Riga 54:


Analizzando il comando osserviamo che:
Analizzando il comando osserviamo che:
* con '''--basetgz''' impostiamo un percorso diverso per salvare il [[tarball]] che conterrà l'immagine del nostro ambiente;
* con <code>'''--basetgz'''</code> 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 <code>'''--mirror'''</code> specifichiamo un mirror italiano, mentre con <code>'''--othermirror'''</code> 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 <code>'''--distribution'''</code> impostiamo la distribuzione di cui vogliamo creare l'ambiente;
* con '''--debemail''' impostiamo la nostra email;
* con <code>'''--debemail'''</code> 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 ;-).
* con <code>'''--bynary-arch'''</code> 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è)!
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 ==
=== 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).
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).


Riga 65: Riga 68:
<pre># pbuider update --basetgz /home/maxer/pbuilder/sid.tgz</pre>
<pre># pbuider update --basetgz /home/maxer/pbuilder/sid.tgz</pre>


== Compilazione di pacchetti ==
=== Compilazione di pacchetti ===
La compilazione può avvenire in due modi:
La compilazione può avvenire in due modi:
* '''Da un pacchetto di sorgenti''', tramite pbuilder
* '''da un pacchetto di sorgenti''', tramite pbuilder
* '''Dalla directory che contiene i sorgenti''' tramite pdebuild
* '''dalla directory che contiene i sorgenti''' tramite pdebuild


=== Da un pacchetto di sorgenti ===
==== 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]]).
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]]).


<pre># pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc </pre>
<pre># pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc </pre>
Riga 82: Riga 85:
# eventuale firma GnuPG
# eventuale firma GnuPG


=== Dalla Directory dei sorgenti ===
==== 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.
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 <code>''debian/''</code>, che gestisce la creazione dei pacchetti.


Una volta posizionati nella directory contenente i sorgenti, è sufficiente eseguire questo comando:
Una volta posizionati nella directory contenente i sorgenti, è sufficiente eseguire questo comando:
Riga 89: Riga 92:


In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:
In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:
# esecuzione ''debian/rules clean'' all'interno della directory dei sorgenti
# esecuzione <code>debian/rules clean</code> all'interno della directory dei sorgenti
# creazione dell'ambiente a partire dal tarball indicato
# creazione dell'ambiente a partire dal tarball indicato
# risoluzione delle dipendenze per la compilazione
# risoluzione delle dipendenze per la compilazione
Riga 96: Riga 99:
# eventuale firma GnuPG
# eventuale firma GnuPG


==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!
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.
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==
===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ù).
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 disponibile in Debian.
Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni (come Ubuntu, Knoppix, ecc) che altrimenti non sarebbero supportate dal pbuilder disponibile in Debian.


I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:
I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:
Riga 109: Riga 112:
* [[Pbuilder: Dapper.conf]]
* [[Pbuilder: Dapper.conf]]


=Varie=
==Varie==
==Semplifichiamo i comandi con alias==
===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.
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 <code>/root/.bashrc</code> delle righe simili alle seguenti:
Per fare questo, è sufficiente inserire nel file <code>/root/.bashrc</code> delle righe simili alle seguenti:
Riga 126: Riga 129:


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


# aggiornamento
# aggiornamento
alias pbuilder-update-sid="pbuilder update --basetgz /store3/sid.tgz --mirror http://debian.fastweb.it/debian"
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-etch="pbuilder update --basetgz /store3/etch.tgz --mirror http://debian.fastweb.it/debian"
1 508

contributi

Menu di navigazione