web-dev-qa-db-ja.com

プログラムファイルは/ usr / binに存在しますが、使用できません

明らかに私のファイルは/usr/binに存在します

$ ls /usr/bin/ngrok
/usr/bin/ngrok

ただし、chownを実行しようとすると、エラーが発生します

$ Sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory

それを実行しようとすると、さらに失敗します!

$ ngrok
bash: ngrok: command not found
$ Sudo /usr/bin/ngrok
Sudo: /usr/bin/ngrok: command not found

ここで何が起きてるの?

15
Jorik

/usr/bin/ngrokは、どこも指し示さない(または、存在しないファイルを指す)シンボリックリンクになります。確認する ls -l

52
Sven

chownエラーを考えると、可能性が最も高いのは Svenによる回答 のようにシンボリックリンクであるということです。ただし、ファイルが存在してリンクではない場合に誰かがここに行き着くが、command-not-found/file-not-foundエラーが発生した場合の参考として、実行可能ファイルが動的にリンクされ、何らかの理由でライブラリをロードできません:

  • ライブラリがありません(バイナリでlddを実行してそれらを確認してください)
  • ローダーがありません
  • apparmor ライブラリまたはローダーへのアクセスを拒否
  • ...

また、スクリプトの場合、シェバンのインタープリターが同様の理由で実行できなかった場合、同じエラーが発生します。

4
muru

シンボリックリンク自体の所有権を変更するオプションもあります

chown -h my_user:users /usr/bin/ngrok

ターゲットファイルの所有権を変更したくない場合(または権限がない場合)。

0
weasel5i2