Por que meu sistema de 64 bits procura repos de 32 bits?

18

Eu tenho uma instalação de 12 bits de 64 bits no meu laptop. Ao executar o apt-get update, ele faz o download de listas de pacotes para pacotes de 32 bits (assim 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? Eu incluí um dos itens que ele tenta encontrar abaixo.

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
    
por tgm4883 09.01.2013 / 07:22

1 resposta

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, por isso ele também usa os repositórios de 32 bits.

Eu sou do começo de 2011. O que aconteceu?

Em versões de 64 bits do Ubuntu anteriores a 11.10, alguns conjuntos de bibliotecas comuns de 32 bits foram empacotados em um único pacote ia32-libs representado para o APT / Dpkg como sendo de 64 bits e em tal local no repositório. Se você precisar de uma única biblioteca para um aplicativo, isso dependerá de mais de 150 MB de bibliotecas de 32 bits 1 . Claramente, este não é um bom design.

Arquiteturas múltiplas?

A nova ideia era introduzir os recursos chamados "Multiarch" ao APT / Dpkg e as ferramentas em torno dele. Isso foi apresentado em vários projetos no Launchpad, aqui é um deles . Oneiric (11.10) tornou-se o primeiro lançamento que suportou o Multiarch.

Como isso funciona?

Você pode dizer ao Dpkg que arquiteturas seu sistema é capaz de rodar. Na minha instalação de 64 bits de 12.04, isso está aqui:

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

Ele abre o mundo inteiro de i386 packages, com amd64 ainda 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 de libqt4-core:i386 , por exemplo, e torna possível instalar qualquer pacote / biblioteca de 32 bits (e, portanto, instalar qualquer pacote que dependa de qualquer biblioteca / pacote de 32 bits), em vez de um conjunto pré-selecionado.

ia32-libs compatibility

Caso você esteja acostumado a instalar o pacote ia32-libs como um pacote de conveniência para instalar um conjunto comum de bibliotecas básicas de 32 bits, agora você pode usar ia32-libs-multiarch . Este é um simples metapacote dependendo do mesmo (ou pelo menos muito similar) conjunto de bibliotecas, mas ele será instalado com o poder do Multiarch.

Outras leituras relacionadas

1 Para o Lucid (10.04) o ia32-libs package o tamanho da instalação é de 155.812,0 kB.

    
por gertvdijk 09.01.2013 / 10:26

Tags