GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Es posible tener bibliotecas de 32 bits instaladas en un sistema de 64 bits?

Tengo instaladas las bibliotecas compartidas de 32 bits, pero sigo recibiendo este error al intentar instalar pogoplug:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

¿Hay algo más que deba hacer para que el programa se cargue desde las bibliotecas de 32 bits?

Se hizo una pregunta similar a principios de este año, pero no se obtuvo ninguna respuesta.

Respuesta aceptada:

Para algunas bibliotecas, es posible tener las bibliotecas de 32 y 64 bits instaladas en un sistema de 64 bits. Está disponible a través de ia32-libs paquete en Ubuntu 10.04 y anteriores. Según la lista de archivos de ia32-libs , no hay libfuse.so.2 archivo incluido. Eso significa que no puede tener ambas arquitecturas instaladas a la vez.

Desde Ubuntu 11.10 Oneiric, es posible que los paquetes permitan la instalación simultánea para diferentes arquitecturas, lo que se denomina "Multi-Arch". Desafortunadamente, si puedo creer la lista de archivos de libfuse2 en Oneiric, este paquete aún no ha sido transferido. Eso se puede determinar a partir de las dependencias del paquete:si un paquete depende de multiarch-support (como libdrm2), tiene soporte para múltiples arquitecturas. Sin embargo, esto no una garantía de que el paquete se puede instalar para múltiples arquitecturas simultáneamente.

Para consultar su caché local para las capacidades de múltiples arquitecturas de un paquete, diga libc6 , ejecuta:

apt-cache show libc6 | grep ^Multi-Arch:

Para este comando, la salida es Multi-Arch: same . Eso significa que las versiones de 32 bits y 64 bits de un paquete se pueden instalar a la vez. Si no hay salida, el paquete no está listo para admitir varias arquitecturas. Otros valores posibles son foreign (no coinstalable, pero puede usarse para satisfacer las dependencias de otras arquitecturas) y allowed (iirc, solo se permite instalar un paquete a la vez, pero el paquete se puede usar para satisfacer las dependencias de otros paquetes)

Debería poder instalar paquetes de 32 bits en un sistema de 64 bits con:

sudo apt-get install packagename:i386

Construyendo libfuse de 32 bits para máquinas de 64 bits

Dado que la biblioteca de fusibles de 32 bits no se proporciona con ia32-libs , no tienes otra opción que construirlo tú mismo.

  1. Instale las dependencias de compilación para fusible y obtenga el código fuente:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Configure el árbol de fuentes y construya el fusible (ajuste el nombre del directorio si es necesario):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Instale la biblioteca de fusibles de 32 bits (ajuste la versión en consecuencia):

    sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2
    sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
    
  4. Actualice la memoria caché del enlazador:

    sudo ldconfig
    
  5. (opcional) Eliminar los archivos de origen:

    cd ..
    rm -r fuse-2.8.4
    

Ubuntu
  1. Debian:¿cómo replicar selecciones de paquetes instalados de un sistema Debian a otro? (Debian Wheezy)?

  2. ¿Se puede instalar Ubuntu en sistemas sin conexión a Internet?

  3. ¿Cómo instalar termitas?

  4. ¿Actualizar de 32 bits a 64 bits?

  5. ¿Cómo puedo determinar si Apache está instalado en un sistema?

Cómo instalar Minecraft en Ubuntu 20.04

Instale el Administrador de paquetes Synaptic en Linux

Cómo instalar Django en Ubuntu 20.04

Cómo instalar Notepadqq en Ubuntu 20.04

Instalar Redis en Ubuntu 20.04

Cómo instalar y administrar paquetes RPM en el sistema Ubuntu/Debian