Comment exécuter un programme 32 bits sur une version 64 bits d'Ubuntu?

42

J'ai une version 64 bits d'Ubuntu 13.10. Je veux exécuter une version 32 bits d'un programme. Cependant je vois ia32-libsn'est pas inclus dans 13.10. Y at-il un paquet de remplacement pour ceci ou quoi?

Cato
la source
@bain Ceci n'est pas un doublon. Cette question concerne des situations générales, c’est une question spécifique, sans parler de la question la plus ancienne et la meilleure.
Seth
Et la réponse de Braiam est géniale ! donc, si elle devait être dupée n'importe où, elle devrait être fusionnée.
Mateo

Réponses:

30

Le ia32-libspaquet n'est plus nécessaire (depuis 12.04 pour être exact), si vous utilisez le système APT, vous n'avez rien à craindre de l'installation de paquets 32 bits dans un système 64 bits. Cela s’est passé depuis l’introduction de multiarch , l’une des stratégies les plus changeantes de Debian dans la façon dont Debian gère ses dépendances. Cette méthode permet d’avoir différentes cibles binaires dans le même système sans s’occuper de l’architecture du noyau. Cela ne signifie pas que vous pouvez exécuter n'importe quel paquet 32 ​​bits sans préparation, mais si vous installez les bibliothèques / fichiers binaires, toutes les applications en théorie devraient pouvoir s'exécuter. Cela est vrai de 64 bits à 32 bits et vice-versa.

entrez la description de l'image ici

Pour utiliser cette méthode, il est recommandé d'utiliser les gestionnaires APT afin d'éviter les dépendances non satisfaites. Le changelog inclut un petit historique sur la manière dont les modifications ont été apportées:

  1. En effet, le colis a été vidé et transformé en un colis de transition . Il a été ajouté plusieurs dépendances contre les paquets qui n'ont pas été déplacés vers multiarch.
  2. Lentement mais sûrement, tous les packages ont été reconstruits avec le support multiarch et les dépendances inverses ont été supprimées ou modifiées en ia32-lib-multiarch. Lorsque ces paquets ont cessé d'utiliser les paquets ia34-libs, les dépendances ont été supprimées au même moment. Les dépendances ont été modifiées ia32-libspour package:archdevenir packagele nom de la bibliothèque requise et archl'architecture (un exemple avec skype est présenté ci-dessous).
  3. Avec la dernière version, le ia32-libs-multiarchpaquet a été retiré des versions antérieures à la publication et ia32-libsn'a pas été publié dans une version délurée. Tous les paquets Ubuntu sont multiarchives et vous pouvez installer différents paquets d’architecture sur votre système.

Désormais, lors de l'installation d'un package nécessitant des fichiers binaires 32 bits, si vous n'y faites pas attention, vous ne saurez jamais que vous utilisez un package 32 bits, car le gestionnaire de packages extraira automatiquement les dépendances nécessaires:

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

Notez que skype est un package i386. Si j'utilise apt-get pour l'installer, je me sauverai des maux de tête plus tard.

Mais certaines personnes préfèrent utiliser des .debpaquets, puis préparez-vous car cela peut devenir un peu brouillon. Vous devez installer manuellement toutes les dépendances au préalable pour que votre système ne se termine pas par des dépendances non satisfaites. Une commande qui aidera est dpkg-deb -Iqu’elle affiche les informations du paquet:

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 <[email protected]>
 Original-Maintainer: Debian Multimedia Maintainers <[email protected]>
 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)
[...]

Comme vous pouvez le voir, il énumère les dépendances, de sorte que vous ne devez sudo apt-get installles puis sudo dpkg -i. Encore une fois, préférez installer les logiciels à partir des référentiels au lieu de les télécharger et de les installer manuellement avec dpkg -i.

Maintenant, si le vôtre est en développement, vous pouvez installer n’importe quelle bibliothèque en utilisant la apt-getsyntaxe. Ajoutez simplement :i386à la bibliothèque que vous souhaitez télécharger, et c'est fait. Nul besoin de le faire manuellement si vous installez le logiciel à partir des référentiels.

En bout de ligne: Non, vous pouvez exécuter des packages 32 bits sans installer ia32-libs, même si vous installez les packages à partir des référentiels. Si vous êtes en développement, essayez de toujours utiliser le système APT.

Braiam
la source
Que puis-je faire avec un programme d'installation .bin qui vérifie si le paquet ia32-libs est installé? Autant que je sache, même si j’installe manuellement les dépendances correctes, l’installation de .bin échoue car elle recherche le paquet ia32-libs. Existe-t-il un moyen de "tromper" le programme d'installation en pensant que ia32-libs est installé?
Galgalesh
1
@Galgalesh demande au responsable de la maintenance de réparer leurs problèmes, ils sont dans le passé.
Braiam
Le seul problème avec la suppression de ia32-libs est lorsque vous avez des programmes tels que PlayOnLinux qui tentent d’utiliser des bibliothèques 32 bits pour exécuter des programmes Windows 32 bits. Il s’agit là d’une incompatibilité en recul.
AlexLordThorsen
@Rawrgulmuffins ils devaient changer ... OpenSUSE et Red Hat étaient déjà conformes aux normes LSB et FHS , et le paquet ia32-libs ne leur permettait pas de gérer facilement les modifications à effectuer, qui était un répertoire unique pour chaque architecture. Les développeurs doivent plutôt simplement suivre l’introduction de multiarch et reconditionner leurs paquets en conséquence. S'ils ne l'ont pas fait au cours des 3 dernières années, ils sont paresseux.
Braiam
@Braiam La faute est donc aux normes LSB et FHS pour la compatibilité rétroactive. Il semble insensé d'affirmer que cela nécessite simplement le réemballage des développeurs, en particulier puisque cela casse tous les paquets qui reposaient sur lib32.
AlexLordThorsen
12

N'oubliez pas d'ajouter une architecture i386 sinon vous ne pourrez pas installer de packages 32 bits:

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

Consultez le guide de dépannage du package: https://help.ubuntu.com/community/PackageManagerTroubleshootingProcedure

13m5
la source
Les deux commandes ci-dessus n'ont pas installé de paquet 32 ​​bits pour moi. Qu'est-ce que je rate?
e40
2
OK, pour moi, j'ai dû faire deux commandes supplémentaires: apt-get install libc6:i386et apt-get install libgtk2.0-0:i386(la dernière parce que c'est une application GTK).
e40