重複の可能性:
Optwareがインストールされているバイナリに、「該当するファイルやディレクトリはありません」と表示されます。
小さなルーターボックスにebtablesを追加しようとしています。行き、正しいアーキテクチャに合わせてコンパイルされたバイナリをインポートし、ここに入れました/sbin/
。これにより、/sbin/ebtables
シェルは次のように言いますが、これは/bin/sh: /sbin/ebtables: not found
完璧ls -l /sbin/ebtables
に表示されます。
-rwxr-xr-x 1 admin admin 4808 Aug 4 10:36 /sbin/ebtables
ここで何が起こっているのかというアイデアはありますか?
答え1
依存関係が欠落している可能性があります。ELF
ヘッダーに設定されたランタイムリンカ(「プログラムインタプリタ」)がシステムに存在しない場合、このタイプのメッセージを受け取ることに注意する価値があります。
これを確認するには:
readelf -l your_executable|grep "program interpreter"
それが提供するものがシステムに存在しない場合、または依存関係が欠落している場合(確認ldd
)、奇妙なエラーメッセージが表示されます。
デモ:
$ gcc -o test t.c
$ readelf -l test|grep "program interpreter"
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
$ ./test
hello!
$ gcc -Wl,--dynamic-linker -Wl,/i/dont/exist.so -o test t.c
$ readelf -l test|grep "program interpreter"
[Requesting program interpreter: /i/dont/exist.so]
$ ./test
bash: ./test: No such file or directory
答え2
あなたはそれを実行しますかroot
? IIRC 一部の bash 実装は実行を拒否します。何もないで/sbin
、/usr/sbin
そうでない場合root
。
私が見つけたこの記事説明を探しています(OpenSUSEについて話しても関係ないかもしれません)。