dpkg-architecture(1) | dpkg suite | dpkg-architecture(1) |
NOME¶
dpkg-architecture - define e determina a arquitectura para compilação de pacotes
RESUMO¶
dpkg-architecture [option...] [command]
DESCRIÇÃO¶
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.
COMANDOS¶
- -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.
OPÇÕES¶
- -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)).
TERMOS¶
- 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)
- The machine the compiler is building for, or the emulator will run code for. This is only needed when building a cross-toolchain (or emulator), one that will be built on the build architecture, to be run on the host architecture, and that itself will build (or run emulated) code for the target architecture.
- Arquitectura Debian
- The Debian architecture string, used in binary packages, which specifies
the binary tree in a package repository.
Examples: i386, sparc, hurd-i386.
- Tuple de arquitectura Debian
- A Debian architecture tuple is the fully qualified architecture with all
its components spelled out. This differs with Debian architectures in that
at least the cpu component does not embed the abi. The
current tuple has the form abi-libc-os-cpu.
Examples: 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
- An architecture specification string consisting of two parts separated by
a hyphen: CPU and system.
The CPU part never contains a hyphen, while the system part might itself contain a hyphen to separate a kernel from its general ABI, where the general ABI might contain both runtime (such as libc) and executable ABI specifiers joined without a hyphen.
Examples: i586-linux-gnu, sparc-linux-gnu, i686-gnu, x86_64-netbsd.
- multiarch triplet
- The clarified GNU system type, used for filesystem paths. This triplet
does not change even when the baseline ISA gets bumped, so that the
resulting paths are stable over time. The only current difference with the
GNU system type is that the CPU part for i386 based systems is always
i386.
Examples: i386-linux-gnu, x86_64-linux-gnu. Example paths: /lib/powerpc64le-linux-gnu/, /usr/lib/i386-kfreebsd-gnu/.
VARIÁVEIS¶
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.
Note: If you are not building tools that need to run during the build, these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.
- 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).
Note: If you are not building cross-toolchains (or emulators), these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.
- 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).
FICHEIROS¶
Tabelas de arquitecturas¶
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).
Suporte a empacotamento¶
- /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).
EXEMPLOS¶
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-arm64 dpkg-architecture -ariscv64 -elinux-riscv64
Verifica se a arquitectura actual ou da máquina especificada é um sistema Linux.
dpkg-architecture -ilinux-any dpkg-architecture -aamd64 -ilinux-any
Utilização em debian/rules¶
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),arm64) [...] 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),arm64) [...] 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.
AMBIENTE¶
- 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).
NOTAS¶
Todos comandos e nomes de opções longos disponíveis apenas desde dpkg 1.17.17.
VEJA TAMBÉM¶
TRADUÇÃO¶
Américo Monteiro
Se encontrar algum erro na tradução deste documento, por favor comunique para Américo Monteiro <a_monteiro@gmx.com>.
2025-03-09 | 1.22.18 |