Program dosyası / usr / bin dizininde mevcut ancak kullanılamıyor


15

Açıkça benim dosyam var /usr/bin

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

Ancak, denediğimde chownbir hata alıyorum

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

Çalıştırmak için başka girişimler de başarısız!

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

Burada ne oluyor?


Üçüncü nokta da '/ usr / bin /' PATH'nizde değilse olabilir. /usr/bin/ngrokAşağıdaki durumun tam bir simetrisi olup olmadığını test etmelisiniz sudo.
Patrick Mevzek

Yanıtlar:


52

/usr/bin/ngrokhiçbir yere (veya daha ziyade var olmayan bir dosyaya) işaret eden bir simge bağlantısı olacaktır. İle kontrol edin ls -l.


13
"Dereference olamaz" hatası burada ölü hediye olduğunu. Normal bir dosyayı "dereference" yapmazsınız, açarsınız.
Kevin

1
Ya readlink -f /usr/bin/ngrokda bağlantının nereye işaret etmesi gerektiğini bulmak için.
Eric Duminil

veyanamei -l /usr/bin/ngrok
hanshenrik

4

chownHata göz önüne alındığında, en olası olasılık Sven tarafından yanıtlandığı gibi bunun bir sembolik bağlantısı olmasıdır . Ancak, birisinin dosyanın var olduğu ve bir bağlantı olmadığı, ancak bir komut bulunamadı / dosya bulunamadı hatası verdiği durumlar için burada bitmesi durumunda referans olması için, bir başka olasılık da yürütülebilir dosyanın dinamik olarak bağlı olması ve nedense kütüphaneleri yükleyemiyor:

  • eksik kütüphane ( lddbunları görmek için ikili dosya üzerinde çalıştırın )
  • eksik yükleyici
  • AppArmoru kütüphane veya yükleyici erişimi yasaklamak
  • ...

Ayrıca, bir komut dosyası için, shebang'daki yorumlayıcı benzer nedenlerle yürütülemezse, aynı hatayı alırsınız.


Daha da kafa karıştırıcı olan bu durum esrarengiz bir “böyle dosya veya dizin yok” ile sonuçlanabilir.
rackandboneman

0

Ayrıca, symlink'in sahipliğini değiştirme seçeneğiniz de vardır.

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

hedef dosyanın sahipliğini değiştirmek istemiyorsanız (veya izniniz yoksa).


2
Bunun soruyu nasıl cevapladığından emin değilim - soru "Burada neler oluyor?" ve sorun şu ki, hedef dosya mevcut değil. Bu sorunu çözmez ve soruyu cevaplamaz.
wizzwizz4

1
@ wizzwizz4 Soruyu da "dosya var (simge bağlantısı bir dosya), neden bana başka türlü söylüyor ve sahipliğini neden değiştiremiyorum?" Bu cevap bu yorumu kapsar. Sven, OP'nin hedef dosyayla çalışmak istediğini (muhtemelen doğru olduğunu) varsayar.
JoL

1
@muru Bu, sembolik bağlantı izinleri olmayan bir Linux sisteminde geçerli değildir. Aslında Linux birkaç biridir (sadece?) POSIX ailesi Oses'lerin gelmez seti Sembolik bağ sahibi / grubun yeteneğine sahip. Linux chown(1)kılavuz sayfasına bakınız . Linux'un bunu yapmasının
Andrew Henle

2
@AndrewHenle ve bu nasıl yardımcı oluyor? Bir sembolik bağlantının sahibini / grubunu değiştirmek burada bir fark yaratmaz, çünkü yürütme sırasında uygulanan izinler her zaman hedef dosyaya aittir. Böylece, kimin sahip olduğu bir bağlantınız olabilir, ancak bu bağlantının sahipliğini değiştirmek, bağlantıyı yürütürken dikkate alınan izinlerde kesinlikle hiçbir fark yaratmaz.
muru

1
@muru ve bu nasıl yardımcı oluyor? Oku Zaten bağlantılı soruyu o özellikle sorar tarihi: "Bu sahibi ya da sembolik bir bağlantı (sembolik link) grubu sahibini değiştirmek mümkün linux olarak. Birisi bunu neden istediğini bir sembolik bağın izinleri olmadıklarından merak ediyordum bir dosyaya erişirken kullanılır "
Andrew Henle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.