Що сталося з пакетом ia32-libs?


104

Чи не ia32-libsпакет більше не присутній в Ubuntu 12.04 репозиторіїв для 64 - бітної системи. Чи є доступні для завантаження запасні пакети?



2
+1, просто збирався задати абсолютно те саме питання. Так є дійсно чудові пропозиції щодо питань!
ulidtko

Відповіді:


97

Пакет ia32-libs був злом, щоб отримати 32-бітні пакети, встановлені на 64-бітній установці. З моменту Ubuntu версії 11.10 (Oneiric) додано Multi Arch . Однією з цілей для цього є видалення ia32-libsпакета. Натомість вам потрібно встановити 32-бітні бібліотеки пакету з:

sudo apt-get install package-name:i386

Вам не доведеться турбуватися про це для пакетів у стандартних сховищах (наприклад, wineпакет). Для зовнішнього програмного забезпечення це трохи складніше, тому що ви повинні знайти залежність вручну. У такому випадку за допомогою улюбленої пошукової системи ви знайдете, які бібліотеки вам потрібні.

Здається, що ia32-libs все ще існує, але лише як пакет зручності для включення загальних 32-бітних бібліотек. Цей пакет тепер використовує Multi Arch, щоб правильно встановити 32-бітні пакети.


17
Ну, як можна припустити, щоб знайти всі залежності і спочатку встановити: i386 з них?
користувач117

10
@wingman Виконати ldd, пропустивши шлях до двійкового як аргумент. Якщо висновок містить такий собі рядок libz.so.1 => not found, то вам потрібно знайти libz.so.1. Ви можете використовувати пакети.ubuntu.com або apt-file searchзнайти пакет, що містить цей файл. У прикладі, який я наводив, вам потрібно встановити zlib1g:i386.
Лекенштейн

1
я за комп'ютером з ubuntu 10.10. слідуючи деякому підручнику з розробки Android, мені доведеться встановити ia32-libs. ваша відповідь говоріть про 11.10, але для цього комп’ютера? що я маю робити?
nkint

1
@nkint 10.10 більше не підтримується. Якщо ви хочете продовжити, вам потрібно змінити джерела вашого пакета . У 10.10 вам потрібно встановити ia32-libs. Але навіть тоді немає гарантії, що андроїд SDK працює з цим.
Лекенштейн

1
@FelipeMicaroniLalli Вам потрібно замінити package-nameфактичне ім'я. Використовуйте, lddщоб зрозуміти, дивіться другий коментар вище.
Лекенштейн

43

Ubuntu 13.10

Що трапилось?

ia32-libsПакет був повністю замінений lib32z1 lib32ncurses5 lib32bz2-1.0. Це не повинно бути проблемою, оскільки його функціональність все ще є, лише в інших пакетах. Однак ми не живемо в ідеальному світі, де кожен підтримує свої пакунки, а все програмне забезпечення є FLOSS, тому деякі пакети все ще залежать від ia32-libs.

Як я можу встановити пакет x, що залежить від ia32-libs

Є два способи:

  1. Ви можете перепакувати його вручну, щоб це більше не залежало ia32-libs. (бажано)
  2. Ви можете встановити ia32-libs з сховища Ubuntu 13.04 (Raring Ringtail) ( зовсім не бажаний !, тільки якщо перший метод не працює )

1. Перепаковуйте старі пакети

Я буду використовувати приймач citrix як приклад, але ви можете використовувати цей метод для будь-якого пакета .deb:

По-перше, завантажте пакунок .deb від citrix з їхнього веб-сайту і зробіть тимчасовий каталог, щоб зробити злом.

mkdir ica_temp

Витягніть пакет

dpkg-deb -x icaclient_13.0.0.256735_amd64.deb ica_temp
dpkg-deb --control icaclient_13.0.0.256735_amd64.deb ica_temp/DEBIAN

Відкрийте файл у gedit (або улюбленому редакторі)

sudo -H gedit ica_temp/DEBIAN/control

Знайдіть рядок, який починається з Depends:.... видалити ia32-libsта додатиlib32z1 lib32ncurses5 lib32bz2-1.0

Відновіть модифікований пакет

dpkg -b ica_temp icaclient-modified.deb

І встановити його

sudo dpkg -i icaclient-modified.deb
sudo apt-get install -f

Встановлення приймача citrix теж вимагає певного злому. Повні інструкції з установки можна знайти на вікі Ubuntu

Ви можете це зробити з будь-яким старим пакетом .deb, який все ще залежить від ia32-libs.

2. Встановіть ia32-libs з репозиторію raring

Зверніть увагу, що це дуже погана практика встановлення старих пакетів! На жаль, для деяких інсталяторів бінарних файлів у вас немає іншого вибору.

Ви можете завантажити пакет ia32-libs з репозиторію raring . Завантажте його та встановіть його вручну, тоді залежності слід вирішити.


Що таке "FOS"? Я спробував: acronyms.thefreedictionary.com/FOS
Еліптичний вигляд

1
@Elipticalview "Безкоштовне та відкрите джерело". Змінено його на FLOSS (Free / Libre та програмне забезпечення з відкритим кодом), що є більш поширеним явищем.
Галгалеш

"Перепаковка старих пакетів" працює здебільшого для Ubuntu 16.04 Xenial - вам потрібно лише додати декілька адаптацій до імен пакетів, зазвичай додаючи простір імен ": i386" до кінця імен пакетів. Деякі пакунки теж мають різні назви, наприклад libbz2-1.0: i386
Christian Benke

6

Я читав, що ви повинні встановити ia32-libs-multiarchпакет замість цього. Однак це не спрацювало для мене, і я отримую цю помилку

ia32-libs-multiarch:i386 : Depends: libgphoto2-2:i386 but it is not going to be installed.

Для мене вирішило встановити такі пакети:

sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

Працює і для елементарної луни ОС
camelCaseD

4

Якщо ви отримаєте цю помилку, спробуйте:

sudo apt-get update

Потім спробуйте ще раз:

sudo apt-get install ia32-libs

Я щойно зробив нову установку 12.04, цей пакет все ще доступний у сховищах. Насправді я отримав цю помилку сам, перш ніж запустити оновлення. Згодом це спрацювало чудово.


1

Я вважаю, що цей конкретний випадок використання був замінений пакетами "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", що, мабуть, є більш конкретною та корисною відповіддю, ніж вимова "ви можете використовувати мульти-арку".


2
Що? У цьому питанні немає конкретного випадку використання.
gertvdijk

1
@gertvdijk: Сам пакет являє собою обмежене використання; для більш загальної мети ви можете мати багатосхилий архів, але для людей, які раніше використовували цей конкретний пакет, він, мабуть, був замінений на "lib32z1 lib32ncurses5 lib32bz2-1,0 lib32asound2", який можна встановити, не використовуючи багатоархів : охоплює ті ж випадки використання, що і попередній пакет. По суті, я вважав ці відповіді непомітними, оскільки багатокамерна арка була надмірна з тієї причини, що існувала ia32-libs, була здивована, що не було більш прямої заміни, і не розчарувалася, коли я вивчила це далі.
саурік

Це була найпростіша відповідь, яка вирішила подібну проблему і для мене. Навіть незважаючи на те, що вказані ліфти, здається, не мають нічого спільного з запуском загальної бінарної файли, вона працювала.
Пер Кнітт

-2

Я встановив ia32-libs так (я запускаю Ubuntu 13.04 Raring Ringtail на 64-бітній машині):

Перевірте власну архітектуру:

$ dpkg --print-architecture

Перевірте, чи встановлена ​​іноземна архітектура:

$ dpkg --print-foreign-architectures

Залежно від результатів двох вищевказаних команд, можуть працювати наступні три команди (у моєму випадку знадобилося тривалий час):

$ sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install ia32-libs

4
Я отримую:Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0
foobarbecue
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.