Como posso resolver o erro “não é possível executar o arquivo binário”?

67

Quando eu faço o login usando o SSH, tudo que consigo ver é isso ...

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

Eu não pude fazer nada aqui. Comandos como halt , poweroff , reboot retornarão command not found .

Como posso consertar isso? Eu estou usando Debian Squeeze Linux

    
por superuser 12.06.2012 / 23:26

7 respostas

73

Normalmente, essa mensagem de erro significa que o Linux não reconhece o arquivo como um script de shell ou como um arquivo executável.

Normalmente, a causa é executar um executável na arquitetura incorreta - se você tentar executar executáveis x86 em uma CPU ARM, esta mensagem será exibida.

Algum /usr/bin/id foi sobrescrito, possivelmente?

    
por 13.06.2012 / 05:07
22

Tente executá-lo usando ./executablefilename em vez de usar sh executablefilename. Não é um script de shell, afinal.

    
por 13.06.2012 / 03:27
9

O problema é executar um binário para uma arquitetura de processador diferente. Você pode usar o objdump (do binutils) para verificar a arquitetura dos binários. Você pode usar o uname para verificar a arquitetura de uma máquina.

por exemplo. Eu encontrei esse erro "não é possível executar o arquivo binário" ao instalar o FF.Communicator - um plugin do firefox para o chrome (para que eu possa executar páginas que usam applets java).

  • objdump mostra que o binário é de 64 bits elf64-x86-64
  • uname mostra que minha máquina é de 32 bits

    $ ./FF.Communicator bash: ./FF.Communicator: não é possível executar o arquivo binário $ uname -mpio i686 i686 i386 GNU / Linux $ objdump -a ./FF.Communicator ./FF.Communicator: formato de arquivo elf64-x86-64 ./FF.Communicator

  • objdump em um binário de trabalho na minha máquina mostra que é 32-bit elf32-i386

    $ objdump -a / bin / ls / bin / ls: formato de arquivo elf32-i386

Usando essas ferramentas, você pode verificar arquiteturas de máquinas e binários - não apenas arquiteturas intel, mas qualquer processador.

    
por 19.06.2015 / 13:55
5

Estou fazendo algumas estimativas loucas aqui, mas parece que está acontecendo o seguinte:

  1. Você faz login no SSH, acionando bash para executar seu ~/.profile ou ~/.bashrc para configurar seu ambiente para você (isso é normal).
  2. Em algum momento, ele tenta executar /bin/id para obter seu uid, que falha, causando erro de expressão de número inteiro e encerrando o script antes de poder configurar seu $PATH .
  3. Como o seu $PATH não está definido, o bash só pode executar comandos com o caminho completo especificado.

Use export PATH=/bin:/usr/bin:/sbin:/usr/sbin para corrigir o problema de $PATH até que você possa corrigir a causa raiz da falha / bin / id.

    
por 12.06.2012 / 23:51
0

arquivo binário consiste em instruções de máquina que o processador pode entender. Seu sistema operacional não significa que o mesmo executável será executado. mover para frente e para trás entre o conjunto de instruções do processador compatível com o geralmente funciona bem, se eles não forem compatíveis, a CPU não conseguirá entender as instruções.

    
por 13.06.2012 / 00:29
0

Isso significa que você está tentando executar um arquivo binário usando o script bash que não deve ser executado como você está tentando. Já é um arquivo binário e você está tentando o seu $ SHELL para analisá-lo e executá-lo.

em um exemplo muito simples, se você tentar executar o comando 'w' como

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

Da mesma forma, você pode estar usando o mesmo método ou aparência do seu snippet de código.

Enquanto, para o restante de seus comandos, todos esses comandos de parada, desligamento, reinicialização etc. são os comandos de propriedade da raiz e precisam de privilégios de superusuário para executar e executar a operação necessária. usuários normais não podem executá-los Outra explicação é que esses comandos são colocados em / sbin / e / usr / sbin, o que pode não estar em sua variável $ PATH (que é usada para validar comandos sob sua custódia)

    
por 24.10.2018 / 16:01
-1

Você está executando uma versão incorreta do instalador, por exemplo, uma máquina de 64 bits e tentando instalar uma versão de 32 bits do instalador.

    
por 25.07.2018 / 10:43