Scroll to navigation

dpkg-buildpackage(1) utilità dpkg dpkg-buildpackage(1)

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
Specifica una compilazione limitata ai pacchetti sorgente e indipendenti dall'architettura. Passata a dpkg-genchanges.
-G
Specifica una compilazione limitata ai pacchetti sorgente e che dipendono dall'architettura. Passata a 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
Specifica la creazione dei soli pacchetti sorgente, nessun pacchetto binario deve essere creato. Passata a dpkg-genchanges.
-F
Specifica una normale compilazione completa; verranno creati i pacchetti binari e sorgente. Questo è ciò che avviene in modo predefinito quando non viene specificata alcuna opzione riguardo la compilazione.
--target=target
--target target -Ttarget Invoca debian/rules target dopo aver impostato l'ambiente di compilazione e interrompe lì il processo di compilazione del pacchetto. Se viene usata anche l'opzione --as-root, allora il comando viene eseguito come utente root (vedere -r). Notare che questa opzione non è necessaria per i target ufficiali che devono essere eseguiti come root, secondo quanto stabilito nella Debian Policy.
--as-root
Ha significato solo insieme a --target. È necessario che il target venga eseguito con i permessi di root.
-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
Specifica l'architettura Debian per cui compilare. L'architettura della macchina in cui viene fatta la compilazione viene determinata automaticamente ed è anche il valore predefinito per la macchina ospite.
-t, --host-type tipo-sistema-gnu
Specifica il tipo di sistema GNU per cui compilare. Può essere usata al posto di --host-arch o in aggiunta per scavalcare l'impostazione predefinita del tipo di sistema GNU dell'architettura Debian ospite.
--target-arch architettura
Specifica l'architettura Debian per cui verranno compilati i binari. Il valore predefinito è la macchina ospite.
--target-type tipo-sistema-gnu
Specifica il tipo di sistema GNU per cui verranno compilati i binari. Può essere usata al posto di --target-arch o in aggiunta per scavalcare l'impostazione predefinita del tipo di sistema GNU dell'architettura Debian di destinazione.
-Pprofilo[,...]
Specifica i profili da compilare, come elenco separato da virgole. Il comportamento predefinito è di non compilare per uno specifico profilo. Inoltre li imposta (come elenco separato da spazi) come variabile d'ambiente DEB_BUILD_PROFILES che permette, ad esempio, ai file debian/rules di usare questa informazione per compilazioni condizionali.
-j[compiti|auto]
Numero di compiti che è permesso eseguire contemporaneamente, numero di compiti che corrispondono al numero di processori in linea se è specificata auto o numero illimitato se non è specificata compiti; equivalente all'opzione omonima per make(1). Verrà aggiunta alla variabile d'ambiente MAKEFLAGS, il che dovrebbe far sì che tutte le invocazioni successive di make ereditino l'opzione. Aggiunge anche parallel=compiti alla variabile d'ambiente DEB_BUILD_OPTIONS che permette ai file debian/rules di usare questa informazione per i loro scopi. Se viene usata questa opzione, l'impostazione parallel=compiti in DEB_BUILD_OPTIONS avrà la precedenza rispetto al valore -j. Notare che il valore auto verrà sostituito dall'effettivo numero di processori attualmente attivi e pertanto non verrà propagato ad alcun processo figlio. Se il numero di processori in linea non può essere inferito, allora il codice ripiegherà sull'uso di un numero illimitato.
-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.
-nc
Non pulisce l'albero dei sorgenti (implica -b se non è stata selezionata un'altra opzione tra -F, -g, -G, -B, -A o -S).
-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
La creazione di un pacchetto Debian comporta solitamente l'invocazione di debian/rules come comando con svariati parametri standard. Con questa opzione è possibile usare un'altra invocazione del programma per creare il pacchetto (può includere parametri separati da spazi). In alternativa, può essere usato per eseguire il file rules standard con un altro programma make (per esempio usando /usr/local/bin/make -f debian/rules come file-rules).
--check-command=comando-di-controllo
Comando usato per controllare il file .changes stesso e qualsiasi altro oggetto compilato a cui il file fa riferimento. Il comando deve avere il nome di percorso di .changes come argomento. Questo comando generalmente sarà lintian.
--check-option=opz
Passa l'opzione opt al comando-di-controllo specificato con DEB_CHECK_COMMAND o --check-command. Può essere usata più volte.
--hook-nome-hook=comando-hook
Imposta il codice di shell comando-hook specificato come hook nome-hook che verrà eseguito nei momenti specificati nei passi di esecuzione. Gli hook verranno sempre eseguiti anche se l'azione seguente non è effettuata (tranne per l'hook binary).
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
Passa l'opzione opz a dpkg-source. Può essere usata più volte.
--changes-option=opz
Passa l'opzione opz a dpkg-genchanges. Può essere usata più volte.
--admindir=dir
--admindir dir Cambia la posizione del database di dpkg. La posizione predefinita è /var/lib/dpkg.
-?, --help
Mostra il messaggio sull'uso ed esce.
--version
Mostra la versione ed esce.

AMBIENTE

DEB_CHECK_COMMAND
Se impostata, verrà usata come comando con cui controllare il file .changes. Scavalcata dall'opzione --check-command.
DEB_SIGN_KEYID
Se impostata, verrà usata per firmare i file .changes e .dsc. Scavalcata dall'opzione -k.
DEB_BUILD_OPTIONS
Se impostata e contiene nocheck la variabile DEB_CHECK_COMMAND sarà ignorata.
DEB_BUILD_PROFILES
Se impostata, il suo valore verrà usato come profili attivi da compilare per il pacchetto in fase di compilazione. È un elenco separato da spazi di nomi di profilo. Viene scavalcata dall'opzione -P.

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.

VEDERE ANCHE

dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genchanges(1), fakeroot(1), lintian(1), gpg2(1), gpg(1).
12 dicembre 2013 Progetto Debian