|
⇤ ← Revision 1 as of 2013-03-12 17:01:47
Size: 7285
Comment: Initial pt_BR translation
|
Size: 8133
Comment: Finishing pt_BR translation
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| = O que é essa multi-arquitetura ("Multiarch")? = | = O que é esta multi-arquitetura ("Multiarch")? = |
| Line 26: | Line 26: |
| == Availability == | == Disponibilidade == |
| Line 28: | Line 28: |
| You need a multiarch-aware dpkg and apt. | Você precisa de um dpkg e apt que entendam multi-arquitetura. |
| Line 30: | Line 30: |
| In Debian dpkg this is present since 1.16.2. In Ubuntu this is present since natty (v1.15.8.10ubuntu1). Check by seeing if {{{dpkg --print-foreign-architectures}}} is understood. | 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. |
| Line 32: | Line 32: |
| Apt is multiarch-aware if it supports {{{-o APT::Architectures}}}. This is available from version 0.8.13 onwards. However there are many multiarch-related improvements and bug-fixes in later apt versions (some required by Debian dpkg 1.16.2 to properly enable multiarch), such as apt-get build-dep -a cross-dependency support, so the later the better in general up to at least 0.9.4. | O apt entende multi-arquitetura 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 à multi-arquitetura 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 multi-arquitetura), 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. |
| Line 34: | Line 34: |
| Prior to apt 0.9 in Debian, dpkg can get stuck (but only if multiach is enabled) during upgrades when it is not told which arch package it should be configuring by apt. (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) {{{dpkg --configure -a}}} will unbung this. | Antes do apt 0.9, no Debian, o dpkg pode ficar emperrado (mas apenas se a multi-arquitetura for habilitada) durante as atualizações, quando não for dito qual o pacote de arquitetura deve ser configurado pelo apt. |
| Line 36: | Line 36: |
| = Usage = | Por exemplo: {{{ dpkg: erro: --configure precisa de um nome de pacote válido mas 'gcc-4.7-base' não é: nome de pacote ambíguo 'gcc-4.7-base' com mais de uma instância instalada }}} |
| Line 38: | Line 41: |
| == Configuring architectures == | Executando {{{dpkg --configure -a}}} corrigirá isso. |
| Line 40: | Line 43: |
| To add an extra architecture (in Debian from dpkg 1.16.2 onwards): | = Uso = == Configurando arquiteturas == Para adicionar uma arquitetura extra (no Debian, do dpkg 1.16.2 em diante): |
| Line 43: | Line 51: |
| }}} e.g. | }}} Por exemplo: |
| Line 48: | Line 58: |
| To remove an achitecture | Para remover uma arquitetura: |
| Line 53: | Line 63: |
| dpkg architectures are stored in {{{/var/lib/dpkg/arch}}}. | As arquiteturas do dpkg são armazenadas em {{{/var/lib/dpkg/arch}}}. |
| Line 55: | Line 65: |
| Note that the Ubuntu dpkg in natty (1.16.0~ubuntu7 (reports 1.15.8.10)), oneiric and precise (1.16.1.2ubuntu7) uses a different syntax: | 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: |
| Line 60: | Line 70: |
| == Setting up apt sources == | == Configurando fontes do apt == |
| Line 62: | Line 72: |
| Apt defaults to using the set of architectures reported by dpkg, and any unqualified architecture deb lines in {{{/etc/apt/sources.list}}}, which is usually what you wanted. This can be overridden using APT::Architecture=<arch> to set the defalt architecture or APT::Architectures="<arch> <arch>". | 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=<arch>}}} para definir a arquitetura padrão ou {{{-o APT::Architectures="<arch> <arch>"}}}. |
| Line 64: | Line 74: |
| apt-sources can be architecture qualified with this syntax. This is very useful on Ubuntu's split archive. It is not normally necessary on Debian unless your normal archive does not mirror the extra architectures you are interested in. | 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 não é normalmente 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. |
| Line 69: | Line 79: |
| Arch-qualifying deb-src lines doesn't make any sense. | Linhas deb-src qualificadas por arquiteturas não fazem nenhum sentido. |
| Line 71: | Line 81: |
| Note: There is a bug in apt versions >=0.9.7 and <0.9.7.2 which means that putting 'arch=armel,armhf' on one line didn't work - you needed two separate entries. | Observação: Existe um bug nas versões do apt >=0.9.7 e <0.9.7.2 que significa que pondo "arch=armel,armhf" em uma linha não funciona - você precisa de duas entradas separadas. |
| Line 73: | Line 83: |
| Don't forget to {{{apt-get update}}} after adding new architectures. | Não esqueça de executar {{{apt-get update}}} após adicionar novas arquiteturas. |
| Line 75: | Line 85: |
| == Installing/removing packages == | == Instalando/removendo pacotes == |
| Line 77: | Line 87: |
| To install a package of the non-default architecture just specify that architecture on the command line: | Para instalar um pacote de uma arquitetura que não seja padrão apenas especifique essa arquitetura na linha de comando: |
| Line 79: | Line 89: |
| apt-get install package:architecture | apt-get install pacote:arquitetura |
| Line 81: | Line 91: |
| That package's dependencies will be installed automatically for the correct architectures (same-arch library deps, machine-arch for other deps) e.g |
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: |
| Line 88: | Line 98: |
| dpkg -i package_version_architecture.deb dpkg -r package:architecture |
dpkg -i pacote_versão_arquitetura.deb dpkg -r pacote:arquitetura |
| Line 93: | Line 103: |
| == Installing cross-dependencies == | == Instalando dependências cruzadas == |
| Line 95: | Line 105: |
| To install build-dependencies of a package before cross-building: | Para instalar dependências para construção de um pacote, antes construção cruzada ("cross-building") execute: |
| Line 97: | Line 107: |
| apt-get build-dep -a <arch> <package> | apt-get build-dep -a <arquitetura> <pacote> |
| Line 100: | Line 110: |
| This only works when all the 'tools' packages depended-on are marked {{{Multi-Arch: foreign}}}, any depended-on libraries which are also needed on the BUILD machine, and -dev packages which are needed for both HOST and BUILD architectures are made co-installable ('Multi-Arch: same' with arch-qualified paths), and any exceptions to the default rules are marked {{{package:any}}} or {{{package:native}}} in the package source. This process is ongoing. | 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 '''''"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. |
| Line 102: | Line 112: |
| When it doesn't work you can often get the dependencies installed with a manual apt-get line: e.g instead of {{{ |
Quando ele 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: {{{ |
| Line 105: | Line 116: |
| }}}, do | }}} Fazer: |
| Line 110: | Line 123: |
| Details of how this resolves are on https://wiki.ubuntu.com/MultiarchCross | Os detalhes de como isso é resolvido estão em https://wiki.ubuntu.com/MultiarchCross |
O que é esta multi-arquitetura ("Multiarch")?
A multi-arquitetura permite que você instale pacotes de múltiplas arquiteturas em uma 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.
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 earmhf são architectures diferentes, embora elas usem (próximo o bastante) o mesmo conjunto de instruções, porque elas têm ABIs diferentes de chamada de biblioteca. )
Os pacotes agora podem ser especificados como "package:architecture" em paticamente qualquer lugar onde antes era apenas "package", 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 simples nome "package" 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 multi-arquitetura.
Pacotes já existentes funcionam bem em um ambiente multi-arquitetura, como antes, mas para ter os benefícios de co-instalação ou dependências de arquiteturas cruzadas, muito pacotes precisam ser feitos para multi-arquitetura.
- 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 pacotes de uma arquitetura diferente (por exemplo, "make:amd64" irá satisfazer uma dependência do make 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.
Empacotadores estão atualmente trabalhando na distribuição, começando com os pacotes mais úteis para convertê-los para multi-arquitetura. Veja a especificação da multi-arquitetura 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 multi-arquitetura.
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 multi-arquitetura 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 à multi-arquitetura 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 multi-arquitetura), 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 multi-arquitetura for habilitada) durante as atualizações, quando não for dito qual o pacote de arquitetura deve ser configurado pelo apt.
Por exemplo:
dpkg: erro: --configure precisa de um nome de pacote válido mas 'gcc-4.7-base' não é: nome de pacote ambíguo 'gcc-4.7-base' com mais de uma instância instalada
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 <arch>
Por exemplo:
dpkg --add-architecture armhf
Para remover uma arquitetura:
dpkg --remove-architecture <arch>
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 1.15.8.10)), oneiric e precise (1.16.1.2ubuntu7) usa uma sintaxe diferente:
echo "foreign-architecture armhf" > /etc/dpkg/dpkg.cfg.d/architectures
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/sources.list, que normalmente é o que você quer. Isso pode ser sobrescrito usando a opção -o APT::Architecture=<arch> para definir a arquitetura padrão ou -o APT::Architectures="<arch> <arch>".
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 não é normalmente 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] http://uk.archive.ubuntu.com/ubuntu/ quantal main universe deb [arch=armel,armhf] http://ports.ubuntu.com/ubuntu-ports quantal main universe
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 <0.9.7.2 que significa que pondo "arch=armel,armhf" em uma linha não funciona - você precisa de duas entradas separadas.
Não esqueça de executar apt-get update 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 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 necessários tanto para a arquitetura "HOST" quanto "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 ele 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-dev:armhf
Os detalhes de como isso é resolvido estão em https://wiki.ubuntu.com/MultiarchCross
