उबंटू कैसे जानता है कि क्या कार्यक्रम मौजूद हैं और उन्हें स्थापित किया जा सकता है?


9

मैंने एक टर्मिनल में निम्नलिखित टाइप किया

$ musique
The program 'musique' is currently not installed. You can install it by typing:
sudo apt-get install musique

तो उबंटू जानता है कि "मस्क्यू" एक कार्यक्रम है, हालांकि यह वर्तमान में मशीन पर स्थापित नहीं है। हालांकि, अगर मैं टाइप करता हूं

$ musiquez
No command 'musiquez' found, did you mean:
 Command 'musique' from package 'musique' (universe)

यह जानता है कि ऐसा कोई कार्यक्रम नहीं है जिसे "म्यूसिक" कहा जाता है।

मेरा सवाल यह है कि उबंटू यह कैसे जानता है? यह जानकारी उबंटू पर स्थापित किए जा सकने वाले अनुप्रयोगों के बारे में कहाँ संग्रहीत है?

जवाबों:


9

यह सुविधा कमांड-न-पाया द्वारा प्रदान की गई है (इसका कार्य पैकेज के गलत होने की स्थिति में विकल्प और सुधार के सुझाव देना है)। Ubuntu डिफ़ॉल्ट रूप से इसे स्थापित करता है।

यह कैसे काम करता है?

जिस तरह से यह काम करता है वह कार्य के माध्यम से command_not_found_handle()बैश में होता है। बैश एक हुक प्रदान करता है जो मूल रूप से एक फ़ंक्शन होता है जिसे कमांड नहीं मिलने पर आह्वान किया जाता है।


यदि आप अधिक उत्सुक हैं, तो /usr/lib/command-not-foundफ़ाइल खोलें और स्क्रिप्ट पर एक नज़र डालें। यह अजगर मॉड्यूल CommandNotFound का उपयोग करके काम करता है।

यहाँ छवि विवरण दर्ज करें


4

संकुल की एक जोड़ी, command-not-foundऔर command-not-found-data, जो इस सुविधा का काम करती है।

command-not-foundबस command_not_found_handle()बैश फ़ंक्शन के लिए एक हैंडलर है; यह आदेशों और पैकेजों के बीच मैपिंग के बारे में डेटा के माध्यम से खोज करता है command-not-found-data


मुझे लगता है कि command-not-foundतब रिपॉजिटरी के स्थानीय कैश के माध्यम से जांच करता है जो हर बार उपयोगकर्ता द्वारा चलाया जाता है sudo apt-get update
nerdwaller
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.