Bagaimana Anda menjalankan program 32-bit pada Ubuntu versi 64-bit?


41

Saya memiliki versi 64-bit Ubuntu 13.10. Saya ingin menjalankan program versi 32-bit. Namun saya melihat ia32-libstidak termasuk dalam 13.10. Apakah ada paket pengganti untuk ini atau apa?



@bain Ini bukan duplikat. Pertanyaan ini adalah tentang situasi umum, itu adalah masalah khusus, belum lagi ini adalah pertanyaan yang lebih tua dan lebih baik.
Seth

Dan jawaban Braiam luar biasa ! jadi jika itu akan ditipu di mana saja itu harus digabung.
Mateo

Jawaban:


30

Tidak perlu ia32-libslagi menggunakan paket (karena tepatnya 12,04), jika Anda menggunakan sistem APT, Anda tidak perlu khawatir menginstal paket 32-bit dalam sistem 64-bit. Ini terjadi sejak diperkenalkannya multiarch , salah satu kebijakan paling mengubah permainan Debian dalam cara Debian mengelola ketergantungannya. Metode ini memungkinkan untuk memiliki target biner yang berbeda dalam sistem yang sama tanpa memperhatikan arsitektur kernel. Ini tidak berarti bahwa Anda dapat menjalankan paket 32-bit tanpa persiapan, tetapi jika Anda menginstal perpustakaan / binari, setiap aplikasi secara teori harus dapat dijalankan. Ini benar dari 64-bit ke 32-bit dan sebaliknya.

masukkan deskripsi gambar di sini

Untuk menggunakan metode tersebut disarankan menggunakan manajer APT, untuk mencegah dependensi yang tidak terpenuhi. Changelog menyertakan sedikit riwayat tentang bagaimana perubahan itu dibuat:

  1. Secara tepat paket itu dikosongkan dan dibuat paket transisi . Itu ditambahkan beberapa dependensi terhadap paket yang belum dipindahkan ke multiarch.
  2. Perlahan tapi pasti, semua paket dibangun kembali dengan dukungan multiarch dan dependensi terbalik diturunkan atau diubah menjadi ia32-lib-multiarch. Ketika paket-paket tesis berhenti membutuhkan paket ia34-libs dependensi dijatuhkan pada saat yang sama. Dependensi yang berubah dari ia32-libske package:archmenjadi packagenama perpustakaan diperlukan dan archarsitektur (di bawah ada contoh dengan skype).
  3. Dengan rilis terakhir yang ia32-libs-multiarchpaket telah dihapus dari pra-penuh kegembiraan rilis dan ia32-libstidak mendapat dipublikasikan ke cakep. Semua paket Ubuntu memiliki kemampuan multiarch dan Anda dapat menginstal paket arsitektur yang berbeda di sistem Anda.

Sekarang, ketika menginstal paket yang membutuhkan binari 32-bit, jika Anda tidak memperhatikan, Anda tidak akan pernah tahu bahwa Anda menggunakan paket 32-bit, karena manajer paket akan menarik secara otomatis dependensi yang diperlukan:

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

Perhatikan bahwa skype adalah paket i386. Jika saya menggunakan apt-get untuk menginstalnya, saya akan menyelamatkan diri saya dari sakit kepala nanti.

Tetapi beberapa orang lebih suka menggunakan .debpaket, kemudian menguatkan diri karena bisa menjadi sedikit berantakan. Anda harus menginstal semua dependensi secara manual terlebih dahulu sehingga sistem Anda tidak berakhir dengan dependensi yang belum terpenuhi. Perintah yang akan membantu adalah dpkg-deb -Ikarena ia memperlihatkan informasi paket:

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)
[...]

Seperti yang Anda lihat, daftar dependensi, jadi Anda hanya perlu sudo apt-get installmereka dan kemudian sudo dpkg -i. Sekali lagi, lebih suka menginstal perangkat lunak dari repositori daripada mengunduhnya dan secara manual menginstalnya dpkg -i.

Sekarang, jika milik Anda sedang dikembangkan, Anda dapat menginstal perpustakaan apa pun menggunakan apt-getsintaks. Tambahkan saja :i386ke perpustakaan yang ingin Anda unduh, dan selesai. Tidak perlu melakukan ini secara manual jika Anda menginstal perangkat lunak dari repositori.

Intinya: Tidak, Anda dapat menjalankan paket 32-bit tanpa menginstal ia32-libs, jika Anda menginstal paket dari repositori, bahkan lebih baik. Jika Anda tertarik pada pengembangan, cobalah untuk selalu menggunakan sistem APT.


Apa yang bisa saya lakukan dengan installer .bin yang memeriksa apakah paket ia32-libs diinstal? Sejauh yang saya tahu, bahkan jika saya menginstal dependensi yang benar secara manual, .bin masih akan gagal untuk menginstal karena ia mencari paket ia32-libs. Apakah ada cara "membodohi" installer untuk berpikir bahwa ia32-libs diinstal?
Galgalesh

1
@ Galgalesh meminta pengelola untuk memperbaiki barang-barang mereka, mereka di masa lalu.
Braiam

Satu-satunya masalah dengan menghapus ia32-libs adalah ketika Anda memiliki program seperti PlayOnLinux yang mencoba menggunakan pustaka 32 bit untuk menjalankan program windows 32bit. Maka ini adalah kompatibilitas mundur.
AlexLordThorsen

@Rawrgulmuffins mereka harus berubah ... OpenSUSE dan Red Hat sudah sesuai dengan standar LSB dan FHS , dan paket ia32-libs tidak memungkinkan mereka untuk dengan mudah mengelola perubahan yang harus dilakukan, yang merupakan direktori tunggal untuk masing-masing Arsitektur. Pengembang seharusnya hanya mengikuti pengantar untuk multiarch dan mengemas ulang paket mereka. Jika mereka belum dalam 3 tahun terakhir, mereka malas.
Braiam

@Braiam Jadi kesalahannya adalah dengan standar LSB dan FHS untuk memecah kompatibilitas kemudian. Sepertinya bodoh untuk menyatakan bahwa ini hanya membutuhkan pengembang untuk mengemas kembali, terutama karena ini memecah semua paket yang bergantung pada lib32.
AlexLordThorsen

12

Ingatlah untuk menambahkan arsitektur i386 atau Anda tidak akan dapat menginstal paket 32-bit:

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

Periksa panduan pemecahan masalah paket: https://help.ubuntu.com/community/PackageManagerTroubleshootingProcedure


Dua perintah di atas tidak menginstal paket 32-bit untuk saya. Apa yang saya lewatkan?
e40

2
OK, bagi saya, saya harus melakukan dua perintah tambahan: apt-get install libc6:i386dan apt-get install libgtk2.0-0:i386(yang terakhir karena itu adalah aplikasi GTK).
e40
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.