Заплутано, чи не так? Дозвольте мені трохи пояснити.
Чому?
- 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
Подальші пов'язані читання
1 Для Lucid (10.04) розмір встановлення ia32-libs
пакета становить 155,812,0 кБ.
dpkg --print-foreign-architectures
а не котитися/etc/dpkg/dpkg.cfg.d/multiarch
. Його не існує після 12.04.