<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Multiarquitetura</title><link>https://sourceforge.net/p/amaroklinux/wiki/Multiarquitetura/</link><description>Recent changes to Multiarquitetura</description><atom:link href="https://sourceforge.net/p/amaroklinux/wiki/Multiarquitetura/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 11 Oct 2020 16:36:08 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/amaroklinux/wiki/Multiarquitetura/feed" rel="self" type="application/rss+xml"/><item><title>Multiarquitetura modified by KingLinux</title><link>https://sourceforge.net/p/amaroklinux/wiki/Multiarquitetura/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="o-que-e-esta-multiarquitetura-multiarch"&gt;O que é esta multiarquitetura ("Multiarch")?&lt;/h1&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id="conceitos"&gt;Conceitos&lt;/h2&gt;
&lt;p&gt;Existe uma arquitetura da máquina atual, como é mostrada pelo &lt;code&gt;dpkg --print-architecture&lt;/code&gt;. Ela está incorporada ao pacote dpkg instalado atualmente.&lt;/p&gt;
&lt;p&gt;(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.)&lt;/p&gt;
&lt;p&gt;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 ambiguidades para pacotes qualificados por arquitetura. O nome apenas "pacote" refere-se à arquitetura atual da máquina no apt.&lt;/p&gt;
&lt;p&gt;Outras arquiteturas disponíveis são mostradas pelo &lt;code&gt;dpkg --print-foreign-architectures&lt;/code&gt;. O dpkg gerenciará pacotes para essas arquiteturas assim como a arquitetura da máquina.&lt;/p&gt;
&lt;p&gt;Existe um cabeçalho "Multi-Arch" no meta-dado de qualquer pacote feito para multiarquitetura.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;Para&lt;/span&gt; &lt;span class="nv"&gt;um&lt;/span&gt; &lt;span class="nv"&gt;pacote&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;modificado&lt;/span&gt; &lt;span class="nv"&gt;voc&lt;/span&gt;ê &lt;span class="nv"&gt;pode&lt;/span&gt; &lt;span class="nv"&gt;escolher&lt;/span&gt; &lt;span class="nv"&gt;qual&lt;/span&gt; &lt;span class="nv"&gt;vers&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;arquitetura&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nv"&gt;pacote&lt;/span&gt; &lt;span class="nv"&gt;deve&lt;/span&gt; &lt;span class="nv"&gt;ser&lt;/span&gt; &lt;span class="nv"&gt;instalada&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;por&lt;/span&gt; &lt;span class="nv"&gt;exemplo&lt;/span&gt;, &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amd64&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nv"&gt;ou&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;i386&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;.

&lt;span class="nv"&gt;Se&lt;/span&gt; &lt;span class="nv"&gt;um&lt;/span&gt; &lt;span class="nv"&gt;pacotes&lt;/span&gt; é &lt;span class="nv"&gt;marcado&lt;/span&gt; &lt;span class="nv"&gt;como&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Multi-Arch: foreign&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, &lt;span class="nv"&gt;ent&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;ele&lt;/span&gt; &lt;span class="nv"&gt;pode&lt;/span&gt; &lt;span class="nv"&gt;satisfazer&lt;/span&gt; &lt;span class="nv"&gt;depend&lt;/span&gt;ê&lt;span class="nv"&gt;ncias&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;um&lt;/span&gt; &lt;span class="nv"&gt;pacote&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;uma&lt;/span&gt; &lt;span class="nv"&gt;arquitetura&lt;/span&gt; &lt;span class="nv"&gt;diferente&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;por&lt;/span&gt; &lt;span class="nv"&gt;exemplo&lt;/span&gt;, &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;libglib2.0-bin:amd64&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nv"&gt;ir&lt;/span&gt;á &lt;span class="nv"&gt;satisfazer&lt;/span&gt; &lt;span class="nv"&gt;uma&lt;/span&gt; &lt;span class="nv"&gt;depend&lt;/span&gt;ê&lt;span class="nv"&gt;ncia&lt;/span&gt; &lt;span class="nv"&gt;da&lt;/span&gt; &lt;span class="nv"&gt;libglib2&lt;/span&gt;.&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;bin&lt;/span&gt; &lt;span class="nv"&gt;para&lt;/span&gt; &lt;span class="nv"&gt;pacote&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;qualquer&lt;/span&gt; &lt;span class="nv"&gt;arquitetura&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;.

&lt;span class="nv"&gt;Para&lt;/span&gt; &lt;span class="nv"&gt;possibilitar&lt;/span&gt; &lt;span class="nv"&gt;que&lt;/span&gt; &lt;span class="nv"&gt;mais&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;uma&lt;/span&gt; &lt;span class="nv"&gt;vers&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;arquitetura&lt;/span&gt; &lt;span class="nv"&gt;de&lt;/span&gt; &lt;span class="nv"&gt;um&lt;/span&gt; &lt;span class="nv"&gt;pacote&lt;/span&gt; &lt;span class="nv"&gt;seja&lt;/span&gt; &lt;span class="nv"&gt;instalada&lt;/span&gt; &lt;span class="nv"&gt;ao&lt;/span&gt; &lt;span class="nv"&gt;mesmo&lt;/span&gt; &lt;span class="nv"&gt;tempo&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;geralmente&lt;/span&gt; &lt;span class="nv"&gt;bibliotecas&lt;/span&gt; &lt;span class="nv"&gt;e&lt;/span&gt; &lt;span class="nv"&gt;pacotes&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;dev&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;os&lt;/span&gt; &lt;span class="nv"&gt;arquivos&lt;/span&gt; &lt;span class="nv"&gt;precisam&lt;/span&gt; &lt;span class="nv"&gt;ser&lt;/span&gt; &lt;span class="nv"&gt;movidos&lt;/span&gt; &lt;span class="nv"&gt;para&lt;/span&gt; &lt;span class="nv"&gt;que&lt;/span&gt; &lt;span class="nv"&gt;eles&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;choquem&lt;/span&gt;. &lt;span class="nv"&gt;Esses&lt;/span&gt; &lt;span class="nv"&gt;pacotes&lt;/span&gt; &lt;span class="nv"&gt;s&lt;/span&gt;ã&lt;span class="nv"&gt;o&lt;/span&gt; &lt;span class="nv"&gt;marcados&lt;/span&gt; &lt;span class="nv"&gt;como&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Multi-Arch: same&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Empacotadores estão atualmente trabalhando na distribuição, começando com os pacotes mais úteis para convertê-los para multiarquitetura. Veja a 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.&lt;/p&gt;
&lt;h2 id="disponibilidade"&gt;Disponibilidade&lt;/h2&gt;
&lt;p&gt;Você precisa de um dpkg e apt que entendam multiarquitetura.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &amp;lt;arquitetura&amp;gt; &amp;lt;pacote&amp;gt;. Então, em geral, a versão posterior é melhor, pelo menos acima da 0.9.4.&amp;lt;/pacote&amp;gt;&amp;lt;/arquitetura&amp;gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Por exemplo:&lt;/p&gt;
&lt;p&gt;dpkg: error: --configure needs a valid package name but 'gcc-4.7-base' is not: ambiguous package name 'gcc-4.7-base' with more than one installed instance&lt;/p&gt;
&lt;p&gt;Executando &lt;code&gt;dpkg --configure -a&lt;/code&gt; corrigirá isso.&lt;/p&gt;
&lt;p&gt;Uso&lt;/p&gt;
&lt;h2 id="configurando-arquiteturas"&gt;Configurando arquiteturas&lt;/h2&gt;
&lt;p&gt;Para adicionar uma arquitetura extra (no Debian, do dpkg 1.16.2 em diante):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dpkg --add-architecture &amp;lt;arquitetura&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por exemplo:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dpkg --add-architecture armhf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note que nada realmente mudará até que você faça um&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;para atualizar a lista de pacotes disponíveis.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Para remover uma arquitetura:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dpkg --remove-architecture &amp;lt;arquitetura&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As arquiteturas do dpkg são armazenadas em &lt;code&gt;/var/lib/dpkg/arch&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Observe que o dpkg do Ubuntu na natty (1.16.0~ubuntu7 (relatórios 1.15.8.10)), oneiric e precise (1.16.1.2ubuntu7) usa uma sintaxe diferente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo "foreign-architecture armhf" &amp;gt;&amp;gt; /etc/dpkg/dpkg.cfg.d/architectures&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="configurando-fontes-do-apt"&gt;Configurando fontes do apt&lt;/h2&gt;
&lt;p&gt;O padrão do apt é usar o conjunto de arquiteturas relatado pelo dpkg, e qualquer linha de arquitetura não qualificada em /etc/apt/sources.list, que normalmente é o que você quer. Isso pode ser sobrescrito usando a opção -o APT::Architecture=&amp;lt;arquitetura&amp;gt; para definir a arquitetura padrão ou -o APT::Architectures="&amp;lt;arquitetura&amp;gt; &amp;lt;arquitetura&amp;gt;".&amp;lt;/arquitetura&amp;gt;&amp;lt;/arquitetura&amp;gt;&amp;lt;/arquitetura&amp;gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="sx"&gt;[arch=amd64,i386]&lt;/span&gt; &lt;span class="kp"&gt;http://br.archive.ubuntu.com/ubuntu/&lt;/span&gt; &lt;span class="kp"&gt;quantal&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;universe&lt;/span&gt;
&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="sx"&gt;[arch=armel,armhf]&lt;/span&gt; &lt;span class="kp"&gt;http://ports.ubuntu.com/ubuntu-ports&lt;/span&gt; &lt;span class="kp"&gt;quantal&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;universe&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Linhas deb-src qualificadas por arquiteturas não fazem nenhum sentido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; Existe um bug nas versões do apt &amp;gt;= 0.9.7 e &amp;lt; 0.9.7.2 o qual significa que não funcionou ao colocar "arch=armel,armhf" em uma linha - você precisa de duas entradas separadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Não esqueça de executar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;após adicionar novas arquiteturas.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="instalandoremovendo-pacotes"&gt;Instalando/removendo pacotes&lt;/h2&gt;
&lt;p&gt;Para instalar um pacote de uma arquitetura que não seja padrão, apenas especifique essa arquitetura na linha de comando:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install pacote:arquitetura&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install links:i386&lt;/code&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;dpkg&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="n"&gt;pacote_vers&lt;/span&gt;&lt;span class="err"&gt;ã&lt;/span&gt;&lt;span class="n"&gt;o_arquitetura&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deb&lt;/span&gt;
&lt;span class="n"&gt;dpkg&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;pacote&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;arquitetura&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2 id="instalando-dependencias-cruzadas"&gt;Instalando dependências cruzadas&lt;/h2&gt;
&lt;p&gt;Para instalar dependências para construção de um pacote, antes da construção cruzada ("cross-building") execute:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get build-dep -a &amp;lt;arquitetura&amp;gt; &amp;lt;pacote&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;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 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.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get build-dep -a armhf acl&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;fazer:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install autoconf automake debhelper gettext libtool libattr1-dev:armhf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Os detalhes de como isso é resolvido estão em MultiarchCross.&lt;/p&gt;
&lt;h2 id="instalando-bibliotecas-de-compatibilidade-do-sdk-do-android"&gt;Instalando bibliotecas de compatibilidade do SDK do Android&lt;/h2&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;dpkg&lt;/span&gt; &lt;span class="c1"&gt;--add-architecture i386&lt;/span&gt;
&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="k"&gt;update&lt;/span&gt;
&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;libstdc&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;i386&lt;/span&gt; &lt;span class="n"&gt;libgcc1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;i386&lt;/span&gt; &lt;span class="n"&gt;zlib1g&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;i386&lt;/span&gt; &lt;span class="n"&gt;libncurses5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;i386&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">KingLinux</dc:creator><pubDate>Sun, 11 Oct 2020 16:36:08 -0000</pubDate><guid>https://sourceforge.netdc2c794775914aa8e621c614849bbb673ca9284b</guid></item></channel></rss>