CentOS intérprete de ELFOS malos de 64 bits


Acabo de instalar la versión CentOS 6 de 64 bits, estoy tratando de instalar una aplicación de 32 bits en una máquina de 64 bits y obtuve este error:

/lib / ld-linux.so.2: bad ELF interpreter: No hay tal archivo o directorio

Soy nuevo en linux. ¿Cómo resuelvo esto?

Author: Matt Fenwick, 2011-11-30

7 answers

Usted está en un sistema de 64 bits, y no tiene soporte de biblioteca de 32 bits instalado.

Para instalar soporte (baseline) 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 en 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

Mayor RHEL, CentOS: {[38]]}

   sudo yum install glibc.i686

Aún más viejo RHEL, CentOS:

  sudo yum install glibc.i386

Debian o Ubuntu:

   sudo apt-get install ia32-libs

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

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

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

 ldd /usr/bin/YOURAPPHERE

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

 ldd $(which YOURAPPNAME)

La salida se verá como esto:

    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 la salida anterior), y para cada una debe encontrar el paquete que la 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 RHEL/CentOS más antiguos:

 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

Observe el prefijo path /usr/lib en el caso (habitual); rara vez, algunas bibliotecas todavía viven bajo /lib por razones históricas On 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 multiarquitectura 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 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 interfaz gráfica de usuario, o sudo dnf/yum/apt-get según corresponda.... E. g pkcon install libSM.i686. Si es necesario, puede especificar la versión completa. E. g sudo dnf install ibSM-1.2.0-2.fc15.i686.

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

Notas

Advertencia

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

Si no usas "sudo" en tu 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 bibliotecas

La "época" designator antes del nombre es un artefacto de la forma en que las bibliotecas RPM subyacentes manejan los números de versión; por ejemplo,

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. (Vagamente implica algo como: en algún momento, el número de versión del paquete libpng retrocedió, y el "epoch" tuvo que incrementarse para asegurarse de que la versión más reciente se consideraría "más reciente" durante las actualizaciones. O algo similar sucedió. Doblemente.)


Actualizado para aclarar y cubrir las diversas opciones del gestor de paquetes más completamente (marzo, 2016)

 333
Author: BRPocock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 21:53:22

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

Yum groupinstall "Bibliotecas de compatibilidad"

O bien prefijar esto con 'sudo' o ejecutar como root, lo que funcione mejor para usted.

 17
Author: Phil Edwards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-03 23:03:49

En general, cuando obtienes un error como este, simplemente haz

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 simplemente ejecute lo siguiente como escribió BRPocock (en caso de que se preguntara cuál era la lógica...):

yum install glibc.i686
 10
Author: Moe Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-18 22:57:43

Intenta

$ 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.

 3
Author: The Bumpaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 07:24:49

Solo quería añadir un comentario en BRPocock, pero no tengo los privilegios suficientes.

Así que mi contribución fue para todos los que intentaban instalar IBM Integration Toolkit desde el paquete de Bus de integración de IBM.

Cuando intentas ejecutar el comando "Installation Manager" desde la carpeta /Integration_Toolkit/IM_Linux (el archivo a ejecutar es "install") obtienes el error mostrado en este post.

Encontrará más instrucciones para solucionar este problema en esta página web de IBM: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

Espero que esto ayude a cualquiera que intente instalarlo.

 0
Author: mmarquezvacas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-03 19:21:39

Sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++. so. 6

 0
Author: nithin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 09:22:56

Añadiría para Debian que necesita al menos un compilador en el sistema (de acuerdo con Debian Stretch y Jessie 32-bit libraries).

Instalé apt-get install -y gcc-multilib para ejecutar un archivo ejecutable de 32 bits en mi contenedor docker basado en debian:jessie.

 0
Author: Vitaliy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 00:19:58