¿Cómo ejecuta un programa de 32 bits en una versión de Ubuntu de 64 bits?

42

Tengo una versión de 64 bits de Ubuntu 13.10. Quiero ejecutar una versión de 32 bits de un programa. Sin embargo, veo ia32-libsque no está incluido en 13.10. ¿Hay un paquete de reemplazo para esto o qué?

Cato
fuente
@bain Esto no es un duplicado. Esta pregunta es sobre situaciones generales, es un tema específico, sin mencionar que esta es la pregunta más antigua y mejor.
Seth
¡Y la respuesta de Braiam es asombrosa ! así que si fuera engañado en alguna parte, debería fusionarse.
Mateo

Respuestas:

30

ia32-libsYa no es necesario el paquete (desde 12.04 para ser exactos), si usa el sistema APT, no tiene nada de qué preocuparse por instalar paquetes de 32 bits en un sistema de 64 bits. Esto sucedió desde la introducción de multiarch , una de las políticas más cambiantes de Debian en la forma en que Debian maneja sus dependencias. Este método permite tener diferentes objetivos binarios en el mismo sistema sin tener en cuenta la arquitectura del núcleo. Esto no significa que pueda ejecutar cualquier paquete de 32 bits sin preparación, pero si instala las bibliotecas / binarios, cualquier aplicación en teoría debería poder ejecutarse. Esto es cierto de 64 bits a 32 bits y viceversa.

ingrese la descripción de la imagen aquí

Para utilizar dicho método se recomienda utilizar los administradores APT, para evitar dependencias insatisfechas. El registro de cambios incluye un pequeño historial sobre cómo se realizaron los cambios:

  1. En concreto, el paquete se vació y se hizo un paquete de transición . Se agregaron varias dependencias contra paquetes que no se han movido a multiarch.
  2. Lento pero seguro, todos los paquetes se reconstruyeron con soporte multiarch y las dependencias inversas se eliminaron o cambiaron a ia32-lib-multiarch. Cuando estos paquetes dejan de necesitar los paquetes ia34-libs, las dependencias se descartan al mismo tiempo. Las dependencias fueron cambiados de ia32-libsa package:archser packageel nombre de la biblioteca sea necesario y archla arquitectura (por debajo hay un ejemplo con Skype).
  3. Con el último lanzamiento, el ia32-libs-multiarchpaquete se eliminó de los lanzamientos previos y ia32-libsno se publicó en saucy. Todos los paquetes de Ubuntu tienen capacidad para múltiples canales y puede instalar diferentes paquetes de arquitectura en su sistema.

Ahora, al instalar un paquete que necesita binarios de 32 bits, si no presta atención, nunca sabrá que está utilizando un paquete de 32 bits, ya que el administrador de paquetes extraerá automáticamente las dependencias necesarias:

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

Tenga en cuenta que skype es un paquete i386. Si uso apt-get para instalarlo, me ahorraré dolores de cabeza más tarde.

Pero algunas personas prefieren usar .debpaquetes y luego prepararse porque puede ser un poco complicado. Debe instalar manualmente todas las dependencias de antemano para que su sistema no termine con dependencias insatisfechas. Un comando que ayudará es dpkg-deb -Iporque muestra la información del paquete:

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

Como puede ver, enumera las dependencias, por lo que solo tiene que sudo apt-get installhacerlas y luego sudo dpkg -i. Nuevamente, prefiera instalar software desde los repositorios en lugar de descargarlos e instalarlo manualmente con dpkg -i.

Ahora, si el suyo es desarrollo, puede instalar cualquier biblioteca usando la apt-getsintaxis. Simplemente agregue :i386a la biblioteca que desea descargar y listo. No es necesario hacer esto manualmente si instala el software desde los repositorios.

En pocas palabras: no, puede ejecutar paquetes de 32 bits sin instalar ia32-libs, si instala los paquetes desde los repositorios, incluso mejor. Si está en desarrollo, intente utilizar siempre el sistema APT.

Braiam
fuente
¿Qué puedo hacer con un instalador .bin que verifica si el paquete ia32-libs está instalado? Hasta donde sé, incluso si instalo manualmente las dependencias correctas, el .bin seguirá sin instalarse porque busca el paquete ia32-libs. ¿Hay alguna forma de "engañar" al instalador para que piense que ia32-libs está instalado?
Galgalesh
1
@Galgalesh le pide al encargado que arregle sus cosas, están en el pasado.
Braiam
El único problema con la eliminación de ia32-libs es cuando tienes programas como PlayOnLinux que intentan usar bibliotecas de 32 bits para ejecutar programas de Windows de 32 bits. Entonces esta es una ruptura en la compatibilidad hacia atrás.
AlexLordThorsen
@Rawrgulmuffins que tuvieron que cambiar ... OpenSUSE y Red Hat ya cumplían con los estándares LSB y FHS , y el paquete ia32-libs no les permitía administrar fácilmente los cambios a realizar, que era un directorio único para cada arquitectura. Los desarrolladores deberían seguir la introducción a multiarch y reempaquetar sus paquetes en consecuencia. Si no lo han hecho en los últimos 3 años, están siendo flojos.
Braiam
@Braiam Entonces, la falla es con los estándares LSB y FHS para romper la compatibilidad con versiones anteriores. Parece una locura decir que esto solo requiere que los desarrolladores reenvasen, especialmente porque esto rompe todos los paquetes que dependían de lib32.
AlexLordThorsen
12

Recuerde agregar la arquitectura i386 o no podrá instalar paquetes de 32 bits:

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

Consulte la guía de solución de problemas del paquete: https://help.ubuntu.com/community/PackageManagerTroubleshootingProcedure

13m5
fuente
Los dos comandos anteriores no instalaron ningún paquete de 32 bits para mí. ¿Qué me estoy perdiendo?
e40
2
OK, para mí, tuve que hacer dos comandos adicionales: apt-get install libc6:i386y apt-get install libgtk2.0-0:i386(el último porque es una aplicación GTK).
e40