6948
Commento: typo
|
7958
style su una nota
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
## page was renamed from PbuilderHowto #format wiki #language it |
|
Linea 2: | Linea 5: |
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">[[TableOfContents]]|| | [[Indice()]] |
Linea 8: | Linea 11: |
* Compilare con comodità qualsiasi pacchetto Debian | |
Linea 18: | Linea 22: |
E' consigliabile usare sempre l'ultima versione di '''pbuilder''' (al momento della stesura di questo documento è la 0.161). '''pbuilder''' necessita di '''debootstrap''' per poter funzionare. Anche in questo caso è consigliabile utilizzare l'ultima versione disponibile (al momento della stesura di questo documento è la 0.3.3.1). | E' consigliabile usare sempre l'ultima versione di '''pbuilder''' (al momento della stesura di questo documento è la 0.161). '''pbuilder''' necessita di '''debootstrap''' per poter funzionare. Anche in questo caso è consigliabile utilizzare l'ultima versione disponibile (al momento della stesura di questo documento è la 0.3.3.3). |
Linea 22: | Linea 26: |
L'installazione predefinita permette di abilitare solo il repository '''Main''' al momento della creazione della ''chroot jail''. | L'installazione predefinita permette di abilitare solo il repository '''main''' al momento della creazione della ''chroot jail''. |
Linea 28: | Linea 32: |
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''Alcuni utenti potrebbero avere l'esigenza di inserire anche altri repository di Ubuntu quali edgy-backports, edgy-security, edgy-updates e edgy-proposed o di terze parti. Usare questa opportunità con cautela nel caso si distribuisca software per un repository pubblico o per l'upload su REVU, in quanto è possibile che non tutte le dipendenze vengano soddisfatte correttamente.''' || | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''Alcuni utenti potrebbero avere l'esigenza di inserire anche altri repository di Ubuntu quali jaunty-backports, jaunty-security, jaunty-updates e jaunty-proposed o di terze parti. Usare questa opportunità con cautela nel caso si distribuisca software per un repository pubblico o per l'upload su REVU, in quanto è possibile che non tutte le dipendenze vengano soddisfatte correttamente.''' || |
Linea 33: | Linea 37: |
sudo pbuilder create --basetgz /var/cache/pbuilder/edgy.tgz --distribution edgy | sudo pbuilder create --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty |
Linea 36: | Linea 40: |
In questo modo verrà creata la ''chroot jail'' scaricando da Internet diversi pacchetti per creare un ambiente minimale ma perfettamente funzionante di Ubuntu, completamente isolato dal sistema ospitante. Avere una connessione a banda larga è consigliabile anche se non strettamente indispensabile. | In questo modo verrà creata la ''chroot jail'' scaricando da Internet diversi pacchetti per creare un ambiente minimale ma perfettamente funzionante di Ubuntu, completamente isolato dal sistema ospitante. Avere una connessione a banda larga è caldamente consigliato. |
Linea 38: | Linea 42: |
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">'''Le opzioni ''--basetgz'' e ''--distribution'' servono per indicare a '''pbuilder''' che versione di Ubuntu si intende gestire. Per chi non fosse interessato a mantenere più ''chroot jail'' contemporaneamente, è possibile adattare il file `/etc/pbuilder/pbuilderrc` modificando la variabile ''DISTRIBUTION'' secondo le proprie esigenze. In questo caso le due opzioni possono essere tranquillamente omesse, anche per i comandi che verranno presentati in seguito.''' || | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Le opzioni'' «--basetgz» ''e'' «--distribution» ''servono per indicare a'' '''pbuilder''' ''quale versione di Ubuntu si intende gestire. Nel caso in cui non si fosse interessati a mantenere più di una chroot jail, è possibile adattare il file'' `/etc/pbuilder/pbuilderrc` ''modificando la variabile'' «DISTRIBUTION» ''secondo le proprie esigenze. In questo caso le due opzioni possono essere tranquillamente omesse, anche per i comandi che verranno presentati in seguito.'' || |
Linea 44: | Linea 48: |
}}} o direttamente dal sito [http://packages.ubuntu.com]. Solitamente ogni pacchetto sorgente è formato da due file, l'archivio dei sorgenti con estensione `.tar.gz` e il file di descrizione con estensione `.dsc`. A volte è presente anche l'archivio delle differenze con estensione `.diff.gz`. Per una corretta gestione, tali file devono essere rigorosamente nella stessa directory. | }}} o direttamente dal sito [http://packages.ubuntu.com]. Solitamente ogni pacchetto sorgente è formato da tre file, l'archivio dei sorgenti con estensione `,orig.tar.gz`, il file delle differenze con estensione `.diff.gz` e il file di descrizione con estensione `.dsc`. A volte è presente solo il file `.tar.gz` al posto dell'archivio sorgenti e del file delle differenze. Per una corretta gestione, tali file devono essere rigorosamente nella stessa directory. |
Linea 47: | Linea 51: |
sudo pbuilder build --basetgz /var/cache/pbuilder/edgy.tgz --distribution edgy nomepacchetto.dsc | sudo pbuilder build --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty nomepacchetto.dsc |
Linea 68: | Linea 72: |
pdebuild -- --basetgz /var/cache/pbuilder/edgy.tgz --distribution edgy | pdebuild -- --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty |
Linea 71: | Linea 75: |
In questo caso è però necessario installare alcuni pacchetti aggiuntivi: | In questo caso è però necessario [:AmministrazioneSistema/InstallareProgrammi:installare] i seguenti pacchetti aggiuntivi: |
Linea 73: | Linea 77: |
* devscripts * debhelper * dpatch * cdbs |
* ''devscripts'' * ''debhelper'' * ''dpatch'' * ''cdbs'' |
Linea 81: | Linea 85: |
sudo pbuilder update --basetgz /var/cache/pbuilder/edgy.tgz --distribution edgy | sudo pbuilder update --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty |
Linea 92: | Linea 96: |
= Uso di pbuilder-distribution = Le opzioni di pbuilder sono potenti, ma a volte è noioso ripeterle ogni volta. Questo è particolarmente vero nel caso si gestiscano più chroot jail contemporaneamente. Per velocizzare il lavoro è possibile utilizzare lo script pbuilder-distribution in questo modo: {{{ sudo ln -s /usr/share/doc/pbuilder/examples/pbuilder-distribution.sh /usr/local/bin/pbuilder-jaunty }}} Creando questo link simbolico, è possibile effettuare le operazioni sulla chroot jail desiderata senza specificare alcun parametro opzionale quali ''--distribution'' o ''--basetgz'' dato che pbuilder-distribution si occupa di gestire il tutto automaticamente. I comandi disponibili sono i medesimi di pbuilder: {{{ create update build clean login execute }}} |
|
Linea 94: | Linea 121: |
* [http://www.netfort.gr.jp/~dancer/software/pbuilder.html pbuilder Home Page] * [http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html pbuilder User's Manual] * [wiki:Ubuntu/PbuilderHowto pbuilder Howto] |
* [wiki:Ubuntu/PbuilderHowto pbuilder Documento originale] * [http://www.netfort.gr.jp/~dancer/software/pbuilder.html Sito ufficiale del progetto] * [http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html Documentazione ufficiale] |
Linea 98: | Linea 125: |
CategoryNuoviDocumenti | CategoryDaRevisionare CategoryProgrammazione |
Introduzione
Questo documento descrive i passi per predisporre una chroot jail per la costruzione dei pacchetti per Ubuntu usando pbuilder. E' raccomandato per gli sviluppatori o per chiunque sia interessato nella costruzione di pacchetti per Ubuntu e sistemi basati su apt. Attraverso questo strumento è possibile effettuare un discreto numero di operazioni con facilità tra le quali:
- Compilare con comodità qualsiasi pacchetto Debian
- adattare un pacchetto disponibile in una release superiore di Ubuntu
- adattare un pacchetto non presente in Ubuntu
contribuire alle attività del team [https://bugs.launchpad.net/people/ubuntu-backports-testers Backports Testers]
E' comunque possibile costruire i pacchetti senza l'ausilio di pbuilder, ma occorre installare preventivamente tutte le dipendenze richieste dal pacchetto, le quali rimangono presenti sul sistema anche dopo aver terminato la procedura di creazione, occupando una notevole quantità di spazio su disco, senza giustificato motivo.
Installazione
Ubuntu fornisce nativamente questi pacchetti, quindi è possibile installarli con facilità usando il gestore di pacchetti preferito.
E' consigliabile usare sempre l'ultima versione di pbuilder (al momento della stesura di questo documento è la 0.161). pbuilder necessita di debootstrap per poter funzionare. Anche in questo caso è consigliabile utilizzare l'ultima versione disponibile (al momento della stesura di questo documento è la 0.3.3.3).
Configurazione
L'installazione predefinita permette di abilitare solo il repository main al momento della creazione della chroot jail.
Onde evitare problemi di dipendenze durante la procedura, è consigliabile modificare il file /etc/pbuilder/pbuilderrc adattando l'opzione COMPONENTS in questo modo:
COMPONENTS="main restricted universe multiverse"
Alcuni utenti potrebbero avere l'esigenza di inserire anche altri repository di Ubuntu quali jaunty-backports, jaunty-security, jaunty-updates e jaunty-proposed o di terze parti. Usare questa opportunità con cautela nel caso si distribuisca software per un repository pubblico o per l'upload su REVU, in quanto è possibile che non tutte le dipendenze vengano soddisfatte correttamente. |
Inizializzazione di pbuilder
Ora che la fase preparatoria è terminata, è necessario inizializzare pbuilder con il comando:
sudo pbuilder create --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty
In questo modo verrà creata la chroot jail scaricando da Internet diversi pacchetti per creare un ambiente minimale ma perfettamente funzionante di Ubuntu, completamente isolato dal sistema ospitante. Avere una connessione a banda larga è caldamente consigliato.
Le opzioni «--basetgz» e «--distribution» servono per indicare a pbuilder quale versione di Ubuntu si intende gestire. Nel caso in cui non si fosse interessati a mantenere più di una chroot jail, è possibile adattare il file /etc/pbuilder/pbuilderrc modificando la variabile «DISTRIBUTION» secondo le proprie esigenze. In questo caso le due opzioni possono essere tranquillamente omesse, anche per i comandi che verranno presentati in seguito. |
Creazione dei pacchetti
Per procedere alla creazione di un pacchetto occorre dotarsi dei relativi pacchetti sorgenti, reperibili per mezzo del comando:
apt-get source
o direttamente dal sito [http://packages.ubuntu.com]. Solitamente ogni pacchetto sorgente è formato da tre file, l'archivio dei sorgenti con estensione ,orig.tar.gz, il file delle differenze con estensione .diff.gz e il file di descrizione con estensione .dsc. A volte è presente solo il file .tar.gz al posto dell'archivio sorgenti e del file delle differenze. Per una corretta gestione, tali file devono essere rigorosamente nella stessa directory.
Una volta ottenuti i vari file che formano il pacchetto sorgente, occorre eseguire il comando:
sudo pbuilder build --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty nomepacchetto.dsc
Inizierà il processo di creazione che comprende le seguenti fasi:
- Scompattazione della chroot jail
- Verifica delle dipendenze del pacchetto
- Scaricamento delle dipendenze necessarie e loro installazione
- Compilazione del codice sorgente
- Creazione del pacchetto
- Cancellazione dei file temporanei utilizzati
Se la compilazione ha avuto esito positivo, il pacchetto in formato .deb sarà disponibile nella directory /var/cache/pbuilder/result, pronto per essere utilizzato.
Creazione con pdebuild
A volte accade che si rende necessario modificare alcuni file sorgente per applicare patch oppure adattare uno o più file di controllo. Per poter procedere alla pacchettizzazione, occorre per prima cosa ottenere i sorgenti del pacchetto da compilare con il comando:
dpkg-source -x nomepacchetto.dsc
Una volta terminata l'operazione, è necessario spostarsi nella directory dei sorgenti appena generata e, dopo aver apportato le modifiche desiderate, eseguire il comando:
pdebuild -- --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty
In questo caso è però necessario [:AmministrazioneSistema/InstallareProgrammi:installare] i seguenti pacchetti aggiuntivi:
devscripts
debhelper
dpatch
cdbs
Aggiornare la chroot jail
Ogni tanto è consigliabile aggiornare la chroot jail con le nuove versioni dei pacchetti onde evitare problemi con le dipendenze nell'installazione dei pacchetti compilati con pbuilder. Per poter fare ciò è sufficiente eseguire il comando:
sudo pbuilder update --basetgz /var/cache/pbuilder/jaunty.tgz --distribution jaunty
Pulizia della cache
Con il tempo la cache di pbuilder può diventare estremamente voluminosa ed è consigliabile effettuare una pulizia periodica delle directory delle dipendenze eseguendo il comando:
sudo pbuilder clean
Il comando non andrà a cancellare i pacchetti creati e riposti in /var/cache/pbuilder/result. |
Uso di pbuilder-distribution
Le opzioni di pbuilder sono potenti, ma a volte è noioso ripeterle ogni volta. Questo è particolarmente vero nel caso si gestiscano più chroot jail contemporaneamente.
Per velocizzare il lavoro è possibile utilizzare lo script pbuilder-distribution in questo modo:
sudo ln -s /usr/share/doc/pbuilder/examples/pbuilder-distribution.sh /usr/local/bin/pbuilder-jaunty
Creando questo link simbolico, è possibile effettuare le operazioni sulla chroot jail desiderata senza specificare alcun parametro opzionale quali --distribution o --basetgz dato che pbuilder-distribution si occupa di gestire il tutto automaticamente.
I comandi disponibili sono i medesimi di pbuilder:
create update build clean login execute
Ulteriori risorse
- [wiki:Ubuntu/PbuilderHowto pbuilder Documento originale]
[http://www.netfort.gr.jp/~dancer/software/pbuilder.html Sito ufficiale del progetto]
[http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html Documentazione ufficiale]