Solución al error "No such file or directory" al ejecutar binarios en Linux

En entornos Linux, es frustrante encontrarse con un archivo ejecutable en un directorio y que, al intentar lanzarlo, el sistema responda con un error del tipo "No such file or directory". Este problema puede surgir incluso después de verificar la existencia del archivo y sus permisos.

Diagnóstico del Problema

Ante esta situación, se pueden seguir una serie de pasos para diagnosticar la causa subyacente:

  1. Verfiicar la presencia del archivo con ls.
  2. Intentar renombrar el archivo y comprobar si las operaciones básicas de archivo funcoinan.
  3. Asegurarse de que los permisos de ejecución estén habilitados (por ejemplo, chmod 755 nombre_archivo).
  4. Examinar el contenido del archivo con cat para descartar corrupción.
  5. Intentar ejecutar el archivo como superusuario (root).
  6. Ejecutar directamente el nombre del archivo si está en el PATH del sistema.
  7. Probar la ejecución usando rutas relativas y absolutas.
  8. Utilizar exec para lanzar el ejecutable.
  9. Intentar la ejecución a través de un intérprete de comandos diferente (ej. /bin/sh ./nombre_archivo).
  10. Probar el ejecutable en un sistema diferente para determinar si el problema reside en el archivo o en el entorno.

Identificación de la Causa: Arquitectura del Binario

Una causa común de este error, especialmente en sistemas modernos de 64 bits, es que el binario sea de 32 bits y requiera librerías compatibles instaladas.

Para confirmar esto, se puede usar la utilidad readelf:

readelf -h nombre_ejecutable

Si la salida de readelf indica que el ejecutable es un binario de 32 bits (por ejemplo, en la sección "Class" o "Type"), y el sistema operativo es de 64 bits, entonces la falta de las librerías de 32 bits es la causa del error.

Solución: Instalación de Arquitectura y Librerías de 32 bits

Para resolver este inconveniente en sistemas Debian/Ubuntu, se deben seguir estos pasos:

  1. Habilitar la arquitectura i386 (32 bits):
sudo dpkg --add-architecture i386

  1. Actualizar la lista de paquetes disponibles:
sudo apt-get update

  1. Instalar las librerías esenciales de 32 bits:
sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 -y

  1. Instalar la librería zlib de 32 bits (si es necesaria):
sudo apt install lib32z1 -y

Una vez completada la instalación de estas librerías, el ejecutable de 32 bits debería poder ejecutarse sin el error "No such file or directory".

Etiquetas: linux Ubuntu binario 32 bits 64 bits

Publicado el 7-14 23:34