Warum sucht mein 64-Bit-System nach 32-Bit-Repos?

18

Ich habe eine 64-Bit-12.10-Installation auf meinem Laptop. Beim Ausführen von apt-get update werden Paketlisten für 32-Bit-Pakete (sowie Quell- und 64-Bit-Paketlisten) heruntergeladen. Warum werden 32-Bit-Paketlisten auf einem 64-Bit-System gesucht? Ich habe eines der Elemente hinzugefügt, die es zu finden versucht.

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

Antworten:

28

Verwirrend, nicht wahr? Lassen Sie mich etwas erklären.

Warum?

  • 32-Bit-Software läuft problemlos auf einem 64-Bit-Kernel mit 64-Bit-fähiger Hardware.
  • Einige Softwareprodukte sind immer noch auf bestimmte 32-Bit-Bibliotheken angewiesen. Das ist nicht schön, aber manchmal haben wir nicht die Kraft, dies zu ändern.
  • 32-Bit-Software muss dem System zur Verfügung stehen, um die Abhängigkeiten zu erfüllen. Daher werden auch die 32-Bit-Repositorys verwendet.

Ich bin von Anfang 2011. Was ist passiert?

In 64-Bit-Versionen von Ubuntu vor 11.10 wurden einige der gängigen 32-Bit-Bibliotheken in einem einzigen ia32-libsPaket zusammengefasst, das APT / Dpkg als 64-Bit-Paket und an einem solchen Ort im Repository dargestellt wurde. Wenn Sie eine einzelne Bibliothek für eine Anwendung benötigen, hängt dies von den mehr als 150 MB 32-Bit-Bibliotheken ab 1 . Dies ist eindeutig kein schönes Design.

Mehrere Architekturen?

Die neue Idee war, APT / Dpkg und die damit verbundenen Tools mit sogenannten "Multiarch" -Funktionen auszustatten. Dies wurde in mehreren Blaupausen auf dem Launchpad vorgestellt. Hier ist eine davon . Oneiric (11.10) war die erste Veröffentlichung, die Multiarch unterstützte.

Wie funktioniert es?

Sie können Dpkg mitteilen, welche Architekturen Ihr System ausführen kann. Bei meiner 12.04 64-Bit-Installation ist dies hier:

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

Es öffnet die ganze Welt der i386Pakete, wobei dies amd64immer noch die Standardeinstellung ist:

$ 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

Das obige Beispiel zeigt, dass Multiarch es Paketverwaltern ermöglicht, ihre Pakete libqt4-core:i386zum Beispiel einfach abhängig zu machen , und es ermöglicht, jede 32-Bit-Bibliothek / jedes 32-Bit-Paket zu installieren (und somit jedes Paket zu installieren, das von jeder 32-Bit-Bibliothek / jedem 32-Bit- Paket abhängt ). statt einer vorausgewählten Menge.

ia32-libs Kompatibilität

Wenn Sie das ia32-libsPaket als Hilfspaket für die Installation eines allgemeinen Satzes grundlegender 32-Bit-Bibliotheken verwendet haben, können Sie es jetzt verwenden . Dies ist ein einfaches Metapaket, das von denselben (oder zumindest sehr ähnlichen) Bibliotheken abhängt, aber mit der Kraft von Multiarch installiert wird.ia32-libs-multiarch Installieren Sie ia32-libs-multiarch

Weitere verwandte Lesungen

1 Für Lucid (10,04) das ia32-libsPaket installiert Größe ist 155,812.0 kB.

gertvdijk
quelle
5
Ich empfehle dpkg --print-foreign-architectureseher zu laufen als zu catting /etc/dpkg/dpkg.cfg.d/multiarch. Es existiert nicht nach dem 12.04.
Tumbleweed
Ich habe gerade apt-mirror zu Hause eingerichtet und wollte nur das 64-Bit-Repo spiegeln. Es ist bedauerlich, dass ich das nicht kann, aber ich verstehe warum jetzt und es macht Sinn auf diese Weise. Antwort akzeptiert!
TGM4883
@ tgm4883 Sie können die Fremdarchitekturkonfiguration entfernen, wenn Sie wirklich amd64nur ausführen möchten . Es ist vergleichbar mit dem Ausführen eines älteren Ubuntu ohne ia32-libsverfügbar.
gertvdijk
1
Ich fing an zu lesen und in Gedanken hieß es: hmm sieht aus wie ein Post von gertvdijk: +) Goede Post;)
Rinzwind