Что случилось с пакетом 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 из них?
user117

10
@wingman Выполнить ldd, передав путь к двоичному файлу в качестве аргумента. Если вывод содержит строку типа libz.so.1 => not found, то вам нужно найти libz.so.1. Вы можете использовать packages.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. Но даже тогда нет никакой гарантии, что Android SDK работает с этим.
Лекенштейн

1
@FelipeMicaroniLalli Вам нужно заменить package-nameна фактическое имя. Используйте, lddчтобы выяснить, см. Второй комментарий выше.
Лекенстейн

43

Ubuntu 13.10

Что случилось?

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

Как я могу установить пакет x, который зависит от ia32-libs

Есть 2 способа:

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

1. Упакуйте старые пакеты

Я буду использовать приемник citrix в качестве примера, но вы можете использовать этот метод для любого пакета .deb:

Во-первых, скачайте пакет приемника Citrix .deb с их веб-сайта и создайте временный каталог для взлома.

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 Wiki

Вы можете сделать это с любым старым пакетом .deb, который все еще зависит от ia32-libs.

2. Установите ia32-libs из репозитория raring

Обратите внимание, что установка старых пакетов - очень плохая практика! К сожалению, для некоторых бинарных инсталляторов у вас нет другого выбора.

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


Что такое "ФОС"? Я пробовал: acronyms.thefreedictionary.com/FOS
эллиптический вид

1
@Elipticalview "Свободный и открытый исходный код". Изменил его на FLOSS (Free / Libre и программное обеспечение с открытым исходным кодом), что более распространено.
Галгалеш

«Переупаковка старых пакетов» работает в основном для Ubuntu 16.04 Xenial - вам просто нужно добавить несколько адаптаций к именам пакетов, обычно добавляя пространство имен «: i386» в конец имен пакетов. Некоторые из пакетов также имеют разные имена, например libbz2-1.0: i386
Кристиан Бенке

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

Работает и для элементарной ОС luna
camelCaseD

4

Если вы получили эту ошибку, попробуйте:

sudo apt-get update

Тогда попробуйте еще раз:

sudo apt-get install ia32-libs

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


1

Я считаю, что этот конкретный вариант использования был заменен пакетами "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", что, вероятно, является более конкретным и полезным ответом, чем высказывание "вы можете использовать multi-arch".


2
Какая? В этом вопросе нет конкретного варианта использования.
gertvdijk

1
@gertvdijk: сам пакет представляет собой ограниченный вариант использования; для более общего назначения вы можете использовать multi-arch, но для людей, которые ранее использовали этот конкретный пакет, его, похоже, заменили на «lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2», который можно установить без использования multi-arch : охватывает те же варианты использования, что и предыдущий пакет. По сути, я нашел эти ответы бесполезными, так как multi-arch был излишним по той причине, что ia32-libs существовал, был удивлен, что не было более прямой замены, и не был разочарован, когда я исследовал это дальше.
Саурик

Это был самый простой ответ, который решил подобную проблему для меня. Хотя указанные библиотеки, похоже, не имеют ничего общего с запуском общего бинарного файла, он сработал.
за Knytt

-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
foo barbecue
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.