Linux repositories inspector
Progetto Debian
2015-07-05

dpkg-dev

Debian package development tools

dpkg

Debian package management system

NOME

dpkg-buildpackage - crea pacchetti binari o sorgente a partire dai sorgenti

SINTASSI

dpkg-buildpackage [opzione...]

DESCRIZIONE

dpkg-buildpackage è un programma che automatizza il processo di creazione di un pacchetto Debian. Effettua i seguenti passaggi:
1. Prepara l’ambiente di compilazione impostando diverse variabili d’ambiente (vedere ENVIRONMENT), esegue l’hook init e invoca dpkg-source --before-build (a meno che non sia stata usata -T o --target.
2. Controlla che le dipendenze di compilazione ed i conflitti di compilazione siano soddisfatti (a meno che non sia stata usata -d).
3. Se è stato selezionato un target specifico con l’opzione -T o --target, invoca quel target e si ferma a quel punto. Altrimenti esegue l’hook preclean e invoca fakeroot debian/rules clean per pulire l’albero di compilazione (a meno che non sia stata usata -nc).
4. Esegue l’hook source e invoca dpkg-source -b per generare il pacchetto sorgente (a meno che non sia stato richiesto di creare solo il pacchetto binario usando -b, -B o -A).
5. Esegue l’hook build e invoca debian/rules target-compilazione, poi esegue l’hook binary seguito da fakeroot debian/rules target-binario (a meno che non sia stato richiesto di creare solo il pacchetto sorgente usando -S). Notare che target-compilazione e target-binario sono build e binary (in modo predefinito o se viene specificata -b) o build-arch e binary-arch (se viene specificata -B o -G) oppure build-indep e binary-indep (se viene specificata -A o -g).
6. Esegue l’hook changes e invoca dpkg-genchanges per generare un file .changes. Molte opzioni di dpkg-buildpackage vengono inoltrate a dpkg-genchanges.
7. Esegue l’hook postclean e, se viene specificata l’opzione -tc, invoca nuovamente fakeroot debian/rules clean.
8. Invoca dpkg-source --after-build.
9. Esegue l’hook check e invoca uno strumento di controllo dei pacchetti per il file .changes (se è specificato un comando in DEB_CHECK_COMMAND o con --check-command).
10. Esegue l’hook sign e invoca gpg2 o gpg per firmare il file .dsc (se esiste, a meno che non sia stata specificata l’opzione -us o in compilazioni UNRELEASED) e il file .changes (a meno che non sia stata specificata l’opzione -us o in compilazioni UNRELEASED).
11. Esegue l’hook done.

OPZIONI

-g Specifies a build limited to source and architecture independent packages (since dpkg 1.17.11). Passed to dpkg-genchanges.
-G Specifies a build limited to source and architecture specific packages (since dpkg 1.17.11). Passed to dpkg-genchanges.
-b Specifica una compilazione solo binaria, nessun file sorgente deve essere creato o distribuito. Passata a dpkg-genchanges.
-B Specifica una compilazione solo binaria, limitata ai pacchetti che dipendono dall’architettura. Passata a dpkg-genchanges.
-A Specifica una compilazione solo binaria, limitata ai pacchetti indipendenti dall’architettura. Passata a dpkg-genchanges.
-S Specifies a source-only build, no binary packages need to be made. Passed to dpkg-genchanges. Note: if what you want is simply to (re-)build the source package, using dpkg-source is always better as it does not require any build dependencies to be installed to be able to call the clean target.
-F Specifies a normal full build, binary and source packages will be built (since dpkg 1.15.8). This is the same as the default case when no build option is specified.
--target=target
--target target -Ttarget Calls debian/rules target after having setup the build environment and stops the package build process here (since dpkg 1.15.0). If --as-root is also given, then the command is executed as root (see -r). Note that official targets that are required to be run as root by the Debian policy do not need this option.
--as-root
Only meaningful together with --target (since dpkg 1.15.0). Requires that the target be run with root rights.
-si -sa -sd -vversione -Cdescrizione-modifiche -mindirizzo-manutentore -eindirizzo-manutentore Passate inalterate a dpkg-genchanges. Vedere la sua pagina di manuale.
-a, --host-arch architettura
Specify the Debian architecture we build for (long option since dpkg 1.17.17). The architecture of the machine we build on is determined automatically, and is also the default for the host machine.
-t, --host-type tipo-sistema-gnu
Specify the GNU system type we build for (long option since dpkg 1.17.17). It can be used in place of --host-arch or as a complement to override the default GNU system type of the host Debian architecture.
--target-arch architettura
Specify the Debian architecture the binaries built will build for (since dpkg 1.17.17). The default value is the host machine.
--target-type tipo-sistema-gnu
Specify the GNU system type the binaries built will build for (since dpkg 1.17.17). It can be used in place of --target-arch or as a complement to override the default GNU system type of the target Debian architecture.
-Pprofilo[,...]
Specify the profile(s) we build, as a comma-separated list (since dpkg 1.17.2). The default behavior is to build for no specific profile. Also sets them (as a space separated list) as the DEB_BUILD_PROFILES environment variable which allows, for example, debian/rules files to use this information for conditional builds.
-j[compiti|auto]
Number of jobs allowed to be run simultaneously, number of jobs matching the number of online processors if auto is specified (since dpkg 1.17.10), or unlimited number if jobs is not specified, equivalent to the make(1) option of the same name (since dpkg 1.14.7). Will add itself to the MAKEFLAGS environment variable, which should cause all subsequent make invocations to inherit the option, thus forcing the parallel setting on the packaging (and possibly the upstream build system if that uses make) regardless of their support for parallel builds, which might cause build failures. Also adds parallel=jobs or parallel to the DEB_BUILD_OPTIONS environment variable which allows debian/rules files to use this information for their own purposes. The -j value will override the parallel=jobs or parallel option in the DEB_BUILD_OPTIONS environment variable. Note that the auto value will get replaced by the actual number of currently active processors, and as such will not get propagated to any child process. If the number of online processors cannot be inferred then the code will fallback to using an unlimited number.
-J[jobs|auto]
This option (since dpkg 1.18.2) is equivalent to the -j option except that it does not set the MAKEFLAGS environment variable, and as such it is safer to use with any package including those that are not parallel-build safe.
-D Controlla le dipendenze e i conflitti di compilazione; si interrompe se non sono soddisfatti. Questo è il comportamento predefinito.
-d Non controlla le dipendenze e i conflitti di compilazione.
--ignore-builtin-builddeps
Do not check built-in build dependencies and conflicts (since dpkg 1.18.2). These are the distribution specific implicit build dependencies usually required in a build environment, the so called Build-Essential package set.
-nc Do not clean the source tree. Implies -b if nothing else has been selected among -F, -g, -G, -B, -A or -S. Implies -d with -S (since dpkg 1.18.0).
-tc Pulisce l’albero dei sorgenti (usando comando-per-diventare-root debian/rules clean) dopo che il pacchetto è stato creato.
-rcomando-per-diventare-root
Quando dpkg-buildpackage deve eseguire parte del processo di creazione dei pacchetti come utente root, antepone al comando che esegue comando-per-diventare-root, se è stato specificato. Altrimenti, se non è stato specificato, viene in modo predefinito usato fakeroot, se tale comando è presente. comando-per-diventare-root dovrebbe iniziare con il nome di un programma in PATH e accetta come argomenti il nome del vero comando da eseguire e gli argomenti per esso. comando-per-diventare-root può includere parametri (che devono essere separati da spazi) ma non metacaratteri della shell. comando-per-diventare-root tipicamente può essere fakeroot, sudo, super o really. su non è adatto perché può solo invocare la shell utente con -c invece di passare singoli argomenti al comando da eseguire.
-Rfile-rules
Building a Debian package usually involves invoking debian/rules as a command with several standard parameters (since dpkg 1.14.17). With this option it’s possible to use another program invocation to build the package (it can include space separated parameters). Alternatively it can be used to execute the standard rules file with another make program (for example by using /usr/local/bin/make -f debian/rules as rules-file).
--check-command=comando-di-controllo
Command used to check the .changes file itself and any artifact built referenced in the file (since dpkg 1.17.6). The command should take the .changes pathname as an argument. This command will usually be lintian.
--check-option=opz
Pass option opt to the check-command specified with DEB_CHECK_COMMAND or --check-command (since dpkg 1.17.6). Can be used multiple times.
--hook-nome-hook=comando-hook
Set the specified shell code hook-command as the hook hook-name, which will run at the times specified in the run steps (since dpkg 1.17.6). The hooks will always be executed even if the following action is not performed (except for the binary hook).
Nota: gli hook possono influenzare il processo di compilazione e causare fallimenti se falliscono i loro comandi, perciò stare attenti alle conseguenze indesiderate.
I nomi-hook attualmente supportati sono:
init preclean source build binary changes postclean check sign done
Il comando-hook supporta le seguenti stringhe di sostituzione che verranno applicate ad esso prima dell’esecuzione:
%% Un singolo carattere %.
%a Un valore booleano (0 o 1) che indica se l’azione successiva viene eseguita.
%p Il nome del pacchetto sorgente.
%v La versione del pacchetto sorgente.
%s La versione del pacchetto sorgente (senza l’epoca).
%u La versione originale a monte.
-pcomando-per-firmare
Quando dpkg-buildpackage deve eseguire GPG per firmare un file di controllo dei sorgenti (.dsc) o un file .changes, esegue comando-per-firmare (cercandolo in PATH se necessario) invece di gpg2 o gpg. comando-per-firmare riceve gli argomenti che avrebbe ricevuto gpg2 o gpg. comando-per-firmare non deve contenere spazi o altri metacaratteri della shell.
-kID-chiave
Specifica l’ID della chiave da usare per firmare i pacchetti.
-us Non firma il pacchetto sorgente.
-uc Non firma il file .changes.
--force-sign
Forza la firma dei file risultanti (a partire da dpkg 1.17.0), indipendentemente da -us o -uc o altre euristiche interne.
-i[regex]
-I[modello] -s[nsAkurKUR] -z, -Z Passate inalterate a dpkg-source. Vedere la sua pagina di manuale.
--source-option=opz
Pass option opt to dpkg-source (since dpkg 1.15.6). Can be used multiple times.
--changes-option=opz
Pass option opt to dpkg-genchanges (since dpkg 1.15.6). Can be used multiple times.
--admindir=dir
--admindir dir Change the location of the dpkg database (since dpkg 1.14.0). The default location is /var/lib/dpkg.
-?, --help
Mostra il messaggio sull’uso ed esce.
--version
Mostra la versione ed esce.

AMBIENTE

DEB_CHECK_COMMAND
If set, it will be used as the command to check the .changes file (since dpkg 1.17.6). Overridden by the --check-command option.
DEB_SIGN_KEYID
If set, it will be used to sign the .changes and .dsc files (since dpkg 1.17.2). Overridden by the -k option.
DEB_BUILD_OPTIONS
Se impostata e contiene nocheck la variabile DEB_CHECK_COMMAND sarà ignorata.
DEB_BUILD_PROFILES
If set, it will be used as the active build profile(s) for the package being built (since dpkg 1.17.2). It is a space separated list of profile names. Overridden by the -P option.

Dipendenza dalle variabili di ambiente esportate

Anche se dpkg-buildpackage esporta alcune variabili, debian/rules non dovrebbe fare affidamento sulla loro presenza e dovrebbe invece usare l’interfaccia apposita per recuperare i valori necessari.

Variabili impostate da dpkg-architecture

dpkg-architecture viene invocata inoltrando i parametri -a e -t. Qualsiasi variabile che è prodotta in output dalla sua opzione -s viene integrata nell’ambiente di compilazione.

NOTE

I flag di compilazione non sono più esportati

Nelle versioni comprese tra la 1.14.17 e la 1.16.1, dpkg-buildpackage esportava i flag di compilazione (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS e LDFLAGS) con i valori restituiti da dpkg-buildflags. Ora non è più così.

Target di compilazione predefiniti

A partire da dpkg 1.16.2, dpkg-buildpackage usa i target build-arch e build-indep. Questi target sono perciò obbligatori. Per evitare di rendere difettosi i pacchetti esistenti, e per facilitare la transizione, ripiegherà però sull’uso del target build se make -f debian/rules -qn target-compilazione restituisce 2 come codice di uscita.

BUG

Dovrebbe essere possibile usare spazi e metacaratteri della shell e specificare argomenti iniziali quando si usa comando-per-diventare-root e comando-per-firmare.
⇧ Top