[ 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". [40]
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. [41]
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. [42] 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. [43] 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).
The latest version of the lintian
command can be executed in the
chroot environment using the hook script configured as follows.
[44]
$ cat > /var/cache/pbuilder/hooks/B90lintian <<EOF #!/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 +++" EOF
You need to have access to the latest sid environment to build
packages properly for sid. In reality, sid may be
experiencing issues which makes it not desirable for you to migrate your whole
system. The pbuilder
package can help you to cope with this kind
of situation.
You may need to update your stable packages after their release
for stable-proposed-updates, stable/updates, etc.
[45] For such occasions,
"I am running sid system" is not good enough excuse not
to update them promptly. The pbuilder
package can help you to
access environments of almost any Debian derivative distributions of the same
CPU architecture.
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.
These packages offer more elegant working environment than manual use of the
quilt
commands for advanced audiences to automate
building of packages. I will not explain them in this tutorial. [46]
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: [47]:
$ 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.19, 2010-05-31 13:48:35 UTCjoy-mg@debian.org
kalos@nerdrug.org
jacopo.reggiani@gmail.com