Pbuilder: compilazione in ambienti puliti: differenze tra le versioni

m
versioni compatibili
m (versioni compatibili)
 
(5 versioni intermedie di un altro utente non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Wheezy|Jessie}}
== Introduzione ==
== Introduzione ==
Pbuilder è uno strumento che permette di creare un ambiente pulito per la compilazione e il test esclusivamente dei pacchetti Debian. Inoltre può essere usato anche per effettuare i backport, compilazioni per diverse [[architettura|architetture]] (utilizzando "debootstrap" sono supportate solo "i386" e "amd64"), compilazioni particolari e tutto quello che può richiedere l'uso di un ambiente pulito e controllato.<br/>
Pbuilder è uno strumento che permette di creare un ambiente pulito per la compilazione e il test esclusivamente dei pacchetti Debian. Inoltre può essere usato anche per effettuare i backport, compilazioni per diverse [[architettura|architetture]] (utilizzando "debootstrap" sono supportate solo "i386" e "amd64"), compilazioni particolari e tutto quello che può richiedere l'uso di un ambiente pulito e controllato.<br/>
Il principale vantaggio di utilizzare Pbuilder consiste nel fatto che tutte le librerie necessarie alla compilazione verranno scaricate (di default in <code>//var/cache/pbuilder/aptcache</code>) all'occorrenza dal [[mirror]] predefinito e utilizzate nell'ambiente [[chroot]] creato; il tutto senza 'sporcare' il proprio sistema.
Il principale vantaggio di utilizzare Pbuilder consiste nel fatto che tutte le librerie necessarie alla compilazione verranno scaricate (di default in <code>/var/cache/pbuilder/aptcache</code>) all'occorrenza dal [[mirror]] predefinito e utilizzate nell'ambiente [[chroot]] creato; il tutto senza 'sporcare' il proprio sistema.


La compilazione può essere eseguita in due modi:
La compilazione può essere eseguita in due modi:
Riga 14: Riga 14:
</pre>
</pre>


== Configurazione e Opzioni ==
== Configurazione e opzioni ==
Il comando <code>pbuilder</code> va eseguito con i privilegi di [[root]] e normalmente non sono necessarie configurazioni particolari. Esistono opzioni che possono trovarsi nel file di configurazione <code>/etc/pbuilder/pbuilderrc</code>  oppure nel file <code>.pbuilderrc</code> . Se le opzioni non dovessero essere specificate nei file, devono essere specificate insieme al comando <code>pbuilder</code>; se anche da linea di comando non vengono inserite, assumeranno dei valori di default.
Il comando <code>pbuilder</code> va eseguito con i privilegi di [[root]] e normalmente non sono necessarie configurazioni particolari. Esistono opzioni che possono trovarsi nel file di configurazione <code>/etc/pbuilder/pbuilderrc</code>  oppure nel file <code>.pbuilderrc</code> . Se le opzioni non dovessero essere specificate nei file, devono essere specificate insieme al comando <code>pbuilder</code>; se anche da linea di comando non vengono inserite, assumeranno dei valori di default.


=== Opzioni da file di configurazione ===
=== Opzioni da file di configurazione ===
Queste vanno inserite nel file <code>/etc/pbuilder/pbuilderrc</code> (per tutti gli utenti) oppure nel file <code>.pbuilderrc</code> creato nella home dell'utente che esegue <code>pbuilder</code> . Leggere a tal proposito anche la [[manpage]] di <code>pbuilderrc</code> . Tutte le opzioni specificate in questi file vengono bypassate dalle corrispondenti opzioni specificate da linea di comando.
Queste vanno inserite nel file <code>/etc/pbuilder/pbuilderrc</code> (per tutti gli utenti) oppure nel file <code>.pbuilderrc</code> creato nella home dell'utente che esegue <code>pbuilder</code> . Leggere a tal proposito anche la [[manpage]] di <code>pbuilderrc</code> . Le opzioni specificate in questi file vengono bypassate dalle corrispondenti opzioni specificate dalla linea di comando.<br/>
Tutte queste opzioni, una per riga, sono nella forma:
<pre>
OPZIONE=valore
</pre>
 
;BASETGZ:specifica il percorso e il nome del file .tgz da utilizzare. Questa opzione viene bypassata da "--basetgz"
;BASETGZ:specifica il percorso e il nome del file .tgz da utilizzare. Questa opzione viene bypassata da "--basetgz"
;BUILDRESULT:il percorso assoluto della directory in cui si troveranno i pacchetti .deb al termine della compilazione. Questa opzione viene bypassata da "--buildresult"


=== Opzioni da linea di comando ===
=== Opzioni da linea di comando ===
Osserviamo e opzioni più importanti:
Osserviamo le opzioni più importanti:


==== pbuilder ====
==== pbuilder ====
Riga 37: Riga 43:
; <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;
; <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;
; <code>--logfile [filename to output log]</code> : 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;
; <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));
; <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);
; <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).
; <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).


Riga 71: Riga 77:
Pbuilder preleverà dalla rete il sistema base di Debian, configurerà i pacchetti scaricati e creerà il file .tgz. L'operazione richiede qualche minuto.
Pbuilder preleverà dalla rete il sistema base di Debian, configurerà i pacchetti scaricati e creerà il file .tgz. L'operazione richiede qualche minuto.


=== Aggiornamento Ambiente ===
=== Aggiornamento dell'ambiente ===
L'aggiornamento di un ambiente è altamente consigliato (così come si farebbe per una qualunque installazione di Debian), in particolare per le [[release]] [[testing]] e [[unstable]] nelle quali sono spesso presenti degli aggiornamenti che potrebbero portare ad una modifica delle dipendenze.
L'aggiornamento di un ambiente è altamente consigliato (così come si farebbe per una qualunque installazione di Debian), in particolare per le [[release]] [[testing]] e [[unstable]] nelle quali sono spesso presenti degli aggiornamenti che potrebbero portare ad una modifica delle dipendenze.


Riga 79: Riga 85:
=== 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 o pdebuild
* '''dalla directory che contiene i sorgenti''' tramite pdebuild
* '''dalla directory che contiene i sorgenti''' tramite pdebuild


Riga 98: Riga 104:


==== 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 <code>''debian/''</code>, 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:
<pre># pdebuild -- --basetgz /home/maxer/pbuilder/sid.tgz</pre>
<pre># pdebuild --use-pdebuild-internal -- --basetgz /home/maxer/pbuilder/sid.tgz</pre>


In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:
In questo caso, invece, la procedura seguita da pbuilder sarà leggermente diversa:
Riga 113: Riga 119:
Il [[pacchetto]] .deb risultante dalla compilazione si troverà nella directory "/var/cache/pbuilder/result" a meno che non si sia usata l'opzione "--buildresult". Quest'ultima va indicata ''prima'' di "--", ad esempio:
Il [[pacchetto]] .deb risultante dalla compilazione si troverà nella directory "/var/cache/pbuilder/result" a meno che non si sia usata l'opzione "--buildresult". Quest'ultima va indicata ''prima'' di "--", ad esempio:
<pre># pdebuild --buildresult /tmp -- --basetgz /home/maxer/pbuilder/sid.tgz</pre>
<pre># pdebuild --buildresult /tmp -- --basetgz /home/maxer/pbuilder/sid.tgz</pre>
per creare il pacchetto .deb nella directory <code>/tmp</code> .
per creare il pacchetto .deb nella directory <code>/tmp</code> .<br/>
L'opzione "--use-pdebuild-internal" è necessaria affinché i pacchetti contenenti le [[dipendenze]] per la compilazione vengano installati nell'ambiente chroot e non sul sistema.


=== Firma GnuPG ===
=== Firma GnuPG ===
Riga 119: Riga 126:
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ù).


Riga 158: Riga 165:
</pre>
</pre>
In cui le diverse opzioni significano:
In cui le diverse opzioni significano:
;--architecture i386: l'architettura scelta (sono supportate solo "i386" e "amd64").
;--architecture i386: l'architettura scelta (sono supportate, se si utilizza "debootstrap", solo "i386" e "amd64").
;--distribution wheezy: la distribuzione per cui compilare il pacchetto. Si può omettere questa opzione se si intende utilizzare una [[suite]] uguale a quella utilizzata dal proprio sistema.
;--distribution wheezy: la distribuzione per cui compilare il pacchetto. Si può omettere questa opzione se si intende utilizzare una [[suite]] uguale a quella utilizzata dal proprio sistema.
;--basetgz /home/pippo/pbuilder/386wheezy.tgz: il percorso e il nome del file .tgz da creare per contenere il nuovo ambiente [[chroot]].
;--basetgz /home/pippo/pbuilder/386wheezy.tgz: il percorso e il nome del file .tgz da creare per contenere il nuovo ambiente [[chroot]].
3 581

contributi