Nel documento si suppone l'utilizzo di un sistema squeeze. Se si
intende seguire questo documento per un sistema lenny,
bisognerebbe almeno installare delle versioni backport (n.d.t. versioni dei
programmi presenti nei pacchetti di testing e unstable, compilate per poter
funzionare in un sistema stable) di dpkg
e debhelper
.
Ci sono un paio di pacchetti simili, ma specializzati come
dh-make-perl
, dh-make-php
, ecc.
Detto questo, ovviamente ci sarà sempre qualche nuovo programma che vale la pena pacchettizzare.
si può utilizzare il comando file
per scoprire il formato di
archiviazione
Osserva che il programma in questione è già stato pacchettizzato, e la versione corrente 0.15.3 ha subito sostanziali modifiche dalla versione 0.9.12 menzionata nei seguenti esempi.
Vedere Autotools
Tutorial
e
/usr/share/doc/autotools-dev/README.Debian.gz
.
La stringa della versione può essere confrontata con "dpkg
--compare-versions ver1 op ver2".
Vedere dpkg(1)
manpage.
Il seguente testo assume che stiate utilizzando Bash come shell di login. Se
si utilizza un'altra shell di login, come la Z shell, bisognerà usare i suoi
file di configurazione al posto di ~/.bashrc
.
Se i sorgenti originali forniscono la directory debian
e il suo
contenuto, si deve eseguire il comando dh_make
con l'opzione
--addmissing. Il nuovo formato dei sorgenti 3.0
(quilt) è abbastanza maturo da non danneggiare questi pacchetti.
Potrebbe essere necessario aggiornare i contenuti forniti nei sorgenti
originali per il pacchetto debian.
Ecco le varie opzioni: "s" che sta per "binario
Singolo", "i" per "Indipendente
dall'architettura", "m" per "binario
Multiplo", "l" per "Libreria",
"k" per "modulo del Kernel",
"n" per "patch del kernel" e
"b" per "cdbs
". Questo documento
si focalizza sull'uso del pacchetto debhelper
con il comando
dh
. Verrà trattato l'utilizzo del nuovo programma
dh
per i "binari Singoli" e tratta brevemente quelli
"Indipendenti dall'architettura" e i "binari Multipli". Il
pacchetto cdbs
offre un'infrastruttura di script alternativa al
comando dh
e non rientra nell'ambito di questo documento.
Si può disabilitare tale configurazione lanciando il comando
quilt
come "quilt --quiltrc /dev/null ...".
La directory debian/patches
dovrebbe essere creata se si esegue
dh_make
, come descritto prima. Questo esempio crea la directory
nel caso in cui si stia aggiornando un pacchetto esistente.
Per i pacchetti binari multipli, il comando dh_auto_install
utilizza la directory temporanea debian/tmp
, mentre il comando
dh_install
, con l'aiuto dei file
debian/pacchetto-1.install
e
debian/pacchetto-2.install
suddivide il contenuto di
debian/tmp
nelle directory temporanee
debian/pacchetto-1
e
debian/pacchetto-2
per creare pacchetti binari multipli
*.deb
.
Questo è solo un esempio che mostra come un Makefile
dovrebbe
apparire. Se il Makefile
è creato dal comando
./configure
, il modo giusto per correggere il
Makefile
è eseguire il comando ./configure
dal
comando dh_auto_configure
includendo come opzione predefinita
--prefix=/usr.
L'autore si rende conto che questo non è il miglior esempio, considerando che
con il pacchetto libncurses
viene fornito il link simbolico
libcurses.so
, ma non è riuscito a trovare di meglio. Sono molto
graditi dei suggerimenti :-)
Questa strana situazione è ben documentata in Debian Policy
Manual, Footnotes 48
. Questo non è dovuto all'uso del comando
dh
nel file debian/rules
, ma bensì al funzionamento
di dpkg-buildpackage
.La stessa situazione si presenta per il
sistema
automatico di compilazione di Ubuntu
.
Alcune persone utilizzano dei valori di distribuzione non validi come UNRELEASED per evitare che un pacchetto venga accidentalmente caricato in una VCS condivisa.
Questo obiettivo è utilizzato da "dpkg-buildpackage" come in (ri)Creazione completa, Sezione 6.1.
Questo obiettivo è utilizzato da "dpkg-buildpackage -B" come in "ref id="porterbuild"".
Questo obiettivo è utilizzato da "dpkg-buildpackage -A".
Questo è una nuova caratteristica di debhelper
V7. La sua
architettura è documentata su Not Your
Grandpa's Debhelper
ed è stata presentata alla Debconf9 dal
programmatore di debhelper
. Su sistemi Debian lenny,
dh_make
crea file rules
molto più complicati, con
molti script dh_*
elencati per ogni target e li congela alla loro
condizione iniziale, prima della pacchettizzazione. Questo nuova versione del
programma dh
è molto più semplice e ci libera da questo vincolo.
Si continuerà ad avere il pieno potere di personalizzazione utilizzando i
target override_dh_*. Si veda Personalizzazione del file rules
, Sezione
4.4.3. Esso si basa solo sul pacchetto debhelper
e non
offusca il processo di compilazione come il pacchetto cdbs
.
Si può verificare la sequenza di avvio dei programmi dh_*
indicando il target come "dh --no-act
target" o "debian/rules -- '--no-act
target'", in questo modo si ottiene un'esecuzione
un'esecuzione simulata dei programmi.
Si presuppone che il pacchetto python-support
sia installato nel
sistema.
Per informazioni complete su tutto quello che questi script dh_*
fanno esattamente, e quali sono le loro opzioni, si prega di leggere i loro
rispettivi manuali e la documentazione debhelper
.
Questi comandi supportano anche altri ambienti di costruzione come
setup.py
, che possono essere elencati eseguendo
"dh_auto_build --list" nella directory dei sorgenti del
pacchetto.
Attualmente il programma esegue il primo target distclean,
realclean o clean prensente nel Makefile
Attualmente il programma esegue il primo target test o
check nel Makefile
Se il pacchetto installata il file
/usr/share/perl5/Debian/Debhelper/Sequence/nome_personalizzato.pm
,
si deve attivare la funzione di personalizzazione tramite il comando
"dh --with nome-personalizzato $@".
L'uso del comando dh_pysupport
è preferito rispetto all'uso di
del comando dh_pycentral
. Non si deve utilizzare il comando
dh_python
.
Sotto lenny, se si vuole cambiare il comportamento di uno script
dh_*
basta cercare la riga relativa nel file rules
e
modificarla.
Il pacchetto gentoo
utilizza il sistema di costruzione GNU,
conosciuto anche come Autotools. Si veda http://en.wikipedia.org/wiki/GNU_build_system
.
dh_auto_build
senza alcun argomento eseguirà il primo obiettivo
del file Makefile
.
I file debian/changelog
e debian/NEWS
vengono sempre
installati automaticamente. Il changelog originale viene ricercato convertendo
i nomi dei file in minuscolo e cercando la corrispondenza con
changelog
, changes
, changelog.txt
, e
changes.txt
.
Questo comando rimpiazza il comando dh_movefiles(1)
, ormai
deprecato, che veniva configurato dal file files
.
Se al comando manca la pagina info
ma esistono file di
documentazione nella directory /usr/share/pacchetto
, si
dovrebbe manualmente modificare la pagina man generata dal comando
help2man
.
Si noti che è avvenuta una grossa riorganizzazione della struttura dei menu.
Anche se è stata utilizzata una corta espressione Bash per indicare questi
file come "{post|pre}{inst|rm}
" , si raccomanda di
utilizzare una shell POSIX (non Bash) per questi script del
manutentore il più possibile per massimizzare la compatibilità.
Si veda DebSrc3.0
per una
serie di informazioni generali riguardanti il passaggio al nuovo formato
3.0 (quilt) ed ai formati sorgente 3.0 (native).
Al momento questo nuovo formato supporta anche molteplici archivi e più metodi di compressione. Questi però esulano dall'obiettivo di questo documento.
Alcuni metodi per la manutenzione delle patch dei pacchetti sono stati proposti
e vengono utilizzati nei pacchetti Debian. Il sistema quilt
è
quello preferito. Altri sistemi sono dpatch
, dbs
,
cdbs
, ecc. Molti di questi mantengono tali patch nei file
debian/patches/*
.
Se si sta chiedendo ad uno sponsor di caricare il proprio pacchetto, questo tipo di chiara separazione e documentazione dei cambiamenti è molto importante per per accelerare la revisione del pacchetto da parte dello sponsor.
È possibile evitare di applicare la patch con quilt
, nel formato
sorgente 3.0 (quilt), aggiungendo il parametro
--skip-patches al comando di estrazione. In alternativa, è
possibile eseguire "quilt pop -a" dopo le normali
operazioni.
L'attuale sistema di auto-costruzione è molto più complicato di come è qui documentato. Tali dettagli esulano dallo scopo del documento.
Diversamente dal pacchetto pbuilder
, l'ambiente
chroot
sotto il pacchetto sbuild
, usato dal sistema
di auto-costruzione, non forza la creazione di un sistema minimale, e potrebbe
lasciare installati molti pacchetti.
pbuilder
è ancora in evoluzione, si dovrebbe controllare
l'attuale configurazione consultando la documentazione ufficiale più recente.
Ciò presuppone il settaggio
HOOKDIR="/var/cache/pbuilder/hooks". È possibile
trovare numerosi esempi di script di hook, nella directory
/usr/share/doc/pbuilder/examples
.
Ci sono alcune restrizioni per tali aggiornamenti del pacchetto stable.
Ecco alcune risorse web, per gli utenti esperti.
"Building Debian Packages with git-buildpackage" at
/usr/share/doc/git-buildpackage/manual-html/gbp.html
Le variabili d'ambiente, che sono normalmente impostate con dei valori corretti, non sono utilizzati in questa modalità. Mai creare dei pacchetti, che poi andranno caricati, utilizzando il metodo veloce.
Non c'è bisogno di fornire l'opzione lintian
"-i -I
--show-overrides" se si è personalizzato il file
/etc/devscripts.conf
o il file ~/.devscripts
come
descritto in Il comando
debuild
, Sezione 6.4.
Il pacchetto dput
sembra avere più funzionalità e sta divenendo
più famoso del pacchetto dupload
. Questo utilizza il file
/etc/dput
per la configurazione globale ed il file
~/.dput.cf
per quella dei singoli utenti. Inoltre supporta
nativamente anche i servizi relativi ad Ubuntu.
Si veda ftp://ftp.upload.debian.org/pub/UploadQueue/README
.
Alternativamente, si può utilizzare il comando dcut
del pacchetto
dput
.
Per impostare la data nel formato corretto, si usi "LANG=C date -R".
Se un pacchetto foo
è stato pacchettizzato nel vecchio
formato 1.0, si deve invece eseguire "zcat
/path/to/foo_oldversion.diff.gz|patch
-p1" nella nuova directory sorgente scompattata.
Se il comando uscan
scarica il sorgente aggiornato ma non esegue
il comando uupdate
, si può modificare il file
debian/watch
inserendo "debian uupdate"
alla fine dell'URL.
Se il proprio sponsor o altri manutentori non ritengono sia necessario aggiornare lo stile del pacchetto, allora non vale la pena impegnarcisi. Ci sono cose più importanti da fare.
Nel pacchetto cdbs
(0.4.74), ci sono alcune note errate riguardo
al file rules
creato dal comando dh_make
per le
scelte che non utilizzano cdbs
. Non ce se ne deve preoccupare.
Queste ultime si riferivano solo alla distribuzione lenny che
creava esplicitamente delle regole come una lunga lista di comandi
dh_*
.
E' possibile dividere il file big.diff
in tanti piccole patch
incrementali utilizzando il comando splitdiff
.
Guida per il nuovo Maintainer
version 1.2.25, 2010-12-22 12:44:34 UTCjoy-mg@debian.org
kalos@nerdrug.org
jacopo.reggiani@gmail.com