J'ai une installation 64 bits 12.10 sur mon ordinateur portable. Lors de l'exécution d'apt-get update, il télécharge les listes de paquets pour les paquets 32 bits (ainsi que les listes de paquets source et 64 bits). Pourquoi recherche-t-il des listes de paquets 32 bits sur un système 64 bits? J'ai inclus l'un des éléments qu'il essaie de trouver ci-dessous.
http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
Déroutant, n'est-ce pas? Laissez-moi expliquer un peu.
Dans les versions 64 bits d’Ubuntu antérieures à la version 11.10, certains ensembles de bibliothèques communes à 32 bits étaient regroupés dans un seul paquet ia32-libs
représenté par APT/Dpkg comme étant à 64 bits et situé dans le référentiel. Si vous avez besoin d’une seule bibliothèque pour une application, cela dépend des quelque 150 Mo de bibliothèques 32 bits.1. Clairement, ce n'est pas un beau design.
La nouvelle idée consistait à introduire les fonctionnalités dites "multiarch" de APT/Dpkg et des outils qui les entourent. Cela a été présenté dans plusieurs plans sur Launchpad, en voici un . Oneiric (11.10) est devenu la première version à prendre en charge Multiarch.
Vous pouvez indiquer à Dpkg quelles architectures votre système est capable de fonctionner. Sur mon installation 12.04 64 bits, c'est ici:
$ cat /etc/dpkg/dpkg.cfg.d/multiarch
foreign-architecture i386
Il ouvre tout le monde des paquets i386
, avec AMD64
toujours par défaut:
$ 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
L'exemple ci-dessus montre que Multiarch permet aux responsables de package de simplement faire en sorte que leurs paquets dépendent de libqt4-core:i386
par exemple, et permet d'installer n'importe quelle bibliothèque 32-bit/package (et donc d’installer tout package qui dépend de d’une bibliothèque/package 32 bits), plutôt que d’un ensemble présélectionné.
ia32-libs
compatibilitéSi vous aviez l'habitude d'installer le paquet ia32-libs
comme un paquet pratique pour installer un ensemble commun de bibliothèques 32 bits de base, vous pouvez maintenant utiliser ia32-libs-multiarch
. Il s’agit d’un méta-paquet simple dépendant du même ensemble (ou du moins très similaire) de bibliothèques, mais il sera installé avec la puissance de Multiarch.
1Pour Lucid (10.04), la taille de l'installation ia32-libs
est de 155 812,0 ko.