pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
org/pt_BR/Multiarch/HOWTO
Translation(s): Português Brasileiro : Français : English
O que é esta multiarquitetura
("Multiarch")?
A multiarquitetura permite que você instale pacotes de
bibliotecas de múltiplas arquiteturas na mesma máquina.
Isso é útil de diversas formas, mas a mais comum é
instalar tanto software de 64 quanto 32 bits na mesma
máquina e ter as dependências resolvidas corretamente
de forma automática. Em geral, você pode ter bibliotecas
de mais de uma arquitetura instaladas juntas e aplicativos
de uma arquitetura ou de outra instalados como
alternativas. Observe que isso não possibilita que várias
versões de aplicativos sejam instaladas simultaneamente.
Conceitos
Existe uma arquitetura da máquina atual, como é
mostrada pelo dpkg --print-architecture. Ela está
incorporada ao pacote dpkg instalado atualmente.
(Observe que "architecture" aqui na realidade se refere a
uma "ABI" (Interface Binária de Aplicação), não um
conjunto de instruções (ISA). Então, por exemplo, "armel"
e "armhf" são "arquiteturas" diferentes, embora elas usem
(próximo o bastante) o mesmo conjunto de instruções,
porque elas têm ABIs de chamada de biblioteca
diferentes.)
Os pacotes agora podem ser especificados como
"pacote:arquitetura" em paticamente qualquer lugar onde
antes era apenas "pacote", então nós temos libc:i386 e
libc:amd64. Infelizmente, as semânticas do dpkg e apt são
ligeiramente diferentes, por isso você pode obter
resultados diferentes, mas deve ser sempre seguro e sem
1 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
ambiguidades para pacotes qualificados por arquitetura. O
nome apenas "pacote" refere-se à arquitetura atual da
máquina no apt.
Outras arquiteturas disponíveis são mostradas pelo
dpkg --print-foreign-architectures. O dpkg
gerenciará pacotes para essas arquiteturas assim como a
arquitetura da máquina.
Existe um cabeçalho "Multi-Arch" no meta-dado de
qualquer pacote feito para multiarquitetura.
Pacotes já existentes funcionam bem em um ambiente
multiarquitetura, como antes, mas para ter os benefícios
de co-instalação ou dependências de arquiteturas
cruzadas, muito pacotes precisam ser feitos para
multiarquitetura.
Para um pacote não modificado você pode escolher
qual versão de arquitetura do pacote deve ser
instalada (por exemplo, "amd64" ou "i386").
Se um pacotes é marcado como
"Multi-Arch: foreign", então ele pode satisfazer
dependências de um pacote de uma arquitetura
diferente (por exemplo, "libglib2.0-bin:amd64" irá
satisfazer uma dependência da libglib2.0-bin para
pacote de qualquer arquitetura).
Para possibilitar que mais de uma versão de
arquitetura de um pacote seja instalada ao mesmo
tempo (geralmente bibliotecas e pacotes -dev), os
arquivos precisam ser movidos para que eles não
choquem. Esses pacotes são marcados como
"Multi-Arch: same".
Também exitem pacotes marcados como
"Multi-Arch: allowed", que podem ser tratados tanto
como ":same" quanto ":foreign", dependendo da forma
como ele são dependentes.
2 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
Empacotadores estão atualmente trabalhando na
distribuição, começando com os pacotes mais úteis para
convertê-los para multiarquitetura. Veja a
UbuntuWiki: especificação da multiarquitetura e o howto
de implementação para detalhes de como tudo funciona
de fato, e como atualizar pacotes para tirar vantagem da
funcionalidade.
Disponibilidade
Você precisa de um dpkg e apt que entendam
multiarquitetura.
No dpkg do Debian isso está presente desde a versão
1.16.2. No Ubuntu isso está presente desde a natty
(v1.15.8.10ubuntu1). Verifique vendo se o
dpkg --print-foreign-architectures é entendido.
O apt entende multiarquitetura se suporta a opção
-o APT::Architectures. Isso está disponível da versão
0.8.13 em diante. Porém, há muitas melhorias
relacionadas à multiarquitetura e correções de bugs nas
versões posteriores do apt (algumas são exigidas pela
versão 1.16.2 do dpkg do Debian para habilitar
adequadamente a multiarquitetura), tais como suporte a
dependências cruzadas
apt-get build-dep -a <arquitetura> <pacote>.
Então, em geral, a versão posterior é melhor, pelo menos
acima da 0.9.4.
Antes do apt 0.9, no Debian, o dpkg pode ficar emperrado
(mas apenas se a multiarquitetura for habilitada) durante
as atualizações, quando não for dito qual o pacote de
arquitetura deve ser configurado pelo apt.
Por exemplo:
dpkg: error: --configure needs a valid package name but 'gcc-4.7-base
3 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
Executando dpkg --configure -a corrigirá isso.
Uso
Configurando arquiteturas
Para adicionar uma arquitetura extra (no Debian, do dpkg
1.16.2 em diante):
dpkg --add-architecture <arquitetura>
Por exemplo:
dpkg --add-architecture armhf
Note que nada realmente mudará até que você faça um
apt-get update
para atualizar a lista de pacotes disponíveis.
Para remover uma arquitetura:
dpkg --remove-architecture <arquitetura>
As arquiteturas do dpkg são armazenadas em
/var/lib/dpkg/arch.
Observe que o dpkg do Ubuntu na natty (1.16.0~ubuntu7
(relatórios [Link])), oneiric e precise (1.16.1.2ubuntu7)
usa uma sintaxe diferente:
4 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
echo "foreign-architecture armhf" >> /etc/dpkg/[Link].d/architectur
Configurando fontes do apt
O padrão do apt é usar o conjunto de arquiteturas
relatado pelo dpkg, e qualquer linha de arquitetura não
qualificada em /etc/apt/[Link], que
normalmente é o que você quer. Isso pode ser sobrescrito
usando a opção -o APT::Architecture=<arquitetura>
para definir a arquitetura padrão ou
-o APT::Architectures="<arquitetura> <arquitetura>".
O arquivo de fontes do apt pode ser qualificado por
arquitetura com a sintaxe abaixo. Isso é muito útil na
divisão de repositórios do Ubuntu. Isso normalmente não é
necessário no Debian, a menos que o seu repositório
normal não faça espelho das arquiteturas extras nas quais
você está interessado.
deb [arch=amd64,i386] [Link] quantal ma
deb [arch=armel,armhf] [Link] quantal m
Linhas deb-src qualificadas por arquiteturas não fazem
nenhum sentido.
Observação: Existe um bug nas versões do apt >= 0.9.7 e
< [Link] o qual significa que não funcionou ao colocar
"arch=armel,armhf" em uma linha - você precisa de duas
entradas separadas.
Não esqueça de executar
apt-get update
5 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
após adicionar novas arquiteturas.
Instalando/removendo pacotes
Para instalar um pacote de uma arquitetura que não seja
padrão, apenas especifique essa arquitetura na linha de
comando:
apt-get install pacote:arquitetura
As dependências dos pacotes serão instaladas
automaticamente para as arquiteturas corretas
(dependências de biblioteca para a mesma arquitetura,
outras dependências para uma arquitetura diferente). Por
exemplo:
apt-get install links:i386
dpkg -i pacote_versão_arquitetura.deb
dpkg -r pacote:arquitetura
Instalando dependências cruzadas
Para instalar dependências para construção de um pacote,
antes da construção cruzada ("cross-building") execute:
apt-get build-dep -a <arquitetura> <pacote>
Isso funciona apenas quando todos os pacotes de
ferramentas dependentes são marcados como
Multi-Arch: foreign, quaisquer bibliotecas
dependentes que também sejam necessárias na máquina
de construção ("BUILD"), e pacotes -dev que são
6 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
necessários tanto para a arquitetura HOST quanto a BUILD
sejam feitos como co-instaláveis. ("Multi-Arch: same"
com os paths qualificados por arquitetura), e quaisquer
exceções às regras padrão são marcadas como
"package:any" ou "package:native" no fonte do pacote.
Esse processo está em andamento.
Quando não funcionar, você geralmente pode obter as
dependências instaladas executando o apt-get na linha de
comando. Por exemplo, ao invés de:
apt-get build-dep -a armhf acl
fazer:
apt-get install autoconf automake debhelper gettext libtool libattr1-
Os detalhes de como isso é resolvido estão em
UbuntuWiki: MultiarchCross.
Instalando bibliotecas de compatibilidade
do SDK do Android
Alguns usuários que utilizam o SDK do Android encontram
problemas quando tentam executar build-tools ou
platform-tools em uma plataforma de 64 bits. Como
substituto para ia32-libs, os usuários devem resolver
apenas instalando as seguintes bibliotecas:
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:
7 de 8 06-11-2017 08:09
pt_BR/Multiarch/HOWTO - Debian Wiki [Link]
CategoryPermalink
8 de 8 06-11-2017 08:09