Некоторый фон
Да, ia32-libs
был мерилом остановки до того, как был реализован настоящий multi-arch - в основном, этот пакет просто содержал набор 32-битных версий некоторых популярных библиотек.
Что вы делаете сейчас
Включить предустановленную архитектуру i386
в dpkg
:
dpkg --add-architecture i386
Выясните, какие библиотеки хочет эта штуковина, и установите соответствующие 32-битные (i386
) версии, например
apt-get install libfooX.Y:i386
Но обратите внимание на несколько неприятных вещей:
Multi-arch в Debian основан на том факте, что зависимые от arch библиотеки установлены в зависимые от arch каталоги, например, /usr/lib/x86_64-linux-gnu
для нативных библиотек amd64
и /usr/lib/i386-linux-gnu/
для те же библиотеки i386
в той же системе.
Проблема здесь в том, что стороннее программное обеспечение, которое не знает о multi-arch, как это реализовано в Debian, обычно ожидает найти библиотеки, от которых зависит использование таких хорошо известных имен, как /usr/lib/libfoo.so.X.Y.Z
, чего не скажешь о последних версиях Debian.
Эту проблему можно решить с помощью символической ссылки или LD_PRELOAD
или работы с динамическим загрузчиком другими способами (например, заставить его использовать альтернативный файл кэша вместо /etc/ld.so.cache
, содержащий ссылки на библиотеки, установленные в других местах), но см. Следующая точка
Работа над Linux-совместимыми версиями Adobe Air была приостановлена довольно давно, IIRC, поэтому последний блоб Adobe Air может зависеть от довольно устаревших версий библиотек, отсутствующих в последних версиях Debian. Более поздние библиотеки означают изменения API/ABI, и они не могут быть решены с помощью символических ссылок.
Возможное решение
Если избавиться от этой мерзости Adobe невозможно, я, возможно, попытался бы полагаться на тот факт, что API/ABI ядра Linux достаточно стабилен, и попытаться создать среду chroot или LXC специально для запуска этого большого двоичного объекта с использованием библиотек, извлеченных из любой ОС, заявленной для быть совместимым с этим.
По сути, для chroot вам нужно создать каталог, содержащий минимальный набор библиотек (и может быть несколько двоичных файлов, таких как /bin/bash
) с хорошо известными именами (например, /usr/lib/libfoo.so
).
Это не совсем простой способ (вам понадобится много циклов проб и ошибок, вооруженных readelf
, ldd
, извлечением и копированием файлов и т.д.), Но это может сработать, потому что в конце все библиотеки обращаются к ядро использует системные вызовы, и они довольно стабильны во всех выпусках ядра.