[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]
A questo punto, si dovrebbe essere pronti a creare il pacchetto.
Al fine di (ri)creare un pacchetto in modo appropriato, è necessario assicurarsi di installare
il pacchetto build-essential
,
i pacchetti elencati nel campo Build-Depends (vedere Il file control
, Sezione
4.1), e
i pacchetti elencati nel campo Build-Depends-indep (vedere Il file control
, Sezione
4.1).
Adesso ci si sposti nella directory dei sorgenti del programma e si lancia il comando:
$ dpkg-buildpackage
Questo comando creerà i pacchetti binari e sorgenti al posto vostro. Eseguirà le seguenti operazioni:
pulirà l'albero dei sorgenti ("debian/rules clean")
costruirà il pacchetto sorgente ("dpkg-source -b")
costruirà il programma ("debian/rules build")
costruirà il pacchetto binario ("fakeroot debian/rules binary")
firmerà il file sorgente .dsc
file, usando gpg
creerà e firmerà il file di upload .changes
file, usando
dpkg-genchanges
e gpg
Il solo input richiesto è la password per la propria chiave GPG, due volte.
Fatto ciò, si vedranno quattro nuovi file nella directory dei sorgenti
(~/gentoo
):
gentoo_0.9.12.orig.tar.gz
Questo è il codice sorgente originale, semplicemente rinominato in modo da aderire allo standard Debian. Da notare che questo è stato creato inizialmente con "dh_make -f ../gentoo-0.9.12.tar.gz".
gentoo_0.9.12-1.dsc
Questo è un sommario del contenuto del codice sorgente. Questo file è
generato dal file control
, ed è usato quando si decomprime il
sorgente con dpkg-source(1)
. Questo file è firmato con GPG, in
modo da confermare l'autenticità dell'autore del pacchetto.
gentoo_0.9.12-1.debian.tar.gz
Questo file compresso contiene il contenuto della directory
debian
. Ogni modifica effettuata al codice sorgente originale,
verrà memorizzata come patch di quilt
in
debian/patches
.
Se qualcun altro volesse ri-creare il pacchetto da zero, potrebbe farlo facilmente usando i suddetti tre file. La procedura di estrazione è banale: basta copiare i tre file da qualche parte ed eseguire "dpkg-source -x gentoo_0.9.12-1.dsc". [42]
gentoo_0.9.12-1_i386.deb
Questo è il pacchetto binario completo. Si può usare dpkg
per
installarlo e rimuoverlo, come per ogni altro pacchetto.
gentoo_0.9.12-1_i386.changes
Questo file descrive tutte le modifiche effettuate nella revisione corrente del
pacchetto, ed è usata dai programmi di manutenzione dell'archivio FTP di
Debian, per installare i pacchetti binari e sorgenti. È generato parzialmente
dal contenuto del file changelog
e dal file .dsc
.
Questo file è firmato con GPG, in modo da confermare l'autenticità
dell'autore del pacchetto.
Quando si lavora sul pacchetto, potrebbero cambiare il funzionamento del
programma, o potrebbero venire introdotte nuove funzionalità. Chi scaricherà
il pacchetto, potrà controllare questo file per vedere velocemente quali sono
i cambiamenti. I programmi di manutenzione dell'archivio Debian invieranno
anche i contenuti di questo file alla mailing list debian-devel-announce@lists.debian.org
.
Le lunghe stringhe di numeri nei file .dsc
e .changes
sono codici di controllo MD5/SHA1/SHA256 per i file menzionati. Chi scarica
questi file, può controllarli con md5sum(1)
,
sha1sum(1)
, o sha256sum(1)
e se i numeri non
corrispondessero saprebbe che il file relativo è corrotto, o è stato
alterato.
Debian supporta molti port
tramite la autobuilder network
, su
cui sono in esecuzione i demoni di buildd
su molti computer con
architetture differenti. Anche se non sarà necessario fare questo da soli, si
dovrebbe essere consapevoli di quello che succederà ai pacchetti. Si vedrà,
in maniera non approfondita, come i pacchetti vengono ricostruiti per
architetture differenti. [43]
I pacchetti con "Architecture: any", verranno ricostruiti dal sistema di auto-costruzione. Ci si assicuri di avere installato
il pacchetto build-essential
, e
i pacchetti elencati nel campo Build-Depends (vedere Il file control
, Sezione
4.1).
Dopo si può eseguire il comando seguente nella directory dei sorgenti:
$ dpkg-buildpackage -B
Questo comando creerà i pacchetti binari e sorgenti al posto vostro. Eseguirà le seguenti operazioni:
pulirà l'albero dei sorgenti ("debian/rules clean")
costruirà il programma ("debian/rules build")
costruirà il pacchetto binario per una specifica architettura ("fakeroot debian/rules binary-arch")
firmerà il file sorgente .dsc
file, usando gpg
creerà e firmerà il file di upload .changes
file, usando
dpkg-genchanges
e gpg
È questo il motivo per il quale si vede il proprio pacchetto per altre architetture.
Anche se i pacchetti sono elencati nel campo Build-Depends-indep,
per la normale creazione del pacchetto, devono comunque essere installati
(vedere (ri)Creazione completa, Sezione 6.1),
invece per il sistema di auto-costruzione non è necessario installarli dato
che costruisce solamente pacchetti binari per una specifica architettura. [44] Questa differenza tra la
normale pacchettizzazione e il sistema di auto-costruzione determina se i
pacchetti richiesti devono essere registrati nei campi
Build-Depends o Build-Depends-indep nel file
debian/control
(vedere Il file
control
, Sezione 4.1).
orig.tar.gz
per il caricamento.
Quando si carica per la prima volta il pacchetto nell'archivio, si deve
includere il file dei sorgenti originali orig.tar.gz
. Se l'ultima
voce del changelog non è la prima della versione originale, si deve eseguire
il comando dpkg-buildpackage
con l'attributo
"-sa". Al contrario, l'opzione
"-sd" forzerà l'esclusione del sorgente originale
orig.tar.gz
.
debuild
È possibile automatizzare ulteriormente il processo di creazione del
pacchetto, eseguito con il comando dpkg-buildpackage
, utilizzando
il comando debuild
. Vedere debuild(1)
.
La configurazione del comando debuild
può essere fatta usando
/etc/devscripts.conf
o ~/.devscripts
. Ecco alcune
impostazioni consigliate:
DEBSIGN_KEYID="ID_della_vostra_chiave_GPG" DEBUILD_LINTIAN=yes DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
Con queste impostazioni, i pacchetti saranno firmati usando la chiave GPG con
l'ID specificato (questo è utile per le sponsorizzazioni) e controllati con il
programma lintian
in modo dettagliato.
Per esempio, si può ripulire i sorgenti e ricreare il pacchetto da un account utente, con:
$ debuild
Si noti che il programma dpkg-buildpackage
eseguito con l'opzione
"-sa", può includere il sorgente originale
orig.tar.gz
, eccone un esempio:
$ debuild -sa
È possibile ripulire l'albero dei sorgenti con:
$ debuild clean
pbuilder
Il pacchetto pbuilder
è molto utile per verificare le dipendenze
di creazione del pacchetto da un ambiente (chroot
) di compilazione
sano e minimale. [45] Questo
assicura di compilare i sorgenti in maniera pulita, usando la distribuzione
sid un compilatore automatico (auto-builder) per differenti
architetture ed evita i bug FTBS (Fails To Build from Source) di severità
seria, che sono sempre di categoria RC (Critici per il Rilascio). Vedi
http://buildd.debian.org/
per maggiori informazioni sul compilatore automatico di pacchetti Debian.
Si configuri il pacchetto pbuilder
come segue.
impostare il permesso di scrittura per l'utente alla directory
/var/cache/pbuilder/result
.
creare una directory, ad es.
/var/cache/pbuilder/hooks
, con i permessi di scrittura
per l'utente per potergli inserire degli script di hook.
configurare il file ~/.pbuilderrc
o /etc/pbuilderrc
in modo che includa le seguenti righe.
AUTO_DEBSIGN=yes HOOKDIR="/var/cache/pbuilder/hooks"
Questo permetterà di firmare i pacchetti generati con la tua chiave GPG
segreta situata nella directory ~/.gnupg/
.
Si avvii pbuilder
per costruire l'ambiente chroot
locale, come segue.
$ sudo pbuilder create
Se si hanno già i pacchetti sorgenti, eseguire i seguenti comandi nella
directory in cui si trovano i file foo.orig.tar.gz
,
foo.debian.tar.gz
, e foo.dsc
per aggiornare l'ambiente chroot
di pbuilder
e per
costruirci dentro il pacchetto binario.
$ sudo pbuilder --update $ sudo pbuilder --build foo.dsc
Si noti che il programma dpkg-buildpackage
eseguito con l'opzione
"-sa", può includere il sorgente originale
orig.tar.gz
, eccone un esempio:
$ sudo pbuilder --build --debbuildopts "-sa" foo.dsc
Il nuovo pacchetto sarà creato nella directory
/var/cache/pbuilder/result/
con proprietà non assegnata
all'utente root.
Se si ha già l'albero dei sorgenti aggiornato, senza generare i rispettivi
pacchetti sorgenti, eseguire i seguenti comandi nella directory dei sorgenti in
cui si trova il file debian
.
$ sudo pbuilder --update $ pdebuild
Si noti che il programma dpkg-buildpackage
eseguito con l'opzione
"-sa", può includere il sorgente originale
orig.tar.gz
, eccone un esempio:
$ pdebuild --debbuildopts "-sa"
È possibile accedere all'ambiente chroot
con il comando
"pbuilder --login --save-after-login" e configurarlo
come si vuole. Questo ambiente può essere salvato, semplicemente uscendo
dalla shell con ^D (Control-D).
L'ultima versione del programma lintian
può essere eseguita
nell'ambiente chroot, usando gli script di hook
/var/cache/pbuilder/hooks/B90lintian
, configurati come
segue. [46]
#!/bin/sh set -e install_packages() { apt-get -y --force-yes install "$@" } install_packages lintian echo "+++ lintian output +++" su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes" - pbuilder # use this version if you don't want lintian to fail the build #su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" - pbuilder echo "+++ end of lintian output +++"
E' necessario avere accesso all'ultima versione di sid per poter
costruire correttamente i pacchetti per sid. In realtà
sid potrebbe avere dei problemi che rendono poco consigliabile
migrare l'intero sistema. In questo caso il pacchetto pbuilder
può essere molto di aiuto.
Potrebbe essere necessario aggiornare i pacchetti stable dopo il
loro rilascio per stable-proposed-updates,
stable/updates, ecc. [47] Per questa ragione "sto utilizzando un sistema
sid" non èè una buona scusa per non aggiornarli
tempestivamente. Il pacchetto pbuilder
aiuta ad accedere agli
ambienti di quasi tutte le distribuzioni derivate da Debian con la stessa
architettura di CPU.
Vedere http://www.netfort.gr.jp/~dancer/software/pbuilder.html
,
pdebuild(1)
, pbuilderrc(5)
, e
pbuilder(8)
.
git-buildpackage
ed altri simili
Se l'autore originale utilizza un sistema di controllo di versione (VCS
)
per gestire il proprio codice, si dovrebbe prendere in considerazione di
usarlo. Questo rende molto più semplice la fusione e la raccolta di patch dai
sorgenti originali. Ci sono diversi pacchetti di script adatti alla
costruzione di pacchetti Debian per ogni sistema VCS.
git-buildpackage
: Suite to help with Debian packages in Git
repositories.
topgit
: un gestore di code per le patch che utilizza Git
svn-buildpackage
: programmi di supporto per mantenere i pacchetti
Debian con Subversion.
cvs-buildpackage
: una serie di script per i pacchetti Debian per
gli alberi di sorgenti sotto CVS.
Questi pacchetti offrono un'alternativa più elegante, per gli utenti più
esperti, all'utilizzo manuale del comando quilt
, per
automatizzare la creazione dei pacchetti. Non verranno trattati in
questo manuale. [48]
Con un pacchetto di grandi dimensioni, si potrebbe non voler ricostruire tutto
da zero, ogni volte che si modifica un dettaglio in debian/rules
.
Per effettuare delle prove, si può creare un file .deb
, senza
ricompilare i sorgenti originali, come segue: [49]:
$ fakeroot debian/rules binary
Oppure, semplicemente controllando se costruirlo o no. Come:
$ fakeroot debian/rules build
Una volta completati i vari aggiustamenti, bisogna ricordarsi di ricostruire il
pacchetto usando la giusta procedura. Si potrebbe non essere in grado di
caricare il pacchetto correttamente se si prova con dei file .deb
creati in questo modo.
[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]
Guida per il nuovo Maintainer
version 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.org
kalos@nerdrug.org
jacopo.reggiani@gmail.com