Почему моя 64-битная система ищет 32-битные репозитории?

19

У меня на ноутбуке установлена ​​64-битная версия 12.10. При запуске обновления apt-get он загружает списки пакетов для 32-битных пакетов (а также исходные и 64-битные списки пакетов). Почему он ищет 32-битные списки пакетов в 64-битной системе? Я включил один из пунктов, которые он пытается найти ниже.

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
tgm4883
источник

Ответы:

28

Не так ли? Позвольте мне объяснить немного.

Почему?

  • 32-разрядное программное обеспечение отлично работает на 64-разрядном ядре с 64-разрядным оборудованием.
  • Некоторое программное обеспечение по-прежнему зависит от конкретных 32-разрядных библиотек. Это нехорошо, но иногда мы не можем изменить это.
  • Для удовлетворения зависимостей в системе должно быть доступно 32-разрядное программное обеспечение, поэтому оно также использует 32-разрядные репозитории.

Я с начала 2011 года. Что случилось?

В 64-разрядных версиях Ubuntu до 11.10 некоторые общие 32-разрядные библиотеки были упакованы в один ia32-libsпакет, представленный APT / Dpkg как 64-разрядный и расположенный в таком месте в хранилище. Если вам понадобится одна библиотека для приложения, это будет зависеть от 150+ МБ 32-битных библиотек 1 . Понятно, что это не очень хороший дизайн.

Несколько архитектур?

Новая идея состояла в том, чтобы представить так называемые возможности «Multiarch» для APT / Dpkg и инструментов вокруг него. Это было представлено в нескольких чертежах на Launchpad, вот один из них . Oneiric (11.10) стал первым выпуском, который поддерживал Multiarch.

Как это работает?

Вы можете указать Dpkg, на какую архитектуру может работать ваша система. На моей 12.04 64-битной установке это здесь:

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

Он открывает целый мир i386пакетов, по- amd64прежнему оставаясь по умолчанию:

$ 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

Вышеприведенный пример показывает, что Multiarch позволяет сопровождающим пакетов, libqt4-core:i386например, просто зависеть от их пакетов и дает возможность установить любую 32-битную библиотеку / пакет (и, таким образом, установить любой пакет, который зависит от любой 32-битной библиотеки / пакета). , а не заранее выбранный набор.

ia32-libs совместимость

Если вы привыкли устанавливать ia32-libsпакет как удобный пакет для установки общего набора базовых 32-битных библиотек, теперь вы можете использовать его . Это простой метапакет, зависящий от того же (или, по крайней мере, очень похожего) набора библиотек, но он будет установлен с поддержкой Multiarch.ia32-libs-multiarch Установите ia32-libs-multiarch

Дальнейшие связанные чтения

1 Для Lucid (10.04) размер ia32-libsпакета установки составляет 155 812,0 кБ.

gertvdijk
источник
5
Я рекомендую бегать, dpkg --print-foreign-architecturesа не кататься /etc/dpkg/dpkg.cfg.d/multiarch. Это не существует после 12.04.
перекати
Я только что установил apt-mirror у себя дома и надеялся просто отразить 64-битное хранилище. К сожалению, я не могу этого сделать, но я понимаю, почему сейчас, и это имеет смысл таким образом. Ответ принят!
tgm4883
@ tgm4883 Вы можете удалить конфигурацию сторонней архитектуры, если вы действительно хотите работать amd64только. Это похоже на запуск более старой Ubuntu без ia32-libsдоступа.
gertvdijk
1
Я начал читать, и, по-моему, он сказал: хммм похоже на пост от gertvdijk: +) пост Goede;)
Rinzwind