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.
-
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
-
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
-
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/
-
Actualice la memoria caché del enlazador:
sudo ldconfig
-
(opcional) Eliminar los archivos de origen:
cd .. rm -r fuse-2.8.4