GNU/Linux >> Tutoriales Linux >  >> Linux

Intérprete mal ELF de CentOS de 64 bits

En general, cuando recibe un error como este, simplemente haga

yum provides ld-linux.so.2

entonces verás algo como:

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

y luego ejecuta lo siguiente como escribió BRPocock (en caso de que se pregunte cuál era la lógica...):

yum install glibc.i686

Prueba

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

Espero que esto se aclare.


Estás en un sistema de 64 bits y no tienes instalada la compatibilidad con la biblioteca de 32 bits.

Para instalar (línea de base) soporte para ejecutables de 32 bits

(si no usa sudo en su configuración, lea la nota a continuación)

La mayoría de los sistemas Linux de escritorio de la familia Fedora/Red Hat:

 pkcon install glibc.i686

¿Posiblemente algunos sistemas Debian/Ubuntu de escritorio?:

pkcon install ia32-libs

Fedora o Red Hat más reciente, CentOS:

 sudo dnf install glibc.i686

RHEL anterior, CentOS:

   sudo yum install glibc.i686

RHEL aún más antiguo, CentOS:

  sudo yum install glibc.i386

Debian o Ubuntu:

   sudo apt-get install ia32-libs

debería obtener la biblioteca (primera, principal) que necesita.

Una vez que tenga eso, probablemente necesitará bibliotecas de soporte

Cualquiera que necesite instalar glibc.i686 o glibc.i386 probablemente también se encontrará con otras dependencias de la biblioteca. Para identificar un paquete que proporcione una biblioteca arbitraria, puede usar

 ldd /usr/bin/YOURAPPHERE

si no está seguro de que esté en /usr/bin también puedes recurrir a

 ldd $(which YOURAPPNAME)

La salida se verá así:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

Compruebe si faltan bibliotecas (por ejemplo, libSM.so.6 en el resultado anterior), y para cada uno necesita encontrar el paquete que lo proporciona.

Comandos para encontrar el paquete por familia de distribución

Fedora/Red Hat Enterprise/CentOS:

 dnf provides /usr/lib/libSM.so.6

o, en versiones anteriores de RHEL/CentOS:

 yum provides /usr/lib/libSM.so.6

o, en Debian/Ubuntu:

primero, instale y descargue la base de datos para apt-file

 sudo apt-get install apt-file && apt-file update

luego busca con

 apt-file find libSM.so.6

Tenga en cuenta la ruta del prefijo /usr/lib en el caso (usual); rara vez, algunas bibliotecas todavía viven bajo /lib por razones históricas... En los sistemas típicos de 64 bits, las bibliotecas de 32 bits viven en /usr/lib y las bibliotecas de 64 bits viven en /usr/lib64 .

(Debian/Ubuntu organizan las bibliotecas de múltiples arquitecturas de manera diferente).

Instalación de paquetes para bibliotecas faltantes

Lo anterior debería darle un nombre de paquete, por ejemplo:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

En este ejemplo, el nombre del paquete es libSM y el nombre de la versión de 32 bits del paquete es libSM.i686 .

Luego puede instalar el paquete para obtener la biblioteca requerida usando pkcon en una GUI, o sudo dnf/yum/apt-get según sea apropiado…. Por ejemplo, pkcon install libSM.i686 . Si es necesario, puede especificar la versión completamente. Por ejemplo, sudo dnf install ibSM-1.2.0-2.fc15.i686 .

Algunas bibliotecas tendrán un designador de "época" antes de su nombre; esto se puede omitir (los curiosos pueden leer las notas a continuación).

Notas

Advertencia

Por cierto, el problema al que se enfrenta implica que su base de datos RPM (resp. DPkg/DSelect) está dañada o que la aplicación que intenta ejecutar no se instaló a través del administrador de paquetes. Si es nuevo en Linux, probablemente desee evitar el uso de software de fuentes distintas a su administrador de paquetes, siempre que sea posible...

Si no usa "sudo" en su configuración

Tipo

su -c

cada vez que ves sudo , por ejemplo,

su -c dnf install glibc.i686

Acerca del designador de época en los nombres de biblioteca

El designador de "época" antes del nombre es un artefacto de la forma en que las bibliotecas RPM subyacentes manejan los números de versión; p.ej.

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

Aquí, el 2: puede ser omitido; solo pkcon install libpng.i686 o sudo dnf install libpng-1.2.46-1.fc16.i686 . (Implica vagamente algo como:en algún momento, el número de versión del libpng el paquete retrocedió y la "época" tuvo que incrementarse para asegurarse de que la versión más nueva se consideraría "más nueva" durante las actualizaciones. O sucedió algo similar. dos veces).

Actualizado para aclarar y cubrir las diversas opciones del administrador de paquetes con más detalle (marzo de 2016)


Acabo de encontrar el mismo problema en una máquina CentOS 6.4 de 64 bits recién instalada. Un solo comando yum solucionará esto más el 99 % de los problemas similares:

yum groupinstall "Bibliotecas de compatibilidad"

Prefije esto con 'sudo' o ejecútelo como root, lo que funcione mejor para usted.


Linux
  1. Cómo instalar ASSP v.2 en CentOS 7 de 64 bits

  2. Instalar Apache en CentOS 8

  3. Instalar Auter en CentOS 6

  4. Instalar GitLab en CentOS 7

  5. Instalar Nginx en CentOS 6

¿Cómo instalar Nginx en CentOS 7?

¿Cómo instalar Jenkins en CentOS 7?

¿Cómo instalar phpMyAdmin en CentOS 7?

¿Cómo instalar Codeignetor centos 7?

¿Cómo instalar Mongodb en CentOS?

Cómo instalar VirtualBox en CentOS 8