「そのようなファイルやディレクトリはありません」が存在します


93

コマンドラインから実行可能ファイルを実行したいのです./arm-mingw32ce-g++が、エラーメッセージが表示されます。

bash: ./arm-mingw32ce-g++: No such file or directory

Ubuntu Linux10.10を実行しています。ls -lリスト

-rwxr-xr-x 1 root root  433308 2010-10-16 21:32 arm-mingw32ce-g++

sudo(sudo ./arm-mingw32ce-g++)を使用すると、

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

そこにあるときにOSがファイルを見ることができない理由がわかりません。何かご意見は?

回答:


81

このエラー./arm-mingw32ce-g++は、存在しない(ただし存在する)か、存在し、カーネルによって認識される動的にリンクされた実行可能ファイルであるが、動的ローダーが使用できないことを意味する場合があります。ldd /arm-mingw32ce-g++;を実行すると、必要なダイナミックローダーを確認できます。マークされているものnot foundはすべて、インストールする必要のあるダイナミックローダーまたはライブラリです。

amd64インストールで32ビットバイナリを実行しようとしている場合:

  • Ubuntu 11.04までは、パッケージをインストールしてくださいia32-libs
  • Ubuntu 11.10では、をインストールしia32-libs-multiarchます。
  • 12.04以降、パッケージに加えて、ia32-libs-multiarch適切な:i386パッケージのセットをインストールまたは選択し:amd64ます。

16
素晴らしい、動作します!ちなみに、lddの出力はnot a dynamic executable(ia32-libsをインストールする前)でした。
ワープスペース2010年

3
ia32-libs-*Ubuntu 16.04では非推奨です。代わりに、インストールlib32ncurses5lib32z1てください。
GaloisPlusPlus 2017年

2
これは、サードパーティのバイナリを実行しようとするときのNixまたはNixOSの一般的な問題です。patchelfを参照してください。
bbarker

29

UbuntuでSeleniumソースをビルドしようとしたときに、このエラーに直面しました。すべての前提条件を満たした後でも、正しいシバンを使用した単純なシェルスクリプトを実行できませんでした。

file file-name # helped me in understanding that CRLF ending were present in the file.

ファイルをVimで開いたところ、Windowsマシンでこのファイルを編集したからといって、DOS形式であることがわかりました。以下のコマンドでファイルをUnix形式に変換しました。

dos2unix filename # actually helped me and things were fine.

プラットフォーム間でファイルを編集するときは常に、ファイル形式にも注意を払う必要があることを願っています。


出来た!複数のことを試した後、これが解決策でした。ありがとう!
ペドロ・ペレス

20

このエラーは、スクリプトを実行しようとして、シバンのスペルが間違っている場合にも発生する可能性があります。ことを確認し、それが読み込み#!/bin/sh#!/bin/bashまたはあなたが使用している方の通訳。


4
スクリプトではなく、実行可能ファイルを参照しています。繰り返しになりますが、他の誰かがこのコメントが役立つと思うかもしれません
Warpspace 2014年

1
本当ですが、私はこの正確な問題についてこの質問にたどり着きました。あなたが言ったように、おそらく他の誰かもそうするでしょう。
ゾルタン2014年

私の場合、の./my/full/path/myscript代わりに実行しようとしていました./myscript
ヌーメノン2017

8

Pythonスクリプトを実行しようとしたときに同じエラーメッセージが表示されました。これは@Warpspaceの意図されたユースケースではありませんでしたが(他のコメントを参照)、これは私の検索のトップヒットの1つだったので、誰かが役立つと思うかもしれません。

私の場合、シバン行()がつまずくの\r\nは(ではなく\n)DOS行末でした#!/usr/bin/env python。簡単にdos2unix myfile.py修正しました。


4

32/64ビットの問題が発生しない単純なbashスクリプトでも同じエラーが発生しました。これは、実行しようとしているスクリプトにエラーがあることが原因である可能性があります。このubuntuフォーラムの投稿は、通常のスクリプトファイルでは、前に「sh」を追加でき、そこからデバッグ出力が得られる可能性があることを示しています。例えば

$ sudo sh arm-mingw32ce-g++

出力が得られるかどうかを確認します。

私の場合、実際の問題は、実行しようとしたファイルがLinuxではなくWindows形式であったことでした。


3

このエラー“No such file or directory”が発生しましたが、ファイルがWindowsで作成され、Ubuntuで実行しようとしましたが、新しい行がある場合はファイルに無効な15 \ rが含まれていたために発生します。不要なものを切り捨てる新しいファイルを作成しました

sleep: invalid time interval ‘15\r’
Try 'sleep --help' for more information.
script.sh: 5: script.sh: /opt/ag/cont: not found
script.sh: 6: script.sh: /opt/ag/cont: not found
root@Ubuntu14:/home/abc12/Desktop# vi script.sh 
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \r  \n   w   g   e   t       h   t   t   p   :   /

0000400   :   4   1   2   0   /  \r  \n
0000410
root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  \n   w   g   e   t       h   t   t   p   :   /   /

0000400   /  \n
0000402
root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

3

以下のコマンドは16.4Ubuntuで機能しました

この問題は、.shファイルが破損しているか、UNIXプロトコルに従ってフォーマットされていない場合に発生します。

dos2unixは.shファイルをUnix形式に変換します!

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh 
sudo ./test.sh

1

Macで作成したファイルでも同じ問題が発生しました。./filenameを使用してシェルで実行しようとすると、ファイルが見つかりませんというエラーメッセージが表示されます。ファイルに問題があったと思います。

私がしたこと:

サーバへのSSHセッションを開き、
猫のファイル名は、
クリップボードに出力をコピーする
のrmファイル名の
タッチファイル名
のviファイル名
I挿入モード用
クリップボードからコンテンツ貼り付ける
モード挿入し最後にESCを
:WQを!

これは私のために働いた。


1

私はちょうどこの問題を抱えていましたmingw32 bash。node / npmをから実行してからProgram Files (x86)\nodejsdisabledディレクトリに移動しました(基本的にパスから削除しました)。Program Files\nodejsパスにも(つまり64ビットバージョン)がありましたが、x86バージョンの後でのみです。bashシェルを再起動した後、64ビットバージョンのnpmが見つかりました。node常に正しく機能していました(node -vx86バージョンが移動されたときに変更されたもので確認されました)。

bash -rbashを再起動する代わりに機能したと思います:https//unix.stackexchange.com/a/5610


1

他の人が言っているように、これは、実行可能ファイルではなく、ローダーが見つからないためです。残念ながら、メッセージは十分に明確ではありません。

実行可能ファイルが使用するローダーを変更することで修正できます。この別の質問で私の完全な答えを参照してください:単一のホスト上の複数のglibcライブラリ

基本的に、使用しようとしているローダーを見つける必要があります。

$ readelf -l arm-mingw32ce-g++ | grep interpreter
  [Requesting program interpreter: /lib/ld-linux.so.2]

次に、同等のローダーの正しいパスを見つけ、実行可能ファイルを変更して、実際のパスからローダーを使用します。

$ ./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 arm-mingw32ce-g++

インクルードのパスも設定する必要があります。実行しようとすると、パスが必要かどうかがわかります。他のスレッドのすべての詳細を参照してください。


1

ここでUbuntu18のソリューションを見つけまし

sudo dpkg --add-architecture i386

次に:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

0

私はこの問題を抱えていましたが、その理由はNotepad ++などの一部のエディターでのEOLでした。[編集]メニュー/ EOL変換で確認できます。Unix(LF)を選択する必要があります。お役に立てば幸いです。


コマンドはファイルから実行されないため、この場合は問題になる可能性はほとんどありません。
RalfFriedl

0

今後の参照用にここに追加(同じケースに該当する可能性のあるユーザー向け): このエラーは、Windows(Linuxシステムとは行区切り文字が異なるために余分な文字が導入される)で作業し、このスクリプトを実行しようとしたときに発生します(余分な文字が挿入されています) Linuxでは。エラーメッセージは誤解を招く恐れがあります。

Windowsでは、行区切り文字はCRLF(\ r \ n)ですが、LinuxではLF(\ n)です。これは通常、テキストエディタで選択できます。

私の場合、これはWindowsで作業し、実行のためにUnixサーバーにアップロードしたために発生しました。


1
Docker、Linuxを使用していますが、Windowsからビルドしています。scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)その後cd $scriptdir || exit 1、スクリプトが開始さ\rれましたが、windowsで編集されたファイルのがscriptdir値に追加されました。それで、メッセージ: no such file or directoryはそれが不平を言っていたものを消してしまうので、最も混乱しました。
ジェシーチザム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.