5

Я пытаюсь установить Adobe Air (необходим для макетов Balsamiq), и когда я пытаюсь запустить установщик, я получаю:

sudo: unable to execute ./AdobeAIRInstaller.bin: No such file or directory

Я позаботился о том, чтобы файл был исполняемым, и, покинув Google, кажется, что попытка запустить 32-битный исполняемый файл в 64-битной системе сделает это. На данный момент все рекомендуют устанавливать ia32-libs, однако этого пакета больше нет в Debian Jessie (кажется, они рефакторировали поддержку multiarch).

Что мне нужно сделать? установлена поддержка multiarch, есть что-то еще?

1 ответ1

4

Некоторый фон

Да, ia32-libs был мерилом остановки до того, как был реализован настоящий multi-arch - в основном, этот пакет просто содержал набор 32-битных версий некоторых популярных библиотек.

Что вы делаете сейчас

  1. Включить предустановленную архитектуру i386 в dpkg:

    dpkg --add-architecture i386
    
  2. Выясните, какие библиотеки хочет эта штуковина, и установите соответствующие 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 , извлечением и копированием файлов и т.д.), Но это может сработать, потому что в конце все библиотеки обращаются к ядро использует системные вызовы, и они довольно стабильны во всех выпусках ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .