Por que meu sistema de 64 bits procura repositórios de 32 bits?

19

Eu tenho uma instalação 12.10 de 64 bits no meu laptop. Ao executar o apt-get update, ele baixa listas de pacotes de pacotes de 32 bits (bem como listas de pacotes de origem e de 64 bits). Por que procura listas de pacotes de 32 bits em um sistema de 64 bits? Incluí um dos itens que ele tenta encontrar abaixo.

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
tgm4883
fonte

Respostas:

28

Confuso, não é? Deixe-me explicar um pouco.

Por quê?

  • O software de 32 bits funciona bem em um kernel de 64 bits com hardware compatível com 64 bits.
  • Alguns softwares ainda dependem de bibliotecas específicas de 32 bits. Isso não é legal, mas às vezes não temos o poder de mudar isso.
  • O software de 32 bits deve estar disponível para o sistema para satisfazer as dependências, para que também use os repositórios de 32 bits.

Eu sou do início de 2011. O que aconteceu?

Nas versões de 64 bits do Ubuntu anteriores à 11.10, algum conjunto de bibliotecas comuns de 32 bits era empacotado em um único ia32-libspacote representado pelo APT / Dpkg como sendo de 64 bits e em um local no repositório. Se você precisar de uma única biblioteca para um aplicativo, isso dependerá dos mais de 150 MB de bibliotecas de 32 bits 1 . Claramente, este não é um design agradável.

Arquiteturas múltiplas?

A nova idéia era introduzir os chamados recursos "Multiarch" no APT / Dpkg e nas ferramentas ao seu redor. Isso foi apresentado em vários modelos no Launchpad, aqui está um deles . Oneiric (11.10) tornou-se o primeiro lançamento que suportava o Multiarch.

Como funciona?

Você pode dizer ao Dpkg quais arquiteturas seu sistema pode executar. Na minha instalação 12.04 de 64 bits, está aqui:

$ cat /etc/dpkg/dpkg.cfg.d/multiarch 
foreign-architecture i386

Ele abre o mundo inteiro de i386pacotes, amd64ainda sendo o padrão:

$ apt-cache show libqt4-core                   | grep -E "^(Filename|Architecture)"
Architecture: amd64
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_amd64.deb

$ apt-cache show libqt4-core:i386              | grep -E "^(Filename|Architecture)"
Architecture: i386
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_i386.deb

O exemplo acima mostra que o Multiarch permite que os mantenedores de pacotes simplesmente façam seus pacotes dependerem, libqt4-core:i386por exemplo, e possibilite instalar qualquer biblioteca / pacote de 32 bits (e, assim, instalar qualquer pacote que dependa de qualquer biblioteca / pacote de 32 bits) , em vez de um conjunto pré-selecionado.

ia32-libs compatibilidade

Caso você tenha sido usado para instalar o ia32-libspacote como um pacote de conveniência para instalar um conjunto comum de bibliotecas básicas de 32 bits, agora você pode usá-lo . Esse é um metapacote simples, dependendo do mesmo (ou pelo menos muito semelhante) conjunto de bibliotecas, mas será instalado com o poder do Multiarch.ia32-libs-multiarch Instale o ia32-libs-multiarch

Outras leituras relacionadas

1 No Lucid (10.04), o tamanho da instalação do ia32-libspacote é 155.812,0 kB.

gertvdijk
fonte
5
Eu recomendo correr dpkg --print-foreign-architecturesao invés de catting /etc/dpkg/dpkg.cfg.d/multiarch. Não existe após 12.04.
precisa saber é
Acabei de configurar o apt-mirror em casa e esperava apenas espelhar o repositório de 64 bits. É uma pena que não posso fazer isso, mas entendo o porquê agora e faz sentido dessa maneira. Resposta aceita!
tgm4883
@ tgm4883 Você pode remover a configuração da arquitetura estrangeira se realmente deseja executar amd64apenas. É semelhante a rodar um Ubuntu mais antigo sem ia32-libsdisponibilidade.
precisa saber é
11
Comecei a ler e, em minha mente, dizia: hmm parece um post de gertvdijk: +) post do Goede;)
Rinzwind