Jak uruchomić 32-bitowy program w 64-bitowej wersji Ubuntu?


41

Mam 64-bitową wersję Ubuntu 13.10. Chcę uruchomić 32-bitową wersję programu. Widzę jednak, że ia32-libsnie jest uwzględniony w 13.10. Czy istnieje pakiet zastępczy dla tego lub co?



@bain To nie jest duplikat. To pytanie dotyczy sytuacji ogólnych, to jest konkretny problem, nie wspominając już o tym, że jest to starsze, lepsze pytanie.
— Seth

Odpowiedź Braiam jest niesamowita ! więc jeśli ma być gdziekolwiek skopiowany, powinien zostać scalony.
— Mateo

Odpowiedzi:


30

ia32-libsPakiet nie jest już potrzebny (a dokładniej od 12.04), jeśli używasz systemu APT, nie musisz się martwić instalowaniem pakietów 32-bitowych w systemie 64-bitowym. Stało się tak od czasu wprowadzenia multiarch , jednej z najbardziej zmieniających gry zasad Debiana w sposobie zarządzania zależnościami przez Debiana. Ta metoda pozwala mieć różne cele binarne w tym samym systemie bez dbania o architekturę jądra. Nie oznacza to, że możesz uruchomić dowolny pakiet 32-bitowy bez przygotowania, ale jeśli zainstalujesz biblioteki / pliki binarne, wszystkie aplikacje teoretycznie powinny być w stanie działać. Dotyczy to od wersji 64-bitowej do 32-bitowej i odwrotnie.

wprowadź opis zdjęcia tutaj

Do korzystania z takiej metody zaleca się korzystanie z menedżerów APT, aby zapobiec niespełnieniu zależności. Dziennik zmian zawiera krótką historię dotyczącą tego, jak wprowadzono zmiany:

  1. Dokładnie pakiet został opróżniony i utworzono pakiet przejściowy . Dodano kilka zależności od pakietów, które nie zostały przeniesione do trybu multiarch.
  2. Powoli, ale pewnie, wszystkie pakiety były przebudowywane z obsługą multiarch, a odwrotne zależności były usuwane lub zmieniane na ia32-lib-multiarch. Kiedy te pakiety przestają potrzebować pakietów ia34-libs, zależności zostały usunięte w tym samym czasie. Zależności były zmieniane od ia32-libsdo package:archbycia packagenazwa biblioteki potrzebne i archarchitektura (poniżej znajduje się przykład Skype).
  3. Z ostatniego wydaniaia32-libs-multiarch pakiet został usunięty z pre-zapalony uwolnień i ia32-libsnie został opublikowany w Saucy. Wszystkie pakiety Ubuntu są kompatybilne z wieloma pakietami i możesz zainstalować różne pakiety architektury w swoim systemie.

Teraz, gdy instalujesz pakiet, który wymaga 32-bitowych plików binarnych, jeśli nie zwrócisz uwagi, nigdy nie dowiesz się, że używasz pakietu 32-bitowego, ponieważ menedżer pakietów automatycznie pobierze niezbędne zależności:

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

Zauważ, że skype jest pakietem i386. Jeśli użyję apt-get, aby go zainstalować, zaoszczędzę sobie później bólu głowy.

Ale niektórzy ludzie wolą używać .debpakietów, a następnie przygotuj się, ponieważ może to być nieco bałagan. Powinieneś ręcznie zainstalować wszystkie zależności wcześniej, aby twój system nie kończył się niezaspokojonymi zależnościami. Polecenie, które pomoże, dpkg-deb -Iponieważ pokazuje informacje o pakiecie:

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

Jak widać, zawiera listę zależności, więc musisz tylko sudo apt-get installje uwzględnić sudo dpkg -i. Ponownie, wolę instalować oprogramowanie z repozytoriów zamiast pobierać je i instalować ręcznie za pomocą dpkg -i.

Teraz, jeśli twoja jest w fazie rozwoju, możesz zainstalować dowolną bibliotekę, używając apt-getskładni. Po prostu dodaj :i386do biblioteki, którą chcesz pobrać, i gotowe. Nie musisz tego robić ręcznie, jeśli instalujesz oprogramowanie z repozytoriów.

Konkluzja: Nie, możesz uruchamiać pakiety 32-bitowe bez instalowania ia32-libs, nawet jeśli instalujesz pakiety z repozytoriów, jeszcze lepiej. Jeśli jesteś w fazie rozwoju, staraj się zawsze używać systemu APT.


Co mogę zrobić z instalatorem .bin, który sprawdza, czy pakiet ia32-libs jest zainstalowany? O ile mi wiadomo, nawet jeśli ręcznie zainstaluję poprawne zależności, .bin nadal nie powiedzie się, ponieważ szuka pakietu ia32-libs. Czy istnieje sposób, aby „oszukać” instalator, aby pomyślał, że ia32-libs jest zainstalowany?
— Galgalesh,

1
@Galgalesh poprosić opiekuna o naprawienie swoich rzeczy, są już w przeszłości.
— Braiam

Jedyny problem z usuwaniem ia32-libs występuje wtedy, gdy masz programy takie jak PlayOnLinux, które próbują używać 32-bitowych bibliotek do uruchamiania 32-bitowych programów Windows. To jest łamanie wstecznej niezgodności.
— AlexLordThorsen

@Rawrgulmuffins musieli zmienić ... OpenSUSE i Red Hat były już zgodne ze standardami LSB i FHS , a pakiet ia32-libs nie pozwalał im łatwo zarządzać wprowadzanymi zmianami, co było pojedynczym katalogiem dla każdego architektura. Zamiast tego programiści powinni postępować zgodnie z wprowadzeniem multiarch i odpowiednio przepakowywać swoje pakiety. Jeśli nie zrobili tego w ciągu ostatnich 3 lat, są leniwi.
— Braiam

@Braiam Tak więc wina leży w standardach LSB i FHS dotyczących łamania wstecznej kompatybilności. Wydaje się głupotą stwierdzenie, że wymaga to tylko od programistów przepakowania, zwłaszcza że psuje to wszystkie pakiety oparte na lib32.
— AlexLordThorsen

12

Pamiętaj, aby dodać architekturę i386, w przeciwnym razie nie będzie można zainstalować pakietów 32-bitowych:

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

Sprawdź przewodnik dotyczący rozwiązywania problemów z pakietem: https://help.ubuntu.com/community/PackageManagerTrou Rozwiązywanie problemówProcedura


Powyższe dwa polecenia nie zainstalowały dla mnie żadnych 32-bitowych pakietów. czego mi brakuje?
— e40

2
OK, dla mnie musiałem wykonać dwa dodatkowe polecenia: apt-get install libc6:i386i apt-get install libgtk2.0-0:i386(ten drugi, ponieważ jest to aplikacja GTK).
— e40
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.