dpkg-architecture - define e determina a arquitectura para
compilação de pacotes
dpkg-architecture [option...] [command]
dpkg-architecture disponibiliza uma habilidade para
determinar e definir a arquitectura de compilação e da
máquina para compilação de pacotes.
A arquitectura de compilação é sempre
determinada seja ou pela variável DEB_BUILD_ARCH se definida
(e se --force não for especificada) ou por uma chamada externa
ao dpkg(1), e não pode ser definida na linha de comandos.
Você pode especificar a arquitectura da máquina ao
fornecer uma ou ambas as opções --host-arch e
--host-type, caso contrário é usada a variável
DEB_HOST_ARCH se definida (e não sendo especificado
--force). A predefinição é determinada por uma
chamada externa ao gcc(1), ou o mesmo como a arquitectura de
compilação se CC ou gcc estiverem ambos não
disponíveis. Um de --host-arch e --host-type é
suficiente, o valor do outro será definido para uma
predefinição utilizável. De facto, é muitas
vezes melhor apenas especificar um, porque dpkg-architecture vai
avisa-lo se a sua escolha não corresponder ao predefinido.
- -l, --list
- Escreve as variáveis de ambiente, uma em cada linha, no formato
VARIÁVEL=valor. Esta é a acção
predefinida.
- -e, --equal
architecture
- Verifica a igualdade da arquitectura (desde dpkg 1.13.13). Compara a
actual ou a arquitectura de maquina Debian especificada com
architecture, para verificar se são iguais. Esta
acção não irá expandir as wildcards de
arquitectura. O comando termina com um estado de saída 0 de
corresponderem, 1 se não corresponderem.
- -i, --is
architecture-wildcard
- Verifica a identidade da arquitectura (desde dpkg 1.13.13). Compara a
actual ou a arquitectura de máquina Debian especificada com
architecture-wildcard após a ter expandido como uma wildcard
de arquitectura, para verificar se correspondem. O comando termina com
estado de saída 0 se corresponderem, 1 se não
corresponderem.
- -q, --query
variable-name
- Escreve o valor de uma variável única.
- -s,
--print-set
- Escreve um comando de exportação. Isto pode ser usado para
definir as variáveis de ambiente usando a shell POSIX ou make
eval, dependendo do formato dos resultados.
- -u,
--print-unset
- Escreve um comando semelhante ao --print-set mas para limpar o
valor de todas as variáveis.
- -c, --command
command-string
- Executa uma command-string num ambiente que tem todas as
variáveis definidas para o determinado valor.
Se a string-de-comando conter meta-caracteres de shell,
então será invocada através da shell limite do
sistema.
- -L,
--list-known
- Escreve uma lista de nomes de arquitecturas válidos. Possivelmente
restringidos por uma ou mais das opções de
correspondência --match-wildcard, --match-bits ou
--match-endian (desde dpkg 1.17.14).
- -?, --help
- Mostra a mensagem de utilização e termina.
- --version
- Mostra a versão e termina.
- -a, --host-arch
architecture
- Define a arquitectura da máquina Debian
- -t, --host-type
gnu-system-type
- Define o tipo de sistema GNU da máquina.
- -A, --target-arch
architecture
- Define a arquitectura Debian de destino (desde dpkg 1.17.14).
- -T, --target-type
gnu-system-type
- Define o tipo de sistema GNU do destino (desde dpkg 1.17.14).
- -W, --match-wildcard
architecture-wildcard
- Restringe as arquitectura listadas por --list-known a aquelas que
correspondem à wildcard de arquitectura especificada (desde dpkg
1.17.14).
- -B, --match-bits
architecture-bits
- Restringe as arquitectura listadas por --list-known a aquelas com
os bits de CPU especificados (desde dpkg 1.17.14). Seja 32 ou
64.
- -E, --match-endian
architecture-endianness
- Restringe as arquitectura listadas por --list-known a aquelas com a
categoria endian especificada (desde dpkg 1.17.14). Seja little ou
big.
- --print-format
format
- Define o formato de resultados para --print-set e
--print-unset (desde dpkg 1.20.6), para ou shell
(predefinição) ou make.
- -f, --force
- Os valores definidos pelas variáveis de ambiente existentes com os
mesmos nomes usados como usados pelos scripts são respeitados (isto
é, usados por dpkg-architecture), excepto se esta bandeira
de forçar estiver presente. Isto permite ao utilizador sobrepor um
valor mesmo quando a chamada a dpkg-architecture está
enterrada em algum outro script (por exemplo
dpkg-buildpackage(1)).
- máquina de
compilação
- A máquina onde o pacote é compilado.
- máquina
anfitriã
- A máquina para onde o pacote é compilado.
- máquina destino
(alvo)
- A maquina para a qual o compilador foi construído, ou o que
emulador que irá correr código para. Isto é apenas
necessário quando se compila ferramenta-corrente-cruzada (ou
emulador), uma que será compilada sobre a arquitectura de
compilação, para ser corrida na arquitectura
anfitriã, e para compilar código (ou correr emulado) para a
arquitectura alvo.
- Arquitectura
Debian
- A string de arquitectura Debian, a qual especifica a árvore
binária no arquivo FTP. Exemplos: i386, sparc, hurd-i386.
- Tuple de arquitectura
Debian
- Um tuple de arquitectura Debian é a arquitectura totalmente
qualificada com todos os seus componentes soletrados. Isto difere das
arquitecturas Debian em que pelo menos o componente cpu não
trás embutido o abi. O tuple actual tem o formato
abi-libc-os-cpu. Exemplos:
base-gnu-linux-amd64, eabihf-musl-linux-arm.
- Wildcard de
arquitectura Debian
- Um wildcard de arquitectura Debian é uma string especial de
arquitectura que irá corresponder a qualquer arquitectura real que
faça parte dela. O formato geral é um tuple de arquitectura
Debian com quatro ou menos elementos, e com pelo menos um deles a ser
any. Elementos em falta no tuple são prefixados
implicitamente como any, e assim os seguintes pares são
equivalentes:
Exemplos: linux-any, any-i386, hurd-any, eabi-any-any-arm,
musl-any-any.
- Tipo de sistema GNU
- Uma string de especificação de arquitectura consiste de duas
partes separadas por um hífen: cpu e sistema. Exemplos:
i586-linux-gnu, sparc-linux-gnu, i686-gnu, x86_64-netbsd.
- multiarch
triplet
- O tipo de sistema GNU clarificado, usado para caminhos do sistema de
ficheiros. Este triplet não altera mesmo quando a linha base ISA
entra em colisão, para que os caminhos resultantes fiquem
estáveis com o tempo. A única diferença actual com o
tipo de sistema GNU é que a parte de CPU para os sistemas baseados
em i386 é sempre i386. Exemplos: i386-linux-gnu, x86_64-linux-gnu.
Exemplos de caminhos: /lib/powerpc64le-linux-gnu/,
/usr/lib/i386-kfreebsd-gnu/.
As seguintes variáveis são lidas a partir do
ambiente (a menos que --force seja especificado) e definidas por
dpkg-architecture (veja a secção TERMS para uma
descrição do esquema de nomeação):
- DEB_BUILD_ARCH
- A arquitectura Debian da máquina de compilação.
- DEB_BUILD_ARCH_ABI
- O nome ABI Debian da máquina de compilação (desde
dpkg 1.18.11).
- DEB_BUILD_ARCH_LIBC
- O nome libc Debian da máquina de compilação (desde
dpkg 1.18.11).
- DEB_BUILD_ARCH_OS
- O nome de sistema Debian da máquina de compilação
(desde dpkg 1.13.2).
- DEB_BUILD_ARCH_CPU
- O nome de CPU de Debian da máquina de compilação
(desde dpkg 1.13.2).
- DEB_BUILD_ARCH_BITS
- O tamanho do ponteiro da máquina de compilação (em
bits, desde dpkg 1.15.4).
- DEB_BUILD_ARCH_ENDIAN
- A classe endian da máquina de compilação (ittle /
big; desde dpkg 1.15.4).
- DEB_BUILD_GNU_CPU
- A parte CPU GNU de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- A parte de system GNU de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_TYPE
- O tipo de sistema GNU da máquina de compilação.
- DEB_BUILD_MULTIARCH
- O tipo de sistema GNU clarificado da máquina de
compilação, usado para caminhos do sistema de ficheiros
(desde dpkg 1.16.0).
- DEB_HOST_ARCH
- A arquitectura Debian da máquina anfitriã.
- DEB_HOST_ARCH_ABI
- O nome ABI Debian da máquina anfitriã (desde dpkg
1.18.11).
- DEB_HOST_ARCH_LIBC
- O nome libc Debian da máquina anfitriã (desde dpkg
1.18.11).
- DEB_HOST_ARCH_OS
- O nome de sistema Debian da máquina anfitriã (desde dpkg
1.13.2).
- DEB_HOST_ARCH_CPU
- O nome de CPU de Debian da máquina anfitriã (desde dpkg
1.13.2).
- DEB_HOST_ARCH_BITS
- O tamanho do ponteiro da máquina anfitriã (em bits, desde
dpkg 1.15.4).
- DEB_HOST_ARCH_ENDIAN
- A classe endian da máquina anfitriã (ittle / big; desde dpkg
1.15.4).
- DEB_HOST_GNU_CPU
- A parte CPU GNU de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- A parte de system GNU de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_TYPE
- O tipo de sistema GNU da máquina anfitriã.
- DEB_HOST_MULTIARCH
- O tipo de sistema GNU clarificado da máquina anfitriã, usado
para caminhos do sistema de ficheiros (desde dpkg 1.16.0).
- DEB_TARGET_ARCH
- A arquitectura Debian da máquina de destino (desde dpkg
1.17.14).
- DEB_TARGET_ARCH_ABI
- O nome ABI Debian da máquina alvo (desde dpkg 1.18.11).
- DEB_TARGET_ARCH_LIBC
- O nome libc Debian da máquina alvo (desde dpkg 1.18.11).
- DEB_TARGET_ARCH_OS
- O nome de sistema Debian da máquina de destino (desde dpkg
1.17.14).
- DEB_TARGET_ARCH_CPU
- O nome de CPU de Debian da máquina de destino (desde dpkg
1.17.14).
- DEB_TARGET_ARCH_BITS
- O tamanho do ponteiro da máquina de destino (em bits, desde dpkg
1.17.14).
- DEB_TARGET_ARCH_ENDIAN
- A classe endian da máquina de destino (ittle / big; desde dpkg
1.17.14).
- DEB_TARGET_GNU_CPU
- A parte CPU GNU de DEB_TARGET_GNU_TYPE (desde dpkg 1.17.14).
- DEB_TARGET_GNU_SYSTEM
- A parte de system GNU de DEB_TARGET_GNU_TYPE (desde dpkg
1.17.14).
- DEB_TARGET_GNU_TYPE
- O tipo de sistema GNU da máquina de destino (desde dpkg
1.17.14).
- DEB_TARGET_MULTIARCH
- O tipo de sistema GNU clarificado da máquina de destino, usado para
caminhos do sistema de ficheiros (desde dpkg 1.17.14).
Todos estes ficheiros têm de estar presentes para o
dpkg-architecture funcionar. A sua localização pode ser
sobreposta durante o funcionamento com a variável de ambiente
DPKG_DATADIR. Estas tabelas contêm um pseudo-campo
Version de formato na sua primeira linha para marcar o seu formato,
para que os analisadores possam verificar se o compreendem, tal como "#
Version=1.0".
- /usr/share/dpkg/cputable
- Tabela de nomes de CPU conhecidas e o mapear delas para o seu nome GNU.
Formato versão 1.0 (desde dpkg 1.13.2).
- /usr/share/dpkg/ostable
- Tabela de nomes de sistemas operativos conhecidos e o mapear deles para o
seu nome GNU. Formato versão 2.0 (desde dpkg 1.18.11).
- /usr/share/dpkg/tupletable
- Mapeamento entre tuples de arquitectura Debian e nomes de arquitectura
Debian. Versão de formato 1.0 (desde dpkg 1.18.11).
- /usr/share/dpkg/abitable
- Tabela de sobreposições de atributos ABI de arquitectura
Debian. Versão de formato 2.0 (desde dpkg 1.18.11).
- /usr/share/dpkg/architecture.mk
- Fragmento do Makefile cuja propriedade define e exporta todas as
variáveis que o dpkg-architecture gera como resultado (desde
dpkg 1.16.1).
dpkg-buildpackage aceita a opção -a e
passa-a para dpkg-architecture. Outros exemplos:
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval $(dpkg-architecture -u)
Verifica se a arquitectura actual ou da máquina
especificada é igual a uma arquitectura:
dpkg-architecture -elinux-alpha
dpkg-architecture -amips -elinux-mips
Verifica se a arquitectura actual ou da máquina
especificada é um sistema Linux.
dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any
As variáveis de ambiente definidas pelo
dpkg-architecture são passadas para debian/rules como
variáveis do make (veja a documentação do make). No
entanto, você não deve confiar nelas, porque prejudicam a
invocação manual do script. Em vez disso, você deve
sempre inicializa-las usando dpkg-architecture com a
opção -q. Aqui estão alguns exemplos, que
também mostram como você pode melhorar o suporte a
compilação cruzada no seu pacote:
Obter o tipo de sistema GNU e reencaminha-lo para ./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)
Fazer algo apenas para uma arquitectura específica:
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
ou se você apenas precisar de verificar o tipo de CPU ou
SO, use as variáveis DEB_HOST_ARCH_CPU ou
DEB_HOST_ARCH_OS
Note que você também pode confiar num retalho
externo do Makefile para definir apropriadamente todas as variáveis
que o dpkg-architecture pode fornecer.
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
Em qualquer dos casos, você nunca deverá usar o
dpkg --print-architecture para obter informação de
arquitectura durante uma compilação de pacote.
- DPKG_DATADIR
- Se definida, será usada como o directório de dados do
dpkg, onde as tabelas de arquitectura estão localizadas
(desde 1.14.17). A predefinição é
«/usr/share/dpkg».
- DPKG_COLORS
- Define o modo de cor (desde dpkg 1.18.5). Os valores actualmente aceites
são: auto (predefinido), always e never.
- DPKG_NLS
- Se definida, será usada para decidir se deve activar o Suporte a
Linguagem Nativa. Também como conhecido como suporte de
internacionalização (ou i18n) (desde dpkg 1.19.0). Os
valores aceites são 0 e 1
(predefinição).
Todos comandos e nomes de opções longos
disponíveis apenas desde dpkg 1.17.17.
Américo Monteiro
Se encontrar algum erro na tradução deste documento,
por favor comunique para Américo Monteiro
<a_monteiro@gmx.com>.