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

18

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

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
    
задан tgm4883 09.01.2013 в 07:22
источник

1 ответ

28

Смущает, не так ли? Позвольте мне немного пояснить.

Почему?

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

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

В 64-битных версиях Ubuntu до 11.10 набор стандартных 32-разрядных библиотек был упакован в один% пакет co_de%, представленный APT / Dpkg, как 64-разрядный и в таком месте в репозитории. Если вам понадобится одна библиотека для приложения, она будет зависеть от 150-битных 32-битных библиотек 1 . Ясно, что это не приятный дизайн.

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

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

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

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

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

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

$ 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 позволяет сторонним разработчикам пакетов просто сделать свои пакеты зависимыми от amd64 , например, и позволяет установить 32-битную библиотеку / пакет any (и, следовательно, установить любой пакет, который зависит от от любой 32-битной библиотеки / пакета), а не от предварительно выбранного набора.

libqt4-core:i386 совместимость

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

Другие связанные чтения

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

    
ответ дан gertvdijk 09.01.2013 в 10:26
источник