Eu estava pensando sobre isso especificamente para a construção de software no Debian (o sistema Debian instalado pode ser uma versão de 32 bits com um kernel de 32 bits, bibliotecas etc.) ou pode ser uma versão de 64 bits com material compilado para o sistema 64-bit. em vez do modo de compatibilidade de 32 bits).
Os próprios pacotes Debian precisam saber para qual arquitetura eles são (é claro) quando eles realmente criam o pacote com todos os seus metadados, incluindo a arquitetura da plataforma, para que exista uma ferramenta de empacotamento que o produza para outras ferramentas e scripts de empacotamento, chamados arquitetura dpkg . Inclui tanto o que ele está configurado para construir, quanto o host atual. (Normalmente, eles são os mesmos.) Exemplo de saída em uma máquina de 64 bits:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
Você pode imprimir apenas uma dessas variáveis ou fazer um teste em relação a seus valores com as opções de linha de comando para dpkg -architecture.
Não tenho idéia de como o dpkg-architecture deduz a arquitetura, mas você pode ver a documentação ou o código fonte (dpkg-architecture e grande parte do sistema dpkg em geral são Perl).