जब आप कमांड टाइप करते हैं जो आपके सिस्टम में मौजूद नहीं है तो फंक्शन रन करता है command_not_found_handle()
। इस फ़ंक्शन में /usr/lib/command-not-found
स्क्रिप्ट के लिए एक कॉल है जो संदेशों को प्रिंट करता है।
उबुन्टु 12.04
stdout
इसके बजाय संदेशों को प्रिंट करने के लिए इस स्क्रिप्ट के स्रोत को बदलने के लिए मेरा पहला अनुमान है stderr
, लेकिन जब मैं स्क्रिप्ट के स्रोत को पढ़ रहा था तो मैंने पाया कि आप इसे कॉन्फ़िगर करने के लिए पूछ सकते हैं कि क्या आप लापता पैकेज को स्थापित करना चाहते हैं।
यदि आप वैरिएबल निर्यात करते हैं, तो आपको COMMAND_NOT_FOUND_INSTALL_PROMPT
लापता पैकेज स्थापित करने के लिए कहा जाएगा:
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
pbm@ubuntu:~$ export COMMAND_NOT_FOUND_INSTALL_PROMPT=""
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
Do you want to install it? (N/y)y
sudo apt-get install git
[sudo] password for pbm:
उबंटू के पुराने संस्करण
दुर्भाग्य से ऐसा नहीं है, COMMAND_NOT_FOUND_INSTALL_PROMPT
इसलिए मुझे कुछ अन्य विकल्प मिल सकते हैं:
1) 12.04 से पैकेज स्थापित करें - यह समस्या नहीं होनी चाहिए - यह पायथन में केवल कुछ स्क्रिप्ट है इसलिए इसे काम करना चाहिए (अनट्रेड!)।
2) बदलें stderr
करने के लिए stdout
। यह संपादित फ़ाइल ऐसा करने के लिए /usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.py
और परिवर्तन stderr
करने के लिए stdout
लाइनों 237 और 240 में।
उसके बाद आप इसे इस तरह से उपयोग कर सकते हैं:
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
pbm@ubuntu:~$ `git`
//Installation begins
यदि आप 237 और 240 लाइनों में कमांड का -y
विकल्प जोड़ते हैं तो आप apt-get
सिंटैक्स का उपयोग भी कर सकते हैं !! | sh
।
३) आप इस लिपि को २४२ पंक्ति से इस प्रकार भी संशोधित कर सकते हैं:
print >> sys.stderr, _("You can install it by typing:")
f = open("%s/.install-missing" % os.path.expanduser('~'),'w')
print >> sys.stderr, "sudo apt-get install %s" % packages[0][0]
print >> f, "sudo apt-get install %s" % packages[0][0]
f.close()
इस तरह से आपको फ़ाइल में आपकी कमांड मिल जाएगी ~/.install-missing
, जिससे आप उपनाम बना सकते हैं:
alias im="chmod +x ~/.install-missing; ~/.install-missing"
आप कॉल im
पैकेज स्थापित किया जाएगा।
/usr/lib/command-not-found
लेकिनCOMMAND_NOT_FOUND_INSTALL_PROMPT
- विचारों का कोई संदर्भ नहीं है ?