Pourquoi mon système 64 bits recherche-t-il des dépôts 32 bits?

19

J'ai une installation 12.10 64 bits sur mon ordinateur portable. Lors de l'exécution de la mise à jour apt-get, il télécharge les listes de packages pour les packages 32 bits (ainsi que les listes de packages source et 64 bits). Pourquoi recherche-t-il des listes de packages 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
tgm4883
la source

Réponses:

28

Confus, n'est-ce pas? Laissez-moi vous expliquer un peu.

Pourquoi?

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

Je suis début 2011. Que s'est-il passé?

Dans les versions 64 bits d'Ubuntu antérieures à 11.10, certains ensembles de bibliothèques communes 32 bits étaient regroupés dans un seul ia32-libspackage représenté par APT / Dpkg comme étant 64 bits et dans un tel emplacement dans le référentiel. Si vous avez besoin d'une seule bibliothèque pour une application, cela dépendra des 150+ Mo de bibliothèques 32 bits 1 . De toute évidence, ce n'est pas un joli design.

Architectures multiples?

La nouvelle idée était d'introduire des capacités dites "Multiarch" dans APT / Dpkg et les outils qui l'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 peut exécuter. 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 i386packages, avec amd64toujours le 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 mainteneurs de packages de dépendre simplement de leurs packages libqt4-core:i386par exemple, et permet d'installer n'importe quelle bibliothèque / package 32 bits (et donc d'installer tout package qui dépend de n'importe quelle bibliothèque / package 32 bits) , plutôt qu'un ensemble présélectionné.

ia32-libs compatibilité

Dans le cas où vous étiez habitué à installer le ia32-libspackage en tant que package de commodité pour installer un ensemble commun de bibliothèques de base 32 bits, vous pouvez maintenant utiliser . Il s'agit d'un simple métapaquet dépendant du même ensemble de bibliothèques (ou du moins très similaire), mais il sera installé avec la puissance de Multiarch.ia32-libs-multiarch Installez ia32-libs-multiarch

Lectures complémentaires

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

gertvdijk
la source
5
Je recommande de courir dpkg --print-foreign-architecturesplutôt que de catting /etc/dpkg/dpkg.cfg.d/multiarch. Il n'existe plus après le 12.04.
tumbleweed
Je viens de configurer apt-mirror à la maison et espérais simplement mettre en miroir le dépôt 64 bits. C'est malheureux que je ne puisse pas faire ça, mais je comprends pourquoi maintenant et c'est logique de cette façon. Réponse acceptée!
tgm4883
@ tgm4883 Vous pouvez supprimer la configuration de l'architecture étrangère si vous voulez vraiment exécuter amd64uniquement. C'est similaire à exécuter un Ubuntu plus ancien sans ia32-libsdisponible.
gertvdijk
1
J'ai commencé à lire et dans mon esprit ça disait: hmm ressemble à un post de gertvdijk: +) Goede post;)
Rinzwind