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
.
There are few similar but specialized packages such as
dh-make-perl
, dh-make-php
, etc.
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.
See Autotools
Tutorial
and
/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.
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" (Single binary), "i" per
"Indipendente dall'architettura" (Arch-Independent),
"m" per "Binario multiplo" (Multiple binary),
"l" per "Libreria" (Library),
"k" per "Modulo del kernel" (Kernel module),
"b" per "cdbs
",
"--kpatch" per "Patch del kernel". Questo
documento si concentra sull'uso del pacchetto debhelper
con il
comando dh
. Verrà trattato l'utilizzo del nuovo programma
dh
per i "Binari singoli" e tratta brevemente gli
"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 :-)
This somewhat strange situation is a feature well documented in the Debian Policy
Manual, Footnotes 43
. This is not due to the use of the
dh
command in the debian/rules
file but due to how
the dpkg-buildpackage
works. The same situation applies to the
auto
build system for 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".
This uses the new debhelper
V7 features. Its design concepts are
explained in Not Your
Grandpa's Debhelper
presented at Debconf9 by the
debhelper
upstream. Under lenny,
dh_make
created a much more complicated rules
file
with many dh_*
scripts listed for each required explicit targets
and frozen them to the state when it was initially packaged. This new
dh
command is simpler and frees us from this constrain. You still
have full power to customize this with override_dh_* targets. See
Personalizzazione del file rules
, Sezione
4.4.3. It is based only on the debhelper
package and does not
obfuscate the package building process like the cdbs
package.
You can verify actual sequences of dh_*
programs invoked for a
given target as "dh --no-act
target" or "debian/rules -- '--no-act
target'" without really running them.
This assumes that the python-support
package is installed on the
system.
For complete information on what do all these dh_*
scripts exactly
do, and what their other options are, please read their respective manual pages
and the debhelper
documentation.
These commands support other build environments such as setup.py
which can be listed by executiong "dh_auto_build --list"
in a package source directory.
It actually looks for the first available target of distclean,
realclean or clean in Makefile
and
execute it.
It actually looks for the first available target of test or
check in Makefile
and execute it.
If a package installs the
/usr/share/perl5/Debian/Debhelper/Sequence/custom_name.pm
file, you should activate its customization function by "dh --with
custom-name $@".
Use of the dh_pysupport
command is preferred over use of the
dh_pycentral
command. Do not use the dh_python
command.
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
.
The debian/changelog
and debian/NEWS
files are always
automatically installed. The upstream chengelog is searched by converting
filenames to the lower case and matching them with the changelog
,
changes
, changelog.txt
, and changes.txt
.
Questo comando rimpiazza il comando dh_movefiles(1)
, ormai
deprecato, che veniva configurato dal file files
.
If the command is missing info
page but have documentation files
in the /usr/share/package
directory, you should
manually edit generated the man page created by the help2man
command.
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.
Several methods for the patch set maintenance have been proposed and are in use
with Debian packages. The quilt
system is the preferred
maintenance system in use. Other ones are dpatch
,
dbs
, cdbs
, etc. Many of these keep such patches as
debian/patches/*
files.
If you are asking a sponsor to upload your package, this kind of clear separation and documentation of your changes are very important to expedite the package review by your 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.
This assumes HOOKDIR="/var/cache/pbuilder/hooks". You
can find many examples of the hook script in the
/usr/share/doc/pbuilder/examples
directory.
There are some restrictions for such updates of your stable package.
Here are few web resources available for advanced audiences.
"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.
If the uscan
command downloads the updated source but it does not
run the uupdate
command, you should correct the
debian/watch
file to have "debian uupdate"
at the end of the 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_*
.
You may split big.diff
into many small incremental patches using
the splitdiff
command.
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