2012-06-12 21:26:53 +0000 2012-06-12 21:26:53 +0000
88
88

¿Cómo puedo resolver el error "no puedo ejecutar el archivo binario"?

Cuando inicio sesión usando SSH, todo lo que puedo ver es esto…

-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected

No pude hacer nada aquí. Comandos como halt, poweroff, reboot devolverán command not found.

¿Cómo puedo arreglar esto? Estoy usando Debian Squeeze Linux

Respuestas (7)

92
92
92
2012-06-13 03:07:20 +0000

Normalmente ese mensaje de error significa que Linux no reconoce el archivo como un script de shell o como un archivo ejecutable.

Típicamente la causa es ejecutar un ejecutable en la arquitectura equivocada - si tratas de ejecutar ejecutables x86 en una CPU ARM, aparece este mensaje.

¿Se sobrescribió /usr/bin/id, posiblemente?

26
26
26
2012-06-13 01:27:14 +0000

Intenta ejecutarlo usando ./nombre de archivo ejecutable en lugar de usar sh nombre de archivo ejecutable. No es un script de shell después de todo.

9
9
9
2015-06-19 11:55:00 +0000

El problema es ejecutar un binario para una arquitectura de procesador diferente. Puedes usar objdump (de binutils) para comprobar la arquitectura de los binarios. Puedes usar uname para comprobar la arquitectura de una máquina.

por ejemplo, me encontré con este error “cannot execute binary file” al instalar FF.Communicator - un plugin de Firefox para chrome (así puedo ejecutar páginas que usan applets de Java).

  • objdump muestra que el binario es de 64 bits elf64-x86-64
  • uname muestra que mi máquina es de 32 bits i686

  • objdump en un binario en funcionamiento en mi máquina muestra que es de 32 bits elf32-i386

Usando estas herramientas puedes comprobar las arquitecturas de las máquinas y los binarios - no sólo las arquitecturas de inteligencia sino cualquier procesador.

Para los usuarios de Mac OSX, puedes encontrar la información de la arquitectura de un archivo específico usando el comando “file”:

$ file filename_here
6
6
6
2012-06-12 21:51:34 +0000

Estoy haciendo algunas conjeturas salvajes aquí, pero parece que está sucediendo lo siguiente:

  1. Te conectas a través de SSH, activando bash para ejecutar tu ~/.profile o ~/.bashrc para configurar tu entorno por ti (esto es normal).
  2. En algún momento intenta ejecutar /bin/id para obtener tu uid, lo cual falla, causando un error de expresión entera, y terminando el script antes de que pueda configurar tu $PATH.
  3. Debido a que su $PATH no está configurado, bash sólo puede ejecutar comandos con la ruta completa especificada.

Use export PATH=/bin:/usr/bin:/sbin:/usr/sbin para arreglar el problema de $PATH hasta que pueda arreglar la causa raíz de la falla de /bin/id.

0
0
0
2018-10-24 14:01:42 +0000

Esto significa que estás intentando ejecutar un archivo binario usando tu script bash que no está pensado para ser ejecutado como tú lo intentas. Ya es un archivo binario y estás intentando que tu $SHELL lo analice y lo ejecute.

en un ejemplo muy simple, si intentas ejecutar el comando `w’ como

$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file

de manera similar podrías estar golpeando el mismo método o como se ve en tu fragmento de código.

Mientras que, para el resto de sus comandos, todos estos comandos de detener, apagar, reiniciar, etc., son los comandos propiedad de la raíz y necesitan prilveges de superusuario para ejecutarse y realizar la operación requerida. los usuarios normales no pueden ejecutarlos otra explicación es que estos comandos se colocan en /sbin/ y /usr/sbin , que podría no estar en su variable $PATH ( que se utiliza para validar los comandos bajo su custodia )

0
0
0
2012-06-12 22:29:57 +0000

El archivo binario consiste en instrucciones de la máquina que el procesador puede entender. Su sistema operativo no significa que se ejecute el mismo ejecutable. moverse hacia adelante y hacia atrás entre el conjunto de instrucciones del procesador compatible con suele funcionar bien, si no son compatibles la CPU no podrá entender las instrucciones.

-1
-1
-1
2018-07-25 08:43:45 +0000

Está ejecutando una versión incorrecta del instalador, por ejemplo, una máquina de 64 bits e intenta instalar una versión de 32 bits del instalador.