Назад | Перейти на главную страницу

Программный файл существует в / 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

Что здесь происходит?

/usr/bin/ngrok будет символической ссылкой, которая никуда не указывает (точнее, на несуществующий файл). Проверить с ls -l.

Учитывая chown ошибка, наиболее вероятно, что это символическая ссылка, так как ответил Свен. Однако, просто для справки, если кто-то попадает сюда в случаях, когда файл существует и не является ссылкой, но дает ошибку command-not-found / file-not-found, еще одна возможность заключается в том, что исполняемый файл динамически связан и почему-то не может загружать библиотеки:

  • недостающая библиотека (запустить ldd на двоичном файле, чтобы увидеть их)
  • пропавший загрузчик
  • Apparmor отказ в доступе к библиотеке или загрузчику
  • ...

Кроме того, для сценария, если интерпретатор в shebang не может быть выполнен по аналогичным причинам, вы получите ту же ошибку.

У вас также есть возможность изменить владельца самой символической ссылки с помощью

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

если вы не хотите (или имеете разрешение) менять владельца целевого файла.