Wie führe ich ein 32-Bit-Programm auf einer 64-Bit-Version von Ubuntu aus?


41

Ich habe eine 64-Bit-Version von Ubuntu 13.10. Ich möchte eine 32-Bit-Version eines Programms ausführen. Allerdings sehe ich ia32-libsnicht in 13.10 enthalten. Gibt es dafür ein Ersatzpaket oder was?



@bain Dies ist kein Duplikat. Diese Frage bezieht sich auf allgemeine Situationen, das ist ein spezifisches Problem, ganz zu schweigen davon, dass dies die ältere, bessere Frage ist.
Seth

Und die Antwort von Braiam ist fantastisch ! Wenn es also irgendwo getäuscht werden sollte, sollte es zusammengeführt werden.
Mateo

Antworten:


30

Das ia32-libsPaket wird nicht mehr benötigt (um genau zu sein seit 12.04). Wenn Sie das APT-System verwenden, müssen Sie sich keine Gedanken mehr über die Installation von 32-Bit-Paketen in einem 64-Bit-System machen. Dies geschah seit der Einführung von Multiarch , einer der wichtigsten Debian-Richtlinien, die sich auf die Art und Weise auswirken , wie Debian mit Abhängigkeiten umgeht . Diese Methode erlaubt es, verschiedene binäre Ziele im selben System zu haben, ohne Rücksicht auf die Kernel-Architektur. Dies bedeutet nicht, dass Sie jedes 32-Bit-Paket ohne Vorbereitung ausführen können. Wenn Sie jedoch die Bibliotheken / Binärdateien installieren, sollten theoretisch alle Anwendungen ausgeführt werden können. Dies gilt von 64-Bit bis 32-Bit und umgekehrt.

Bildbeschreibung hier eingeben

Für die Verwendung einer solchen Methode wird die Verwendung der APT-Manager empfohlen, um unerfüllte Abhängigkeiten zu vermeiden. Das Changelog enthält einen kleinen Verlauf darüber, wie die Änderungen vorgenommen wurden:

  1. Genau genommen wurde das Paket geleert und ein Übergangspaket hergestellt . Es wurden mehrere Abhängigkeiten zu Paketen hinzugefügt, die nicht in multiarch verschoben wurden.
  2. Langsam aber sicher wurden alle Pakete mit Multiarch-Unterstützung neu erstellt und die umgekehrten Abhängigkeiten wurden verworfen oder in ia32-lib-multiarch geändert. Wenn diese Pakete keine ia34-libs-Pakete mehr benötigen, werden die Abhängigkeiten gleichzeitig gelöscht. Die Abhängigkeiten wurden geändert ia32-libszu package:archsein packageder Name der Bibliothek benötigt und archdie Architektur (unten ein Beispiel mit Skype ist).
  3. Mit der letzten Veröffentlichung wurde das ia32-libs-multiarchPaket aus den Vorveröffentlichungen entfernt und ia32-libsnicht auf freche Weise veröffentlicht. Alle Ubuntu-Pakete sind Multiarch-fähig und Sie können verschiedene Architekturpakete auf Ihrem System installieren.

Wenn Sie jetzt ein Paket installieren, das 32-Bit-Binärdateien benötigt, werden Sie nie erfahren, dass Sie ein 32-Bit-Paket verwenden, da der Paketmanager automatisch die erforderlichen Abhängigkeiten abruft:

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

Beachten Sie, dass Skype ein i386-Paket ist. Wenn ich es mit apt-get installiere, erspare ich mir später Kopfschmerzen.

Aber manche Leute bevorzugen es, .debPakete zu verwenden und sich dann darauf einzustellen, weil es etwas chaotisch werden kann. Sie sollten alle Abhängigkeiten vorher manuell installieren, damit Ihr System nicht mit nicht erfüllten Abhängigkeiten endet. Ein Befehl, der hilft, ist, dpkg-deb -Ida er die Informationen des Pakets anzeigt:

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

Wie Sie sehen, werden die Abhängigkeiten aufgelistet, so dass Sie nur sudo apt-get installdiese und dann müssen sudo dpkg -i. Ziehen Sie es vor, Software von den Repositorys zu installieren, anstatt sie herunterzuladen und manuell mit zu installieren dpkg -i.

Wenn es sich bei Ihrer Bibliothek um eine Entwicklungsbibliothek handelt, können Sie sie jetzt mithilfe der apt-getSyntax installieren . Fügen :i386Sie einfach die Bibliothek hinzu , die Sie herunterladen möchten, und fertig. Dies muss nicht manuell erfolgen, wenn Sie die Software aus den Repositorys installieren.

Fazit: Nein, Sie können 32-Bit-Pakete ohne Installation ausführen ia32-libs, wenn Sie die Pakete aus den Repositorys installieren, noch besser. Wenn Sie in der Entwicklung sind, versuchen Sie immer, das APT-System zu verwenden.


Was kann ich mit einem .bin-Installationsprogramm tun, das prüft, ob das Paket ia32-libs installiert ist? Selbst wenn ich die richtigen Abhängigkeiten manuell installiere, kann die BIN-Datei meines Wissens immer noch nicht installiert werden, da nach dem Paket ia32-libs gesucht wird. Gibt es eine Möglichkeit, das Installationsprogramm zu "täuschen", um zu glauben, dass ia32-libs installiert ist?
Galgalesh

1
@Galgalesh bitten den Betreuer, ihre Sachen zu reparieren, sie sind in der Vergangenheit.
Braiam

Das einzige Problem beim Entfernen von ia32-libs besteht darin, dass Sie Programme wie PlayOnLinux haben, die versuchen, 32-Bit-Bibliotheken zum Ausführen von 32-Bit-Windows-Programmen zu verwenden. Dann ist dies eine brechende Rückwärtsinkompatibilität.
AlexLordThorsen

@Rawrgulmuffins, die geändert werden mussten ... OpenSUSE und Red Hat stimmten bereits mit den LSB- und FHS- Standards überein, und das Paket ia32-libs ermöglichte es ihnen nicht, die durchzuführenden Änderungen einfach zu verwalten. Dies war jeweils ein einziges Verzeichnis die Architektur. Entwickler sollten stattdessen einfach der Einführung in multiarch folgen und ihre Pakete entsprechend neu packen. Wenn sie es in den letzten 3 Jahren nicht getan haben, sind sie faul.
Braiam

@Braiam Also der Fehler liegt bei den LSB- und FHS-Standards, um dann die Abwärtskompatibilität zu brechen. Es scheint töricht zu sein, zu behaupten, dass dies nur von Entwicklern neu gepackt werden muss, zumal dies alle Pakete zerstört, die sich auf lib32 stützten.
AlexLordThorsen

12

Denken Sie daran, die i386-Architektur hinzuzufügen, da Sie sonst keine 32-Bit-Pakete installieren können:

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

Überprüfen Sie die Anleitung zur Fehlerbehebung im Paket: https://help.ubuntu.com/community/PackageManagerTroubleshooterProcedure


Mit den beiden oben genannten Befehlen wurden keine 32-Bit-Pakete für mich installiert. Was vermisse ich?
e40

2
OK, für mich musste ich zwei zusätzliche Befehle ausführen: apt-get install libc6:i386und apt-get install libgtk2.0-0:i386(letzteres, weil es eine GTK-App ist).
e40
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.