¿Por qué mi sistema de 64 bits busca repositorios de 32 bits?

19

Tengo una instalación de 64 bits de 12.10 en mi computadora portátil. Cuando ejecuta apt-get update, descarga listas de paquetes para paquetes de 32 bits (así como listas de paquetes de origen y de 64 bits). ¿Por qué busca listas de paquetes de 32 bits en un sistema de 64 bits? He incluido uno de los elementos que intenta encontrar a continuación.

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

Respuestas:

28

Confuso, ¿no es así? Déjame explicarte un poco.

¿Por qué?

  • El software de 32 bits funciona bien en un kernel de 64 bits con hardware compatible con 64 bits.
  • Algunos programas aún se basan en bibliotecas específicas de 32 bits. Esto no es bueno, pero a veces no tenemos el poder de cambiar esto.
  • El software de 32 bits debe estar disponible para que el sistema satisfaga las dependencias, por lo que también utiliza los repositorios de 32 bits.

Soy de principios de 2011. ¿Qué pasó?

En las versiones de 64 bits de Ubuntu anteriores a 11.10, algunos conjuntos de bibliotecas comunes de 32 bits se empaquetaron en un solo ia32-libspaquete representado en APT / Dpkg como de 64 bits y en una ubicación de este tipo en el repositorio. Si necesita una biblioteca única para una aplicación, dependerá de los más de 150 MB de bibliotecas de 32 bits 1 . Claramente, este no es un buen diseño.

Múltiples arquitecturas?

La nueva idea era introducir las llamadas capacidades "Multiarch" en APT / Dpkg y las herramientas que lo rodean. Esto se presentó en varios planos en Launchpad, aquí está uno de ellos . Oneiric (11.10) se convirtió en el primer lanzamiento compatible con Multiarch.

¿Como funciona?

Puede decirle a Dpkg qué arquitecturas puede ejecutar su sistema. En mi instalación 12.04 de 64 bits, aquí está:

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

Abre todo el mundo de los i386paquetes, y amd64sigue siendo el valor predeterminado:

$ 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

El ejemplo anterior muestra que Multiarch permite a los mantenedores de paquetes simplemente hacer que sus paquetes dependan, libqt4-core:i386por ejemplo, y hace posible instalar cualquier biblioteca / paquete de 32 bits (y así instalar cualquier paquete que dependa de cualquier biblioteca / paquete de 32 bits) , en lugar de un conjunto preseleccionado.

ia32-libs compatibilidad

En caso de que haya sido utilizado para instalar el ia32-libspaquete como un paquete conveniente para instalar un conjunto común de bibliotecas básicas de 32 bits, ahora puede usarlo . Este es un metapaquete simple que depende del mismo conjunto (o al menos muy similar) de bibliotecas, pero se instalará con el poder de Multiarch.ia32-libs-multiarch Instalar ia32-libs-multiarch

Lecturas relacionadas adicionales

1 Para Lucid (10.04), el tamaño de instalación del ia32-libspaquete es 155,812.0 kB.

gertvdijk
fuente
55
Recomiendo correr en dpkg --print-foreign-architectureslugar de atrapar /etc/dpkg/dpkg.cfg.d/multiarch. No existe después del 12.04.
planta rodadora
Acabo de configurar apt-mirror en casa y esperaba simplemente reflejar el repositorio de 64 bits. Es lamentable que no pueda hacer eso, pero entiendo por qué ahora y tiene sentido de esta manera. Respuesta aceptada!
tgm4883
@ tgm4883 Puede eliminar la configuración de arquitectura ajena si realmente solo desea ejecutarla amd64. Es similar a ejecutar un Ubuntu anterior sin ia32-libsdisponibilidad.
gertvdijk
1
Empecé a leer y en mi mente decía: hmm parece una publicación de gertvdijk: +) publicación de Goede;)
Rinzwind