"प्रोग्राम 'x' वर्तमान में स्थापित नहीं होने के बाद प्रोग्राम इंस्टॉल करने के लिए कहें"


18

यदि आप उस प्रोग्राम को निष्पादित करने का प्रयास करते हैं जो स्थापित नहीं है, तो आपको एक संदेश मिलेगा

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

और आपके लिए कार्यक्रम को स्थापित करने की पेशकश करने के बजाय, आपको वास्तविक कमांड टाइप करना होगा। इस व्यवहार को कैसे बदला जा सकता है?

जवाबों:


17

पैकेज जो इस व्यवहार के लिए जिम्मेदार है, कमांड-न-पाया गयाआदेश-स्थापित-पाया नहीं पैकेज है, और इसमें पहले से ही वांछित व्यवहार शामिल है, हालांकि यह डिफ़ॉल्ट रूप से अक्षम है। आप निम्न पंक्ति को अपने साथ जोड़कर इसे सक्षम कर सकते हैं~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

अब व्यवहार को बदल दिया गया है

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

नोट: यदि आपको अजगर दुर्घटनाग्रस्त होने के बारे में संदेश मिलता है (विशेष रूप से AttributeError: 'str' object has no attribute 'decode') यह बग 1073919 है । रेयरिंग और सॉसी के लिए एक फिक्स पहले से ही उपलब्ध है। वैकल्पिक रूप से ( केवल उन्नत उपयोगकर्ता ), आप फ़ाइल को बदल सकते हैं /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py, उन पंक्तियों के लिए बग्रेपोर्ट से जुड़ा हुआ देखें, जिन्हें बदलना आवश्यक है।

संपादित करें: फिक्स अब संस्करण 0.3ubuntu7.1 में रेरिंग (SRU) में और Sauby में 0.3ubuntu8 के लिए जारी किया गया है।


1

मेरा समाधान सुरक्षा और आराम के बीच एक संकर है:

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

यह एक टर्मिनल-एमुलेटर है, जहां आप एक ऐसे वातावरण में प्रवेश करते हैं, जहां प्रत्येक फ़ाइल एक्सेस को ऑटो-एप द्वारा हाथ से पहले सत्यापित किया जाता है और यदि यह मौजूद नहीं है तो डेटाबेस में सर्च करें (ला apt-file) और वांछित पैकेज को डाउनलोड और इंस्टॉल करें, फिर प्रोग्राम को जारी रखने की अनुमति देता है । आपको इसे रूट के रूप में निष्पादित करना चाहिए:

sudo auto-apt

यह उन मामलों में उपयोगी है जहां आप एक पैकेज का निर्माण कर रहे हैं और स्क्रीन के सामने रहने के मूड में नहीं हैं, लापता हेडिंग के लिए प्रत्येक कॉन्फ़िगर त्रुटि की तलाश कर रहे हैं, आदि।

यह भी apt-get + apt-file प्रतिस्थापन के रूप में उपयोग किया जा सकता है जहां आप commandइसे निष्पादित करने के लिए कह रहे कार्यक्रमों को स्थापित कर सकते हैं ।

आपको यह समझना चाहिए कि जब आपके सिस्टम को देखा नहीं जाता है, तो आपको इसे खुला नहीं छोड़ना चाहिए, क्योंकि यह लगभग ऐसा है जैसे आप रूट उपयोगकर्ता का उपयोग कर रहे थे।

मैन पेज: http://derpi.tuwien.ac.at/cgi-bin/man/man2html?1+auto-apt


0

ऑटो इंस्टॉल करना एक बुरा विचार होगा। यदि आप कुछ टाइपिंग को सहेजना चाहते हैं तो आप उपयोग कर सकते हैं

sudo apt-get install !!

जहां !!इतिहास से अंतिम आदेश द्वारा प्रतिस्थापित किया जाएगा। आप शायद इसे एक उपनाम भी बना सकते हैं, लेकिन मुझे नहीं पता कि !!इसका मूल्यांकन किए बिना कैसे जोड़ा जाए।

हालाँकि, कुछ प्रश्न हैं, जैसा कि टिप्पणियों में @ eliah-kagan और @gertvdijk द्वारा बताया गया है। कुछ कार्यक्रमों में आपके द्वारा निष्पादित बाइनरी के समान पैकेज नाम नहीं होता है। इसके अलावा, जब बाइनरी में तर्क पारित करते हैं, तो इसके परिणामस्वरूप कुछ अप्रत्याशित परिणाम हो सकते हैं।


यकीन है, मुझे पता है कि मेरा सुझाव एक महान समाधान नहीं है, लेकिन यह उपयोगकर्ताओं की आवश्यकता के आधार पर "काफी अच्छा" काम कर सकता है।
l3dx

5
कमांड नाम (सिस्टम पर बाइनरी का फ़ाइल नाम) जरूरी नहीं कि पैकेज के नाम के समान हो।
gertvdijk

3
l3dx: हालाँकि मेरे पास अभी भी मेरी गलतियाँ हैं (@ gertvdijk की बात सहित कि पैकेज और कमांड के नाम अक्सर अलग-अलग होते हैं, साथ ही मूल कमांड को पारित अतिरिक्त कमांड-लाइन तर्कों के संभवतः बहुत बुरे प्रभावों के बारे में चिंताएं), ऐसा लगता है कि आप कुछ पर हैं । थोड़ा परीक्षण के बाद, यह प्रतीत होता है कि यह व्यवहार में बेहतर काम करता है (मुझे लगता है) यह सिद्धांत में काम करता है। मैं अभी भी स्पष्टीकरण, चेतावनी और शायद अन्य विकल्पों का विस्तार करने के लिए इस उत्तर का विस्तार करने की सलाह देता हूं। किसी भी मामले में, मैंने इसे डाउनवोट कर दिया था, लेकिन मेरे डाउनवोट को हटा दिया है।
एलिया कागन

0

सुझाए गए पैकेज को जल्दी से स्थापित करने के लिए कुछ तरीके हैं:

  • export COMMAND_NOT_FOUND_INSTALL_PROMPT=1जैसे कहीं जोड़ो~/.bashrc

    यह "सबसे अच्छा" तरीका है, हालांकि स्पष्ट रूप से काफी सुरक्षित नहीं है, लेकिन शायद 90% समय एक आंतरिक "धन्यवाद" होगा, यही वह है जो मैं आपको करना चाहता था! " प्रतिक्रिया।

    (इस पद्धति का एक व्यक्तिगत दोष यह है कि मुझे याद रखने / खोजने के लिए उत्तर कठिन प्रतीत होता है, इसलिए मुझे अब तक इसका उपयोग नहीं करना पड़ता है।)

  • यदि आप डिफ़ॉल्ट टर्मिनल का उपयोग कर रहे हैं, तो आप जल्दी से लाइन का चयन कर सकते हैं और इसे सीधे कमांड लाइन में पेस्ट करने के लिए मध्य-क्लिक कर सकते हैं। (अन्य टर्मिनल या एसएसएच ऐप में अलग-अलग तरीके हो सकते हैं।)

    व्यवहार में, मैं इसे जल्दी से खोजने के लिए, और "गलती से" करने के लिए थोड़ा कठिन है, और किसी भी पूर्व सेटअप की आवश्यकता के बिना, कि मैं इसके बजाय ऐसा करना चाहता हूं।

  • कुछ कहा जाना है, हालांकि - अगर आप (या सीखना चाहते हैं) जल्दी टाइप कर सकते हैं - sudo apt install packagenameसीधे टाइप करने के लिए ।

    यह आपको अपनी मांसपेशियों की स्मृति का अभ्यास करने में मदद करता है, और इसका मतलब यह भी है कि आपको पैकेज का नाम पढ़ना और टाइप करना है, जिसका अर्थ है कि आप इसे भविष्य में और अधिक आसानी से याद कर पाएंगे। हाल के उबंटू संस्करणों में यह थोड़ा आसान है, क्योंकि aptइसके स्थान पर काम करता है apt-get


1
आप शायद ~/.bashrcइसके बजाय मतलब था ~/.bash_rc
edwinksl

धन्यवाद, मैं शायद सोच रहा था .bash_profile
mwfearnley
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.