Dlaczego mój 64-bitowy system szuka repozytoriów 32-bitowych?

19

Mam 64-bitową wersję 12.10 na moim laptopie. Po uruchomieniu aktualizacji apt-get pobiera listy pakietów dla pakietów 32-bitowych (a także listy pakietów źródłowych i 64-bitowych). Dlaczego szuka 32-bitowych list pakietów w systemie 64-bitowym? Poniżej zamieściłem jeden z przedmiotów, które próbuje znaleźć.

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
tgm4883
źródło

Odpowiedzi:

28

Mylące, prawda? Pozwól mi trochę wyjaśnić.

Dlaczego?

  • Oprogramowanie 32-bitowe działa dobrze na 64-bitowym jądrze z 64-bitowym sprzętem.
  • Niektóre oprogramowanie nadal opiera się na określonych bibliotekach 32-bitowych. To nie jest miłe, ale czasami nie mamy siły, aby to zmienić.
  • Oprogramowanie 32-bitowe musi być dostępne dla systemu, aby zaspokoić zależności, dlatego też korzysta z repozytoriów 32-bitowych.

Jestem od początku 2011 roku. Co się stało?

W 64-bitowych wersjach Ubuntu wcześniejszych niż 11.10, niektóre wspólne biblioteki 32-bitowe były spakowane w jednym ia32-libspakiecie reprezentowanym dla APT / Dpkg jako 64-bit i w takiej lokalizacji w repozytorium. Jeśli potrzebujesz jednej biblioteki dla aplikacji, będzie to zależeć od ponad 150 MB 32-bitowych bibliotek 1 . Oczywiście nie jest to fajny projekt.

Wiele architektur?

Nowym pomysłem było wprowadzenie tak zwanych możliwości „Multiarch” do APT / Dpkg i otaczających go narzędzi. Zostało to przedstawione w kilku planach na Launchpad, oto jeden z nich . Oneiric (11.10) stał się pierwszym wydaniem obsługującym Multiarch.

Jak to działa?

Możesz powiedzieć Dpkg, jakie architektury może działać twój system. W mojej 64-bitowej instalacji 12.04 jest to tutaj:

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

Otwiera cały świat i386pakietów, przy amd64czym nadal jest domyślny:

$ 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

Powyższy przykład pokazuje, że Multiarch umożliwia opiekunom pakietów po prostu uzależnienie ich pakietów, na libqt4-core:i386przykład, i umożliwia zainstalowanie dowolnej 32-bitowej biblioteki / pakietu (a tym samym zainstalowanie dowolnego pakietu, który zależy od dowolnej 32-bitowej biblioteki / pakietu) , a nie wstępnie wybrany zestaw.

ia32-libs zgodność

Jeśli byłeś przyzwyczajony do zainstalowania ia32-libspakietu jako pakietu wygodnego do zainstalowania wspólnego zestawu podstawowych bibliotek 32-bitowych, możesz teraz użyć . Jest to prosty metapakiet w zależności od tego samego (lub przynajmniej bardzo podobnego) zestawu bibliotek, ale zostanie zainstalowany z mocą Multiarch.ia32-libs-multiarch Zainstaluj ia32-libs-multiarch

Dalsze powiązane odczyty

1 W przypadku Lucid (10.04) rozmiar instalacji ia32-libspakietu wynosi 155 812,0 kB.

gertvdijk
źródło
5
dpkg --print-foreign-architecturesRadzę raczej biegać niż catting /etc/dpkg/dpkg.cfg.d/multiarch. Nie istnieje po 12.04.
tumbleweed
Właśnie skonfigurowałem apt-mirror w domu i miałem nadzieję na lustrzane odbicie 64-bitowego repo. Szkoda, że ​​nie mogę tego zrobić, ale rozumiem, dlaczego teraz i ma to sens. Odpowiedź zaakceptowana!
tgm4883,
@ tgm4883 Możesz usunąć konfigurację architektury obcej, jeśli naprawdę chcesz amd64tylko uruchamiać . Jest podobny do uruchamiania starszego Ubuntu bez ia32-libsdostępnego.
gertvdijk
1
Zacząłem czytać i powiedziałem: hmm wygląda jak post z gertvdijk: +) Goede post;)
Rinzwind