O arquivo de programa existe em / usr / bin, mas não pode ser usado

15

Claramente, meu arquivo existe em /usr/bin

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

No entanto, quando tento chown , recebo um erro

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

Outras tentativas de execução também falham!

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

O que está acontecendo aqui?

    
por Jorik 05.02.2018 / 04:32

3 respostas

52

/usr/bin/ngrok será um symlink que não aponta para lugar nenhum (ou melhor, para um arquivo não existente). Verifique com ls -l .

    
por 05.02.2018 / 04:53
4

Dado o erro chown , a possibilidade mais provável é de que seja um link simbólico, como respondido pela Sven . No entanto, apenas para referência no caso de alguém acabar aqui para os casos em que o arquivo existe e não é um link, mas fornece um erro de comando não encontrado / arquivo não encontrado, mais uma possibilidade é que o executável seja dinamicamente vinculado e Por algum motivo, não é possível carregar bibliotecas:

Além disso, para um script, se o intérprete na shebang não puder ser executado por motivos semelhantes, você obterá o mesmo erro.

    
por 06.02.2018 / 03:38
0

Você também tem a opção de alterar a propriedade do próprio link simbólico com

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

se você não quiser (ou tiver permissão) para alterar a propriedade do arquivo de destino.

    
por 05.02.2018 / 20:56