web-dev-qa-db-fra.com

Pourquoi mon système 64 bits recherche-t-il les pensions 32 bits?

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
18
tgm4883

Déroutant, n'est-ce pas? Laissez-moi expliquer un peu.

Pourquoi?

  • Le logiciel 32 bits fonctionne correctement sur un noyau 64 bits avec du matériel compatible 64 bits.
  • Certains logiciels reposent encore sur des bibliothèques 32 bits spécifiques. Ce n'est pas agréable, mais parfois nous n'avons pas le pouvoir de changer cela.
  • Le logiciel 32 bits doit être disponible pour que le système réponde aux dépendances, de sorte qu'il utilise également les référentiels 32 bits.

Je suis de début 2011. Qu'est-ce qui s'est passé?

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.

Architectures multiples?

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.

Comment ça marche?

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-multiarchInstall 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.

Autres lectures connexes

1Pour Lucid (10.04), la taille de l'installation ia32-libs est de 155 812,0 ko.

28
gertvdijk