प्रोग्राम फ़ाइल / usr / bin में मौजूद है, लेकिन इसका उपयोग नहीं किया जा सकता है


15

स्पष्ट रूप से मेरी फ़ाइल मौजूद है /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 /' आपके PATH में नहीं है। आपको /usr/bin/ngrokनिम्नलिखित मामले के साथ पूरी समरूपता के साथ परीक्षण करना चाहिए था sudo
पैट्रिक मेवजेक

जवाबों:


52

/usr/bin/ngrokएक सिमिलिंक होगा जो कहीं भी इंगित करता है (या गैर-मौजूदा फ़ाइल के बजाय)। के साथ जाँच करें ls -l


13
"डेरेफेरेंस नहीं कर सकते" त्रुटि यहाँ मृत मृतक है। आप एक सामान्य फ़ाइल को "डेरेफेरेंस" नहीं करते हैं, आप इसे खोलते हैं।
केविन

1
या readlink -f /usr/bin/ngrokयह पता लगाने के लिए कि लिंक को कहां इंगित करना चाहिए।
एरिक डुमिनील

याnamei -l /usr/bin/ngrok
हैन्सेनरिक

4

chownत्रुटि को देखते हुए , सबसे अधिक संभावना यह है कि यह एक सिमलिंक है, जैसा कि स्वेन द्वारा उत्तर दिया गया है । हालाँकि, अगर किसी के संदर्भ में कोई मामला यहां समाप्त होता है, जहां फ़ाइल मौजूद है और लिंक नहीं है, लेकिन एक कमांड-न-पाया / फ़ाइल-नहीं-मिली त्रुटि देता है, तो एक और संभावना यह है कि निष्पादन योग्य गतिशील रूप से जुड़ा हुआ है और किसी कारण से यह पुस्तकालयों को लोड करने में सक्षम नहीं है:

  • लापता पुस्तकालय ( lddबाइनरी पर चलाने के लिए उन्हें देखें)
  • लापता लोडर
  • एक पुस्तकालय या लोडर तक पहुंच से इनकार करने वाला अप्पर्मर
  • ...

साथ ही, स्क्रिप्ट के लिए, यदि शेबबैंग में दुभाषिया को समान कारणों से निष्पादित नहीं किया जा सकता है, तो आपको एक ही त्रुटि मिलेगी।


इससे भी अधिक भ्रामक, यह वास्तव में एक रहस्यपूर्ण "ऐसी कोई फ़ाइल या निर्देशिका नहीं" हो सकता है।
रैकैंडबॉमन

0

आपके पास स्वयं के साथ सिम्कलिन के स्वामित्व को बदलने का विकल्प भी है

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

यदि आप लक्ष्य फ़ाइल के स्वामित्व को बदलना नहीं चाहते (या अनुमति नहीं है)।


2
मुझे यकीन नहीं है कि यह सवाल का जवाब कैसे देता है - सवाल यह है कि "यहां क्या हो रहा है?" और समस्या यह है कि लक्ष्य फ़ाइल मौजूद नहीं है। यह समस्या को हल नहीं करता है और यह प्रश्न का उत्तर नहीं देता है।
wizzwizz4

1
@ wizzwizz4 मुझे लगता है कि आप इस प्रश्न की व्याख्या भी कर सकते हैं कि "फ़ाइल मौजूद है (सिमलिंक एक फ़ाइल है), यह मुझे अन्यथा क्यों बताता है और मैं इसका स्वामित्व क्यों नहीं बदल सकता?" यह उत्तर उस व्याख्या को कवर करता है। स्वेन की बस मानती है (शायद सही ढंग से) ओपी लक्ष्य फ़ाइल के साथ काम करना चाहता है।
जोएल

1
@ एमुरु यह एक लिनक्स सिस्टम पर लागू नहीं है, जिसमें सीमलिंक की अनुमति नहीं है। वास्तव में, लिनक्स कुछ में से एक है (है केवल?) POSIX-परिवार OSes इस बात का है सेट सिमलिंक मालिक / समूह की क्षमता है। लिनक्स chown(1)मैन पेज देखें । संभावित कारणों से लिनक्स पर चर्चा की जाती है unix.stackexchange.com/questions/33180/…
एंड्रयू हेनले

2
@AndrewHenle और यह कैसे मदद करता है? सिम्लिंक के लिए स्वामी / समूह को बदलने से यहां कोई फर्क नहीं पड़ता है क्योंकि क्रियान्वित होने के दौरान अनुमतियाँ लागू होती हैं जो हमेशा लक्ष्य फ़ाइल में होती हैं। तो आपके पास कोई भी लिंक हो सकता है, लेकिन उस लिंक पर स्वामित्व बदलने से इसे निष्पादित करते समय मानी जाने वाली अनुमतियों पर कोई फर्क नहीं पड़ता है।
मुरु

1
@ मरमू और यह कैसे मदद करता है? पढ़ें प्रश्न मैं पहले से ही जुड़ा हुआ है क्योंकि यह विशेष रूप से उससे पूछा "linux में मालिक या प्रतीकात्मक कड़ी (सिमलिंक) के समूह के स्वामी को बदलने के लिए संभव है। मैं सोच रहा था कि क्यों किसी को क्या करना चाहते हैं, के बाद से एक सिमलिंक की अनुमति नहीं हैं इसके माध्यम से किसी फ़ाइल तक पहुँचने पर उपयोग किया जाता है "
एंड्रयू हेनले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.