Якесь тло
Так, ia32-libs
було застосовано обмежувальний розрив до того, як справжня мульти-арка була впроваджена - в основному, цей пакет містив лише купу 32-бітних версій деяких популярних бібліотек.
Що ти зараз робиш
Увімкнути архітектуру передбачень i386
у dpkg
:
dpkg --add-architecture i386
З’ясуйте, яких бібліотек хоче ця штука та встановіть відповідні 32-розрядні ( i386
) версії, наприклад
apt-get install libfooX.Y:i386
Але зверніть увагу на кілька нещасних речей:
Мульти-арка в Debian заснована на тому, що архівозалежні бібліотеки встановлюються в залежні від архіву каталоги, як /usr/lib/x86_64-linux-gnu
для рідних amd64
бібліотек і /usr/lib/i386-linux-gnu/
для тих самих i386
бібліотек в одній системі.
Проблема тут полягає в тому, що стороннє програмне забезпечення, яке не знає про багато архів, як реалізовано в 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
, вилучення та копіювання файлів і т.д.) , але він може працювати, тому що , врешті-решт, все бібліотеки волати до ядра з використанням системних дзвінків, і вони досить стабільні у всіх версіях ядра.