क्यों `sudo apt-get स्थापित करें XXXX` कभी-कभी पुष्टि का अनुरोध करते हैं, अन्य नहीं?


29

बस जिज्ञासा के लिए, कभी-कभी सॉफ़्टवेयर स्थापित करते समय apt-get install software_nameटर्मिनल ने मुझे एक पुष्टिकरण "हां या नहीं" के लिए संकेत दिया, लेकिन सभी रास्ते नहीं।

मेरा मतलब है कि sudo पासवर्ड प्रॉम्प्ट नहीं है, लेकिन संदेश "XXX Kb डाउनलोड और कॉन्फ़िगर किया जाएगा, जारी है?" (या ऐसा ही कुछ)

क्यूं कर?


2
अनिवार्य रूप से, यदि तर्कों में उल्लिखित अन्य के अलावा पैकेजों को स्थापित करने की आवश्यकता है, तो यह पूछेगा।
मुरु

जवाबों:


24

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


मैं एक ही प्रेरणा के बारे में सोचता हूं .. लेकिन मैं जवाब को सुरक्षित रखना चाहता
हूं

हां, यह जवाब सही है। -yयदि आप संकेत नहीं करना चाहते हैं तो मैं इसे जोड़ूंगा (यदि आप कुछ को स्वचालित करने की कोशिश कर रहे हैं तो आप उपयोगी हो सकते हैं) ।
उमंग

@ युंग: संकेत के लिए धन्यवाद, लेकिन मुझे इस समय कुछ भी स्वचालित करने की आवश्यकता नहीं है, बस एक जिज्ञासा थी;)
स्ट्रेट

12

apt-get install new-package केवल तभी पुष्टि करेगा जब वह दिए गए पैकेज की निर्भरता को स्थापित करता है।

यदि आपके द्वारा निर्दिष्ट केवल एक पैकेज बिना किसी अतिरिक्त सामान के स्थापित होने वाला है, तो यह शांत रहता है क्योंकि आप पहले से ही "पुष्टि" कर चुके हैं, आप इसे टाइप करके रखना चाहते हैं।
लेकिन अगर कुछ निर्भरता पैकेज हैं, तो आप अपना मन बदल सकते हैं और इंस्टॉलेशन को रोकना चाहते हैं (जैसे कि उनमें से एक के कारण पहले परेशानी हुई थी), इसलिए यह आपको y / n के लिए संकेत देता है।

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

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])
Conf sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])

इससे आपको पता चलता है कि क्या होगा, लेकिन डाउनलोड कितना बड़ा होगा, इसकी पुष्टि प्रांप्ट नहीं करेगा।

इसलिए, एक और स्विच, इस्तेमाल किया जा सकता --print-uris। एक ही उदाहरण:

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku --print-uris
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 28.4 kB of archives.
After this operation, 106 kB of additional disk space will be used.
'http://ftp.uni-stuttgart.de/ubuntu/pool/universe/s/sudoku/sudoku_1.0.1-5_i386.deb' sudoku_1.0.1-5_i386.deb 28426 MD5Sum:ecd0e3cd4fc1e4e4edfe6c59d1c54847

--print-urisस्विच केवल वास्तविक स्थापित ब्लॉक नहीं होगा, लेकिन डाउनलोड और स्थापित आकार और पैकेज के बारे में अतिरिक्त जानकारी के (वेब पता और md5sum) दिखा।
ध्यान दें: क्या उपयोग नहीं --print-uris और -s एक साथ। ऐसा लगेगा -sही।
ध्यान दें कि -yयदि आप आउटपुट को संसाधित करना चाहते हैं, तो आपको स्विच को जोड़ना चाहिए (= हर प्रश्न के लिए हाँ मानें), क्योंकि यह सामान्य स्विच के बिना सामान्य इंस्टॉल के समान नियमों का पालन करने के लिए आपको संकेत देगा।


अब यदि आप अन्य सभी चीजों के माध्यम से पढ़ने के बिना केवल डाउनलोड और स्थापित फ़ाइल आकार की जानकारी को फ़िल्टर करना चाहते हैं, तो आप इसे प्राप्त करने के लिए निम्न आदेश का उपयोग कर सकते हैं (धन्यवाद सहायक के लिए @terdon के लिए धन्यवाद)। उदाहरण के साथ फिर से sudoku:

bytecommander@AlkaliMetal:~$ LANG=C sudo apt-get -y --print-uris install sudoku | grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? '
28.4 kB
106 kB

आप देखते हैं कि आउटपुट की पहली पंक्ति डाउनलोड आकार है और दूसरी पंक्ति स्थापना के लिए आवश्यक स्थान का वर्णन करती है।

क्योंकि यह कमांड टाइप करना आसान नहीं है और यहां तक ​​कि याद रखना कठिन है, निम्न को स्क्रिप्ट फ़ाइल में कॉपी करें जैसे कि apt-get-install-checker.sh:

#! /bin/bash

LANG=C sudo apt-get install -y --print-uris $* |
grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? ' |
sed '1,1s/^/Download size: /;2,2s/^/Installed size: /'

chmod +x apt-install-checker.shइससे पहले कि आप इसे निष्पादित करने के लिए मत भूलना !

उदाहरण आउटपुट:

bytecommander@AlkaliMetal:~/bin$ ./apt-install-checker.sh sudoku
Download size: 28.4 kB 
Installed size: 106 kB 

विकास में अभी भी स्क्रिप्ट! नियोजित विशेषताएं: यह आपको पूछना चाहिए कि क्या आप इंस्टॉल करना चाहते हैं और फिर इसे जारी रखें और चलाएं। हो सकता है कि कल मेरे दिमाग में आए कुछ और अच्छे गैजेट ...


लेकिन क्या हर बार आपसे पूछने के लिए इसे प्राप्त करने का एक तरीका है? यहां तक ​​कि कार्यक्रम के वास्तविक कोड को बदलकर।

@Toroidal कार्यक्रम के कोड को बदलने के दायरे यहाँ बाहर एक छोटा सा है - आप में खुदाई करने के लिए हो सकता है aptया apt-getके रूप में यह पहले से वहां एक सेटिंग आप इसे मजबूर करने के लिए बदल सकते हैं संभव है, के manpages यह पता लगाने की कैसे प्राथमिकताएं बदलने के लिए।
थॉमस वार्ड

9

जिसे मैं उपयुक्त समझता हूं, वह केवल पुष्टि के लिए पूछता है जब स्थापित करने के लिए अतिरिक्त निर्भरताएं होती हैं। सभी पैकेजों के लिए डिफ़ॉल्ट रूप से पुष्टि को बाध्य करने का कोई तरीका नहीं है।

हालांकि, एप्टीट्यूड का उपयोग करते समय किसी भी इंस्टॉल कमांड पर पुष्टि को लागू करना संभव है।

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude

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