Scroll to navigation

dpkg-architecture(1) utilità dpkg dpkg-architecture(1)

NOME

dpkg-architecture - imposta e determina l'architettura per la compilazione dei pacchetti

SINTASSI

dpkg-architecture [opzione...] [comando]

DESCRIZIONE

dpkg-architecture fornisce una funzionalità per determinare e impostare l'architettura host e di compilazione per la compilazione dei pacchetti.
L'architettura di compilazione è sempre determinata da una chiamata esterna a dpkg(1) e non può essere impostata dalla riga di comando.
È possibile specificare l'architettura ospite fornendo una o entrambe le opzioni --host-arch e --host-type. Quella predefinita viene determinata da una chiamata esterna a gcc(1) oppure, se entrambi CC e gcc non sono disponibili, è la stessa dell'architettura di compilazione. È sufficiente una di --host-arch e --host-type, il valore dell'altra viene impostato da un valore predefinito utilizzabile. In effetti è spesso meglio specificarne una sola, dato che dpkg-architecture dà un avvertimento se la scelta non corrisponde al valore predefinito.

COMANDI

-l, --list
Stampa le variabili d'ambiente, una per riga, nel formato VARIABILE=valore. Questa è l'azione predefinita.
-e, --equal architettura
Controlla l'uguaglianza dell'architettura (a partire da dpkg 1.13.13). Confronta l'architettura Debian ospite attuale o specificata con architettura, per verificare se sono uguali. Questa azione non espande l'espressione jolly per l'architettura. Il comando termina con uno stato di uscita di 0 se corrispondono e 1 altrimenti.
-i, --is espressionejolly-architettura
Controlla l'identità dell'architettura (a partire da dpkg 1.13.13). Confronta l'architettura Debian ospite attuale o specificata con espressionejolly-architettura dopo aver fatto l'espansione dell'espressione jolly per l'architettura, per verificare se corrispondono. Il comando termina con uno stato di uscita di 0 se corrispondono e 1 altrimenti.
-q, --query nome-variabile
Stampa il valore di una singola variabile.
-s, --print-set
Stampa un comando di esportazione. Può essere usata per impostare le variabili d'ambiente usando eval.
-u, --print-unset
Stampa un comando simile a --print-unset ma per deimpostare tutte le variabili.
-c, --command comando
Esegue un comando in un ambiente che ha tutte le variabili impostate al valore determinato.
-L, --list-known
Stampa un elenco di nomi di architettura validi. Eventualmente ristretto da una o più delle opzioni di corrispondenza --match-wildcard, --match-bits o --match-endian (a partire da dpkg 1.17.14).
-?, --help
Mostra il messaggio sull'uso ed esce.
--version
Mostra la versione ed esce.

OPZIONI

-a, --host-arch architettura
Imposta l'architettura host Debian.
-t, --host-type tipo-sistema-gnu
Imposta il tipo di sistema GNU ospite.
-A, --target-arch architettura
Imposta l'architettura Debian di destinazione. Ciò è necessario solamente quando si compila una cross-toolchain, una che sarà compilata sull'architettura di compilazione, da eseguire sull'architettura ospite per compilare codice per l'architettura di destinazione.
-T, --target-type tipo-sistema-gnu
Imposta il tipo di sistema GNU di destinazione.
-W, --match-wildcard espressionejolly-architettura
Limita le architetture elencate da --list-known a quelle che corrispondono alla espressione jolly specificata per l'architettura (a partire da dpkg 1.17.14).
-B, --match-bits bit-architettura
Limita le architetture elencate da --list-known a quelle con i bit CPU specificati (a partire da dpkg 1.17.14). O 32 o 64.
-E, --match-endian endian-architettura
Limita le architetture elencate da --list-known a quelle con la modalità endian specificata (a partire da dpkg 1.17.14). O little o big.
-f, --force
I valori impostati da variabili d'ambiente esistenti con nomi uguali a quelli usati dagli script vengono rispettati (cioè usati da dpkg-architecture), tranne se viene usata questa opzione. Ciò permette all'utente di sovrascrivere un valore anche quando la chiamata a dpkg-architecture è nascosta in qualche altro script (per esempio dpkg-buildpackage(1)).

TERMINOLOGIA

macchina di compilazione
La macchina usata per creare il pacchetto.
macchina ospite
La macchina per cui è compilato il pacchetto.
macchina di destinazione
La macchina per cui compila il compilatore.
architettura Debian
La stringa dell'architettura Debian che specifica l'albero binario nell'archivio FTP. Esempi: i386, sparc, hurd-i386.
espressione jolly per l'architettura
Un'espressione jolly per l'architettura è una speciale stringa dell'architettura che corrisponde a qualsiasi effettiva architettura che ne fa parte. La forma generica è <kernel>-<cpu>. Esempi: linux-any, any-i386, hurd-any.
tipo di sistema GNU
Una stringa che specifica l'architettura composta di due parti separate da un trattino: cpu e sistema. Esempi: i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.

VARIABILI

dpkg-architecture imposta le seguenti variabili:
DEB_BUILD_ARCH
L'architettura Debian della macchina di compilazione.
DEB_BUILD_ARCH_OS
Il nome di sistema Debian della macchina di compilazione (a partire da dpkg 1.13.2).
DEB_BUILD_ARCH_CPU
Il nome Debian per la CPU della macchina di compilazione (a partire da dpkg 1.13.2).
DEB_BUILD_ARCH_BITS
La dimensione del puntatore della macchina di compilazione (in bit; a partire da dpkg 1.15.4).
DEB_BUILD_ARCH_ENDIAN
La modalità endian della macchina di compilazione (little o big; a partire da dpkg 1.15.4).
DEB_BUILD_GNU_CPU
La parte CPU di DEB_BUILD_GNU_TYPE.
DEB_BUILD_GNU_SYSTEM
La parte sistema di DEB_BUILD_GNU_TYPE.
DEB_BUILD_GNU_TYPE
Il tipo di sistema GNU della macchina di compilazione.
DEB_BUILD_MULTIARCH
Il tipo di sistema GNU chiarito della macchina di compilazione usato per i percorsi del file system (a partire da dpkg 1.16.0).
DEB_HOST_ARCH
L'architettura Debian della macchina ospite.
DEB_HOST_ARCH_OS
Il nome di sistema Debian della macchina ospite (a partire da dpkg 1.13.2).
DEB_HOST_ARCH_CPU
Il nome Debian per la CPU della macchina host (a partire da dpkg 1.13.2).
DEB_HOST_ARCH_BITS
La dimensione del puntatore della macchina ospite (in bit; a partire da dpkg 1.15.4).
DEB_HOST_ARCH_ENDIAN
La modalità endian della macchina ospite (little o big; a partire da dpkg 1.15.4).
DEB_HOST_GNU_CPU
La parte CPU di DEB_HOST_GNU_TYPE.
DEB_HOST_GNU_SYSTEM
La parte sistema di DEB_HOST_GNU_TYPE.
DEB_HOST_GNU_TYPE
Il tipo di sistema GNU della macchina ospite.
DEB_HOST_MULTIARCH
Il tipo di sistema GNU chiarito della macchina ospite usato per i percorsi del file system (a partire da dpkg 1.16.0).
DEB_TARGET_ARCH
L'architettura Debian della macchina di destinazione (a partire da dpkg 1.17.14).
DEB_TARGET_ARCH_OS
Il nome di sistema Debian della macchina di destinazione (a partire da dpkg 1.17.14).
DEB_TARGET_ARCH_CPU
Il nome Debian per la CPU della macchina di destinazione (a partire da dpkg 1.17.14).
DEB_TARGET_ARCH_BITS
La dimensione del puntatore della macchina di destinazione (in bit; a partire da dpkg 1.17.14).
DEB_TARGET_ARCH_ENDIAN
La modalità endian della macchina di destinazione (little o big; a partire da dpkg 1.17.14).
DEB_TARGET_GNU_CPU
La parte CPU di DEB_TARGET_GNU_TYPE (a partie da dpkg 1.17.14).
DEB_TARGET_GNU_SYSTEM
La parte sistema di DEB_TARGET_GNU_TYPE (a partire da dpkg 1.17.14).
DEB_TARGET_GNU_TYPE
Il tipo di sistema GNU della macchina di destinazione (a partire da dpkg 1.17.14).
DEB_TARGET_MULTIARCH
Il tipo di sistema GNU chiarito della macchina di destinazione usato per i percorsi del file system (a partire da dpkg 1.17.14).

FILE

Tabelle delle architetture

Tutti questi file devono essere presenti affinché dpkg-architecture possa funzionare. La loro posizione può essere sovrascritta al momento dell'esecuzione con la variabile d'ambiente DPKG_DATADIR.
/usr/share/dpkg/cputable
Tabella dei nomi di CPU conosciuti a mappatura al loro nome GNU.
/usr/share/dpkg/ostable
Tabella dei nomi di sistema operativo conosciuti e mappatura al loro nome GNU.
/usr/share/dpkg/triplettable
Mappatura delle triplette per architettura Debian e nomi di architettura Debian.

Supporto per pacchettizzazione

/usr/share/dpkg/architecture.mk
Frammento di makefile che imposta ed esporta in modo corretto tutte le variabili prodotte in output da dpkg-architecture (a partire da dpkg 1.16.1).

ESEMPI

dpkg-buildpackage accetta l'opzione -a e la passa a dpkg-architecture. Altri esempi:
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval `dpkg-architecture -u`
Controlla se l'architettura ospite corrente o specificata è uguale ad un'architettura:
dpkg-architecture -elinux-alpha
dpkg-architecture -amips -elinux-mips
Controlla se l'architettura ospite corrente o specificata è un sistema Linux:
dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any

Uso in debian/rules

Le variabili d'ambiente impostate da dpkg-architecture vengono passate a debian/rules come variabili make (vedere la documentazione di make). Tuttavia non si deve fare affidamento su di esse, dato che ciò rende non funzionanti le invocazioni manuali dello script. Le si dovrebbe invece inizializzare sempre usando dpkg-architecture con l'opzione -q. Ecco alcuni esempi, che mostrano anche come migliorare il supporto per la cross-compilazione nei propri pacchetti:
Recuperare il tipo di sistema GNU e passarlo a ./configure:
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
[...]
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  confflags += --build=$(DEB_HOST_GNU_TYPE)
else
  confflags += --build=$(DEB_BUILD_GNU_TYPE) \
               --host=$(DEB_HOST_GNU_TYPE)
endif
[...]
./configure $(confflags)
Fare qualcosa solo per un'architettura specifica:
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(DEB_HOST_ARCH),alpha) [...] endif
oppure se è necessario solo controllare il tipo di CPU o sistema operativo, usare le variabili DEB_HOST_ARCH_CPU o DEB_HOST_ARCH_OS.
Notare che ci si può anche appoggiare su un frammento di Makefile esterno per impostare correttamente tutte le variabili che possono essere fornite da dpkg-architecture.
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha) [...] endif
In ogni caso non si dovrebbe mai usare dpkg --print-architecture per ottenere informazioni sull'architettura durante la compilazione di un pacchetto.

NOTE

Tutti i nomi lunghi di comandi e opzioni disponibili solo a partire da dpkg 1.17.17.

VEDERE ANCHE

dpkg-buildpackage(1), dpkg-cross(1).
28 marzo 2013 Progetto Debian