64-bit Debian Jessie ile 32-bit bir çalıştırılabilir çalıştırma


5

Adobe Air'i yüklemeye çalışıyorum (Balsamiq Mockups için gerekli) ve yükleyiciyi çalıştırmaya çalıştığımda şunu alıyorum:

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

Dosyanın çalıştırılabilir olduğundan emin oldum ve etrafından dolanıp, 64-bit bir sistemde 32-bit bir yürütülebilir dosyayı çalıştırmaya çalışmak öyle olacak gibi görünüyor. Bu noktada herkesin yeniden birleşmesi, ia32-lib'leri yüklemek gibi görünüyor, ancak bu paket artık Debian Jessie'de değil (çoklu-ark desteğini yeniden yapılandırdılar, öyle görünüyor).

Ne yapmaya ihtiyacım var? multiarch desteği kurulur, başka bir şey var mı?

Yanıtlar:


4

Bazı arka plan

Evet, ia32-libsgerçek multi-arch uygulanmadan önce durmaksızın bir önlemdi - temel olarak, bu paket bazı popüler kütüphanelerin sadece 32-bit sürümlerini içeriyordu .

Şimdi ne yapıyorsun

  1. Foregin mimarisini etkinleştirme i386 içinde dpkg:

    dpkg --add-architecture i386
    
  2. Bu şeyin istediği kitaplıkları bulmak ve uygun 32-bit ( i386) sürümlerini yüklemek gibi

    apt-get install libfooX.Y:i386
    

Ancak bazı talihsiz şeyleri not edin:

  • Debian'daki çoklu kemer, kemer bağımlı kitaplıkların, /usr/lib/x86_64-linux-gnuyerli amd64kütüphaneler ve aynı sistemdeki aynı kütüphaneler /usr/lib/i386-linux-gnu/için olduğu gibi, kemer bağımlı dizinlere kurulmasına dayanır i386.

    Buradaki sorun, Debian'da uygulandığı şekliyle çoklu-arşivden habersiz olan üçüncü parti yazılımın, tipik olarak /usr/lib/libfoo.so.X.Y.Z, son zamanlarda Debian'da olduğu gibi , iyi bilinen bir isim kullanmayacağına dair kütüphaneler bulmayı beklemesidir. sürümleri.

    Bu, LD_PRELOADbaşka yollarla (örneğin, /etc/ld.so.cachebaşka bir yerde kurulu kütüphanelere referanslar içermek yerine alternatif bir önbellek dosyası kullanmasını sağlamak gibi) başka bir yol kullanarak bağlantı kurarak veya veya dinamik yükleyiciyle karışarak çözülebilir, ancak bir sonraki noktaya bakın.

  • Linux uyumlu Adobe Air sürümleri üzerinde yapılan çalışmalar oldukça uzun bir süredir IIRC'de durdurulmuştu, bu nedenle en yeni Adobe Air blob'u Debian'ın son sürümlerinde bulunmayan oldukça eski kütüphanelerin sürümlerine bağlı olabilir. Ve daha yeni kütüphaneler API / ABI değişiklikleri anlamına gelir ve bunlar sembolik bağlantılar kullanılarak çözülemez.

Olası çözüm

Bu Adobe abominasyonundan kurtulmak imkansızsa, Linux çekirdeğinin API / ABI'sinin oldukça istikrarlı olduğuna ve özellikle bu blob'u çalıştırmak için herhangi bir işletim sisteminden alınan kütüphaneleri kullanarak çalıştırmak için chroot veya LXC ortamı yaratmaya çalışacağım . onunla uyumlu olmak.

Temel olarak, chroot için /bin/bashiyi bilinen isimlerle (gibi /usr/lib/libfoo.so) en az sayıda kütüphaneyi (ve bazı ikili dosyalar gibi ) içeren bir dizin oluşturmanız gerekir .

Bu tam kolay bir yolu (eğer silahlı, deneme-yanılma mermi bir sürü gerekir değil readelf, ldd, ayıklanması ve vb dosya kopyalama) ama bunun nedeni sonunda işe yarayabilir, bütün kütüphaneleri çekirdeğe sesleniyorum Syscalls kullanarak ve bunlar çekirdek bültenleri arasında oldukça kararlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.