Alguns antecedentes
Sim, ia32-libs
foi uma medida paliativa antes de o multi-arch true ter sido implementado - basicamente, esse pacote continha apenas um monte de versões de 32 bits de algumas bibliotecas populares.
O que você faz agora é
-
Ativar a arquitetura foregin
i386
indpkg
:dpkg --add-architecture i386
-
Descobrir quais bibliotecas essa coisa quer e instalar suas versões apropriadas de 32 bits (
i386
), comoapt-get install libfooX.Y:i386
Mas anote algumas coisas infelizes:
-
O multi-arch no Debian é baseado no fato de que bibliotecas dependentes de arco são instaladas em diretórios dependentes de arco, como
/usr/lib/x86_64-linux-gnu
para bibliotecasamd64
nativas e/usr/lib/i386-linux-gnu/
para o mesmoi386
bibliotecas no mesmo sistema.O problema aqui é que o software de terceiros que não tem conhecimento de multi-arch, conforme implementado no Debian, normalmente espera encontrar bibliotecas que dependem do uso de nomes comuns como
/usr/lib/libfoo.so.X.Y.Z
, que é simplesmente não é o caso de versões recentes do Debian.Isso poderia ser resolvido com o symlinking ou
LD_PRELOAD
ou com o carregador dinâmico usando outras formas (por exemplo, usando um arquivo de cache alternativo em vez de/etc/ld.so.cache
, contendo referências a bibliotecas instaladas em outro lugar), mas veja próximo ponto. -
O trabalho em versões compatíveis com Linux do Adobe Air foi interrompido por um longo tempo, o IIRC, então o último blob do Adobe Air pode depender de versões obsoletas de bibliotecas não presentes em versões recentes do Debian. E bibliotecas mais recentes significam alterações API / ABI, e estas não são solucionáveis usando links simbólicos.
Possível solução
Se me livrar dessa abominação da Adobe é impossível, eu possivelmente tentaria confiar no fato da API / ABI do kernel do kernel ser bastante estável e tentar criar um chroot ou LXC ambiente especificamente para executar este blob usando bibliotecas retiradas de qualquer sistema operacional alegava ser compatível com ele.
Basicamente, para o chroot, você precisa criar um diretório contendo um conjunto mínimo de bibliotecas (e pode haver alguns binários, como /bin/bash
) com nomes conhecidos (como /usr/lib/libfoo.so
).
Esta não é exatamente uma maneira fácil (você vai precisar de muitas rodadas de tentativa e erro, armada com readelf
, ldd
, extraindo e copiando arquivos, etc.), mas pode dar certo porque no final , todas as bibliotecas chamam o kernel usando syscalls, e elas são bastante estáveis em versões do kernel.