Question Comment puis-je résoudre l'erreur "ne peut pas exécuter le fichier binaire"?


Lorsque je me connecte avec SSH, tout ce que je peux voir, c'est que ...

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

Je ne pouvais rien faire ici. Des commandes telles que halt, poweroff, reboot reviendra command not found.

Comment puis-je réparer cela? J'utilise Debian Squeeze Linux


65
2018-06-12 21:26


origine


Qu'avez-vous fait à cette machine? - slhck
La dernière chose que j'ai faite était d'installer logwatch. Rien d'autre. - superuser
PATH est une variable d'environnement qui contient une liste de dossiers dans lesquels le shell recherche des programmes. lspar exemple, se réfère généralement à /bin/ls, et votre shell le trouve en parcourant les dossiers listés dans PATH un à un jusqu'à ce qu'il le trouve, ou s'il ne le trouve dans aucun d'entre eux, il abandonne. Je suppose qu'un meilleur point de départ serait, quelle est la sortie de echo $PATH ? (edit: le export La commande est un moyen de définir une variable d'environnement dans bash.) - Darth Android
Ah ... Je vous ai averti de ne pas éteindre le système: P Pouvez-vous y accéder (console physique + clavier connecté)? Essayez de démarrer le système en mode mono-utilisateur (peut être appelé mode de récupération) et voyez si vous pouvez accéder à un shell racine. - Darth Android
@David vous ne verrez aucune sortie après avoir tapé export PATH=/bin:/user/bin:/sbin:/usr/sbin. C'est une commande silencieuse. - Ben Richards


Réponses:


Ce message d'erreur signifie généralement que Linux ne reconnaît pas le fichier en tant que script shell ou en tant que fichier exécutable.

Généralement, la cause est d'exécuter un exécutable sur la mauvaise architecture - si vous essayez d'exécuter des exécutables x86 sur un processeur ARM, ce message s'affiche.

Fait /usr/bin/id être écrasé, éventuellement?


73
2018-06-13 03:07



"Si vous essayez d'exécuter des exécutables x86 sur un processeur ARM, ce message s'affiche." C'était EXACTEMENT ce qui l'a causé. Merci à tous pour vos contributions! - superuser


Essayez de l'exécuter en utilisant ./executablefilename au lieu d'utiliser sh executablefilename. Ce n'est pas un script shell après tout.


22
2018-06-13 01:27



J'ai eu ce problème en essayant de lancer kiwix-serve sur mon framboise pi. Je pense que ma solution globale consistait à ajuster les autorisations de fichiers (elle n’était pas définie sur exécutable par ./kiwix-serve - cchapman


Le problème est l'exécution d'un binaire pour une architecture de processeur différente. Vous pouvez utiliser objdump (à partir de binutils) pour vérifier l'architecture des binaires. Vous pouvez utiliser uname pour vérifier l'architecture d'une machine.

par exemple. J'ai rencontré cette erreur "impossible d'exécuter un fichier binaire" lors de l'installation de FF.Communicator - un plugin firefox pour chrome (pour que je puisse exécuter des pages utilisant des applets Java).

  • objdump montre que le binaire est 64 bits elf64-x86-64
  • ton nom montre que ma machine est 32 bits i686 

    $ ./FF.Communicateur bash: ./FF.Communicator: impossible d'exécuter un fichier binaire $ uname -mpio i686 i686 i386 GNU / Linux $ objdump -a ./FF.Communicator ./FF.Communicator: format de fichier elf64-x86-64 ./FF.Communicateur

  • objdump sur un binaire de travail sur ma machine montre qu'il est 32 bits elf32-i386

    $ objdump -a / bin / ls / bin / ls: format de fichier elf32-i386

En utilisant ces outils, vous pouvez vérifier les architectures des machines et des binaires - pas seulement les architectures Intel, mais aussi tous les processeurs.


9
2018-06-19 11:55





Je fais des suppositions folles ici, mais il semble que ce qui suit se passe:

  1. Vous vous connectez via SSH, en déclenchant bash pour courir votre ~/.profile ou ~/.bashrc configurer votre environnement pour vous (c'est normal).
  2. À un moment donné, il essaie d'exécuter /bin/id pour obtenir votre uid, qui échoue, provoquant une erreur d’expression d’entier, et terminer le script avant de pouvoir configurer votre $PATH.
  3. Parce que votre $PATH n'est pas défini, bash n'est capable que d'exécuter des commandes avec le chemin d'accès complet spécifié.

Utilisation export PATH=/bin:/usr/bin:/sbin:/usr/sbin pour réparer le $PATH problème jusqu'à ce que vous puissiez corriger la cause de l'échec de / bin / id.


5
2018-06-12 21:51





Le fichier binaire est constitué d'instructions machine que le processeur peut comprendre. Votre système d'exploitation ne signifie pas que le même exécutable s'exécutera. aller et venir entre le jeu d'instructions de processeur compatible avec fonctionne bien, s'ils ne sont pas compatibles, le processeur ne sera pas en mesure de comprendre les instructions.


0
2018-06-12 22:29





Vous exécutez une version incorrecte du programme d'installation, par exemple un ordinateur 64 bits et essayez d'installer la version 32 bits du programme d'installation.


-1
2017-07-25 08:43