Чому моя 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

Відповіді:


28

Заплутано, чи не так? Дозвольте мені трохи пояснити.

Чому?

  • 32-бітове програмне забезпечення працює на 64-бітному ядрі з 64-бітним обладнанням.
  • Деякі програми все ще покладаються на певні 32-бітні бібліотеки. Це не приємно, але іноді ми не маємо сили це змінити.
  • 32-бітне програмне забезпечення повинно бути доступне системі для задоволення залежностей, тому воно також використовує 32-бітні сховища.

Я з початку 2011 року. Що сталося?

У 64-бітових версіях Ubuntu до 11.10 деякий набір загальних 32-бітних бібліотек було упаковано в один ia32-libsпакет, представлений APT / Dpkg як 64-розрядний і в такому місці в сховищі. Якщо вам потрібна одна бібліотека для програми, це залежатиме від 150+ МБ 32-бітних бібліотек 1 . Ясна річ, це не гарний дизайн.

Кілька архітектур?

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

Як це працює?

Ви можете сказати Dpkg, які архітектури може працювати ваша система. У моєму 64-розрядному встановленні 12.04 це:

$ 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 кБ.


5
Я рекомендую бігати, dpkg --print-foreign-architecturesа не котитися /etc/dpkg/dpkg.cfg.d/multiarch. Його не існує після 12.04.
перекотиполе

Я щойно налаштував влучне дзеркало вдома і сподівався просто віддзеркалити 64-бітове репо. Прикро, що я не можу цього зробити, але я розумію, чому зараз це має сенс. Відповідь прийнято!
tgm4883

@ tgm4883 Ви можете видалити конфігурацію зовнішньої архітектури, якщо дійсно хочете запускатись amd64. Це схоже на роботу зі старшим Ubuntu без ia32-libsнаявних.
gertvdijk

1
Я почав читати, і в моїй думці це сказало: hmm виглядає як допис від gertvdijk: +) Goede post;)
Rinzwind
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.