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).