+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-битных пакетов.
Ну, как можно найти все зависимости и сначала установить: 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 способа:
Вы можете упаковать его вручную, чтобы он больше не зависел ia32-libs. (предпочтительный)
Вы можете установить ia32-libs из репозитория Ubuntu 13.04 (Raring Ringtail) ( совсем не желательно !, только если первый метод не работает )
1. Упакуйте старые пакеты
Я буду использовать приемник citrix в качестве примера, но вы можете использовать этот метод для любого пакета .deb:
Во-первых, скачайте пакет приемника Citrix .deb с их веб-сайта и создайте временный каталог для взлома.
@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.
Решение, которое работало для меня, состояло в том, чтобы установить следующие пакеты:
Я только что сделал новую установку 12.04, этот пакет все еще доступен в репозиториях. На самом деле, я получил эту ошибку сам, прежде чем запустить обновление. После этого все работало нормально.
Я считаю, что этот конкретный вариант использования был заменен пакетами "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", что, вероятно, является более конкретным и полезным ответом, чем высказывание "вы можете использовать multi-arch".
Какая? В этом вопросе нет конкретного варианта использования.
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
В зависимости от результатов двух приведенных выше команд, следующие три команды могут работать (в моем случае это заняло много времени):
Я получаю: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
Ответы:
Пакет ia32-libs был хаком для установки 32-битных пакетов на 64-битной установке. Начиная с версии Ubuntu 11.10 (Oneiric), была добавлена Multi Arch . Одной из целей для этого является удаление
ia32-libs
пакета. Вместо этого вам нужно установить 32-битные библиотеки пакета с:Вам не нужно беспокоиться об этом для пакетов в стандартных репозиториях (например, в
wine
пакете). Для внешнего программного обеспечения это немного сложнее, потому что вы должны найти зависимости вручную. В этом случае используйте ваш любимый поисковик, чтобы найти, какие библиотеки вам нужны.Кажется, что ia32-libs все еще существуют, но просто в качестве удобного пакета для включения общих 32-битных библиотек. Этот пакет теперь использует Multi Arch для правильной установки 32-битных пакетов.
источник
ldd
, передав путь к двоичному файлу в качестве аргумента. Если вывод содержит строку типаlibz.so.1 => not found
, то вам нужно найтиlibz.so.1
. Вы можете использовать packages.ubuntu.com илиapt-file search
найти пакет, содержащий этот файл. В приведенном мной примере вам необходимо установитьzlib1g:i386
.package-name
на фактическое имя. Используйте,ldd
чтобы выяснить, см. Второй комментарий выше.Ubuntu 13.10
Что случилось?
ia32-libs
Пакет был полностью замененlib32z1 lib32ncurses5 lib32bz2-1.0
. Это не должно быть проблемой, потому что его функциональность все еще там, просто в других пакетах. Однако мы не живем в идеальном мире, где все поддерживают свои пакеты, а все программное обеспечение является FLOSS, поэтому некоторые пакеты по-прежнему зависят от ia32-libs.Как я могу установить пакет x, который зависит от ia32-libs
Есть 2 способа:
ia32-libs
. (предпочтительный)1. Упакуйте старые пакеты
Я буду использовать приемник citrix в качестве примера, но вы можете использовать этот метод для любого пакета .deb:
Во-первых, скачайте пакет приемника Citrix .deb с их веб-сайта и создайте временный каталог для взлома.
Извлечь пакет
Откройте файл в gedit (или в вашем любимом редакторе)
Найдите строку, которая начинается с
Depends:...
. удалитьia32-libs
и добавитьlib32z1 lib32ncurses5 lib32bz2-1.0
Перестройте модифицированный пакет
И установить его
Установка ресивера Citrix также требует некоторого взлома. Вы можете найти полную инструкцию по установке в Ubuntu Wiki
Вы можете сделать это с любым старым пакетом .deb, который все еще зависит от ia32-libs.
2. Установите ia32-libs из репозитория raring
Обратите внимание, что установка старых пакетов - очень плохая практика! К сожалению, для некоторых бинарных инсталляторов у вас нет другого выбора.
Вы можете скачать пакет ia32-libs из репозитория raring . Загрузите его и установите вручную, тогда зависимости должны быть устранены.
источник
Я прочитал, что вы должны
ia32-libs-multiarch
вместо этого установить пакет. Однако это не сработало для меня, и я получаю эту ошибкуРешение, которое работало для меня, состояло в том, чтобы установить следующие пакеты:
источник
Если вы получили эту ошибку, попробуйте:
Тогда попробуйте еще раз:
Я только что сделал новую установку 12.04, этот пакет все еще доступен в репозиториях. На самом деле, я получил эту ошибку сам, прежде чем запустить обновление. После этого все работало нормально.
источник
Я считаю, что этот конкретный вариант использования был заменен пакетами "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", что, вероятно, является более конкретным и полезным ответом, чем высказывание "вы можете использовать multi-arch".
источник
Я установил ia32-libs следующим образом (я запускаю Ubuntu 13.04 Raring Ringtail на 64-битной машине):
Проверьте собственную архитектуру:
Проверьте, установлена ли сторонняя архитектура:
В зависимости от результатов двух приведенных выше команд, следующие три команды могут работать (в моем случае это заняло много времени):
источник
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