32-bit bir programı Ubuntu'nun 64-bit bir sürümünde nasıl çalıştırıyorsunuz?


41

Ubuntu 13.10'un 64 bit sürümüne sahibim. Bir programın 32 bit sürümünü çalıştırmak istiyorum. Ancak görüyorum ia32-libski 13.10'a dahil edilmedi. Bunun için yeni bir paket var mı?



@bain Bu bir kopya değil. Bu soru genel durumlar hakkında, bu da daha eski ve daha iyi bir soru olduğundan bahsetmiyorum bile, özel bir mesele.
Seth

Ve Braiam'in cevabı muhteşem ! bu yüzden eğer herhangi bir yere kopyalanacaksa birleştirilmeli.
Mateo,

Yanıtlar:


30

ia32-libsArtık pakete ihtiyaç duyulmuyor (tam olarak 12.04'ten beri), APT sistemini kullanıyorsanız, 64 bit bir sistemde 32 bit paketleri kurmak konusunda endişelenecek bir şey yok. Bu , Debian'ın bağımlılıklarını yönetme biçiminde en çok oyun değiştiren politikalardan biri olan multiarch'ın tanıtılmasından bu yana oldu . Bu yöntem, aynı sistemde çekirdek mimarisine bakılmaksızın farklı ikili hedeflere sahip olmanıza izin verir. Bu, herhangi bir 32 bitlik paketi hazırlıksız çalıştırabileceğiniz anlamına gelmez, ancak kitaplıkları / ikili dosyaları kurarsanız teorik olarak herhangi bir uygulamayı çalıştırabilmeniz gerekir. Bu 64 bit ile 32 bit arasında geçerlidir ve bunun tersi de geçerlidir.

görüntü tanımını buraya girin

Bu tür bir yöntemi kullanmak için, karşılanmayan bağımlılıkları önlemek için APT yöneticileri kullanılması önerilir. Changelog , değişikliklerin nasıl yapıldığına dair küçük bir geçmiş içeriyor:

  1. Kesin olarak, paket boşaltılmış ve geçici bir paket haline getirilmiştir . Çok bölgeye taşınmamış paketlere karşı birkaç bağımlılık eklendi.
  2. Yavaş ama kesin olarak, tüm paketler multiarch desteğiyle yeniden inşa edildi ve ters bağımlılıklar düşürüldü veya ia32-lib-multi-arch olarak değiştirildi. Tez paketleri, ia34-libs paketlerine ihtiyaç duymadığında, bağımlılıklar aynı anda düştü. Bağımlılıklar değiştirilirse ia32-libsiçin package:archolmak packagegerekli kütüphanenin adını ve arch(skype ile örnek var aşağıda) mimarisi.
  3. İle son sürümdeia32-libs-multiarch paket ön can atıyor bültenleri çıkarıldı ve ia32-libsşımarık için basılana yoktur. Tüm Ubuntu paketleri çok işlevlidir ve sisteminize farklı mimari paketler yükleyebilirsiniz.

Şimdi, 32 bit ikili dosyaya ihtiyaç duyan bir paketi kurarken, dikkat etmezseniz, 32-bit bir paket kullandığınızı asla bilemezsiniz, çünkü paket yöneticisi gerekli bağımlılıkları otomatik olarak çekecektir:

sudo apt-get --no-install-recommends -q -y install skype
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libaudio2:i386 libjbig0:i386 liblcms1:i386 libmng1:i386 libqt4-dbus:i386 libqt4-declarative:i386
  libqt4-network:i386 libqt4-opengl:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libssl1.0.0:i386 libtiff5:i386
  libxss1:i386 libxv1:i386 skype-bin:i386
Suggested packages:
  nas:i386 liblcms-utils:i386 libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386
  libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libthai0:i386 libicu48:i386 qt4-qtconfig:i386
Recommended packages:
  libqt4-sql-mysql:i386 libqt4-sql-odbc:i386 libqt4-sql-psql:i386 libqt4-sql-sqlite:i386 libcups2:i386
  sni-qt:i386 libasound2-plugins:i386
The following NEW packages will be installed:
  libaudio2:i386 libjbig0:i386 liblcms1:i386 libmng1:i386 libqt4-dbus:i386 libqt4-declarative:i386
  libqt4-network:i386 libqt4-opengl:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libssl1.0.0:i386 libtiff5:i386
  libxss1:i386 libxv1:i386 skype skype-bin:i386
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.9 MB/38.2 MB of archives.
After this operation, 118 MB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package libssl1.0.0:i386.
(Reading database ... 208485 files and directories currently installed.)
Unpacking libssl1.0.0:i386 (from .../libssl1.0.0_1.0.1c-4ubuntu8.1_i386.deb) ...
Selecting previously unselected package libaudio2:i386.
Unpacking libaudio2:i386 (from .../libaudio2_1.9.3-5ubuntu0.13.04.1_i386.deb) ...
Selecting previously unselected package liblcms1:i386.
Unpacking liblcms1:i386 (from .../liblcms1_1.19.dfsg-1.2ubuntu2_i386.deb) ...
Selecting previously unselected package libmng1:i386.
Unpacking libmng1:i386 (from .../libmng1_1.0.10-3build1_i386.deb) ...
Selecting previously unselected package libqtcore4:i386.
Unpacking libqtcore4:i386 (from .../libqtcore4_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-xml:i386.
Unpacking libqt4-xml:i386 (from .../libqt4-xml_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-dbus:i386.
Unpacking libqt4-dbus:i386 (from .../libqt4-dbus_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-network:i386.
Unpacking libqt4-network:i386 (from .../libqt4-network_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-script:i386.
Unpacking libqt4-script:i386 (from .../libqt4-script_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-sql:i386.
Unpacking libqt4-sql:i386 (from .../libqt4-sql_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-xmlpatterns:i386.
Unpacking libqt4-xmlpatterns:i386 (from .../libqt4-xmlpatterns_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libjbig0:i386.
Unpacking libjbig0:i386 (from .../libjbig0_2.0-2ubuntu1_i386.deb) ...
Selecting previously unselected package libtiff5:i386.
Unpacking libtiff5:i386 (from .../libtiff5_4.0.2-4ubuntu2.1_i386.deb) ...
Selecting previously unselected package libqtgui4:i386.
Unpacking libqtgui4:i386 (from .../libqtgui4_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-declarative:i386.
Unpacking libqt4-declarative:i386 (from .../libqt4-declarative_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-opengl:i386.
Unpacking libqt4-opengl:i386 (from .../libqt4-opengl_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqtwebkit4:i386.
Unpacking libqtwebkit4:i386 (from .../libqtwebkit4_2.3.0-0ubuntu2_i386.deb) ...
Selecting previously unselected package libxss1:i386.
Unpacking libxss1:i386 (from .../libxss1_1%3a1.2.2-1_i386.deb) ...
Selecting previously unselected package libxv1:i386.
Unpacking libxv1:i386 (from .../libxv1_2%3a1.0.7-1ubuntu0.13.04.1_i386.deb) ...
Selecting previously unselected package skype-bin.
Unpacking skype-bin (from .../skype-bin_4.2.0.11-0ubuntu0.12.04.2_i386.deb) ...
Selecting previously unselected package skype.
Unpacking skype (from .../skype_4.2.0.11-0ubuntu0.12.04.2_amd64.deb) ...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Processing triggers for hicolor-icon-theme ...
Setting up libssl1.0.0:i386 (1.0.1c-4ubuntu8.1) ...
Setting up libaudio2:i386 (1.9.3-5ubuntu0.13.04.1) ...
Setting up liblcms1:i386 (1.19.dfsg-1.2ubuntu2) ...
Setting up libmng1:i386 (1.0.10-3build1) ...
Setting up libqtcore4:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-xml:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-dbus:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-network:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-script:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-sql:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-xmlpatterns:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libjbig0:i386 (2.0-2ubuntu1) ...
Setting up libtiff5:i386 (4.0.2-4ubuntu2.1) ...
Setting up libxss1:i386 (1:1.2.2-1) ...
Setting up libxv1:i386 (2:1.0.7-1ubuntu0.13.04.1) ...
Setting up libqtgui4:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-declarative:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-opengl:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqtwebkit4:i386 (2.3.0-0ubuntu2) ...
Setting up skype-bin (4.2.0.11-0ubuntu0.12.04.2) ...
Setting up skype (4.2.0.11-0ubuntu0.12.04.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

Skype'ın bir i386 paketi olduğuna dikkat edin. Bunu kurmak için apt-get kullanırsam, daha sonra başım ağrır.

Ancak bazı insanlar .debpaketleri kullanmayı tercih ediyor , sonra biraz dalaşabileceği için kendinizi güçlendirin. Tüm bağımlılıkları elden önce el ile kurmalısınız, böylece sisteminiz karşılanmamış bağımlılıklar ile bitmez. Yardımcı olacak bir komut dpkg-deb -Ipaketin bilgisini gösterdiği için:

dpkg-deb -I zynaddsubfx-dssi_2.4.3-3_amd64.deb 
 new debian package, version 2.0.
 size 266936 bytes: control archive=845 bytes.
     917 bytes,    19 lines      control              
     232 bytes,     3 lines      md5sums              
 Package: zynaddsubfx-dssi
 Source: zynaddsubfx
 Version: 2.4.3-3
 Architecture: amd64
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Original-Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org>
 Installed-Size: 633
 Depends: libasound2 (>= 1.0.16), libc6 (>= 2.15), libgcc1 (>= 1:4.1.1), libjack-jackd2-0 (>= 1.9.5~dfsg-14) | libjack-0.116, libmxml1, libstdc++6 (>= 4.6), zlib1g (>= 1:1.1.4)
[...]

Görebildiğiniz gibi, bağımlılıkları listeler, bu yüzden sadece sudo apt-get installonlara ve sonra sahip olmalısınız sudo dpkg -i. Yine, onları indirmek yerine depolardan yazılım yüklemeyi ve el ile yüklemeyi tercih edin dpkg -i.

Şimdi, sizinki gelişimse, apt-getsözdizimini kullanarak herhangi bir kitaplığı yükleyebilirsiniz . Sadece :i386indirmek istediğiniz ve yaptığınız kütüphaneye ekleyin . Yazılımı depolardan yüklerseniz, bunu manuel olarak yapmanız gerekmez.

Alt satır: Hayır, ia32-libspaketleri depolardan yüklerseniz daha da iyi yüklerseniz, yüklemeden 32 bit paketleri çalıştırabilirsiniz . Geliştirme aşamasındaysanız, her zaman APT sistemini kullanmaya çalışın.


İa32-libs paketinin kurulu olup olmadığını kontrol eden bir .bin yükleyicisi ile ne yapabilirim? Bildiğim kadarıyla, doğru bağımlılıkları manuel olarak kursam bile, .a hala yüklenemedi çünkü ia32-libs paketini arıyor. İa32-libs'nin kurulduğunu düşünmek için yükleyiciyi "kandırmanın" bir yolu var mı?
Galgalesh

1
@Galgalesh, sahibine eşyalarını düzeltmesini rica eder, geçmişte kaldılar.
Braiam

İa32-lib'leri kaldırmanın tek sorunu, 32 bit windows programlarını çalıştırmak için 32 bit kitaplıkları kullanmaya çalışan PlayOnLinux gibi programlara sahip olmanızdır. O zaman bu uyumsuzlukta geriye doğru bir kırılmadır.
AlexLordThorsen

@Rawrgulmuffins değiştirmek zorunda kaldılar ... OpenSUSE ve Red Hat, LSB ve FHS standartlarına zaten uyumluydu ve ia32 -libs paketi, her biri için tek bir dizin olan değişiklikleri kolayca yönetmelerine izin vermedi. mimari. Geliştiriciler bunun yerine sadece multiarch girişini takip etmeli ve paketlerini buna göre yeniden paketlemelidir. Son 3 yılda gelmedilerse tembel oluyorlar.
Braiam

@Braiam Bu yüzden hata, geriye dönük uyumluluğu kırma konusunda LSB ve FHS standartlarıyla ilgilidir. Bunun, sadece geliştiricilerin yeniden paketlenmelerini gerektirdiğini belirtmek aptalca görünüyor, özellikle lib32'ye dayanan tüm paketleri kırdığı için.
AlexLordThorsen

12

İ386 mimarisini eklemeyi unutmayın, aksi takdirde 32 bit paketleri kuramazsınız:

sudo dpkg --add-architecture i386
sudo apt-get update

Paket sorun giderme kılavuzunu kontrol edin: https://help.ubuntu.com/community/PackageManagerTroubleshoProcedure


Yukarıdaki iki komut benim için 32 bitlik bir paket yüklemedi. Neyi kaçırıyorum?
e40

2
Tamam, benim için iki ek komut daha yapmak zorunda kaldım: apt-get install libc6:i386ve apt-get install libgtk2.0-0:i386(ikincisi çünkü bu bir GTK uygulaması).
e40
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.