कमांड लाइन से अपडेट की आवश्यकता वाले पैकेजों की संख्या कैसे पता करें?


34

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

35 packages can be updated.
22 updates are security updates.

क्या कोई ऐसा आदेश है जिसे मैं चला सकता हूं (अधिमानतः बिना sudo) जो कि बस जानकारी देता है?

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

जवाबों:


33

उस आउटपुट को प्राप्त करने के लिए, आप कमांड का उपयोग कर सकते हैं

sudo /usr/lib/update-notifier/update-motd-updates-available

या, यदि आप उपयोग नहीं करना चाहते हैं sudo,

cat /var/lib/update-notifier/updates-available

व्याख्या

loginआवेदन से पता चलता है आउटपुट फ़ाइल में पाया /etc/motd, कि करने के लिए एक प्रतीकात्मक कड़ी है /var/run/motd

यह अंतिम फ़ाइल mounted-varrunसेवा द्वारा ( /etc/init/mounted-varrun.confसभी) /etc/update-motd.d/और विशेष रूप से सभी स्क्रिप्टों को लागू करते हुए देखी जाती है

/etc/update-motd.d/90-updates-available

बदले में स्क्रिप्ट को कॉल करता है

/usr/lib/update-notifier/update-motd-updates-available

यह स्क्रिप्ट विभिन्न क्रियाओं को अंजाम देती है, और आखिर में टेक्स्ट फाइल को आउटपुट लिखती है

/var/lib/update-notifier/updates-available

संपादित करें

प्रश्न के रीबूट भाग के बारे में, इस आदेश को चलाएँ

/usr/lib/update-notifier/update-motd-reboot-required

अगर रिबूट की आवश्यकता नहीं है तो यह कोई आउटपुट नहीं देगा।


मैं सिर्फ 11.04 पर चलने वाली मशीन पर जाँच कर रहा हूँ और बायोबू 44 अपडेट दिखाता है। catआपके द्वारा सुझाई गई फ़ाइल को रिक्त है, और आपके द्वारा पहली बार बताई गई स्क्रिप्ट इस मशीन पर मौजूद नहीं है - क्या यह कुछ पैकेज में है जिसे इंस्टॉल करने की आवश्यकता है? मेरे पास है /usr/lib/update-manager, लेकिन कोई update-notifierनिर्देशिका नहीं है ।
KayEss

11.04 डेस्कटॉप पर परीक्षण किया गया। वे फाइलें update-notifier-commonउसी से संबंधित होती हैं जो एक ताज़ा इंस्टॉलेशन पर स्वचालित रूप से इंस्टॉल की गई थीं (10.10 से अपग्रेड नहीं)।
enzotib

मैंने कुछ और मशीनों को देखा है। जिन लोगों के पास /var/lib/update-notifier/apt-checkऐसा दिखता है, वे दो नंबर, यानी 43; 24 (43 अपडेट, 24 सुरक्षा वाले) लौटाते हैं, लेकिन यहां तक ​​कि यह मेरी सभी मशीनों पर दिखाई नहीं देता है। मुझे लगता है कि यह फ़ाइल अलग-अलग संस्करणों में संकुल के बीच स्थानांतरित हो सकती है।
KayEss

21

आप इसे सिर्फ क्यों नहीं चला सकते?

/usr/lib/update-notifier/apt-check --human-readable

यह है कि / usr / lib / update-notifier / update-motd-updates-available जानकारी एकत्र करने के लिए करता है, कम से कम उबंटू के संस्करण में मैं (12.10) उपयोग कर रहा हूं।


बस ल्यूसिड पर जाँच की गई और यह वहाँ भी काम करता है
KayEss

2
यह stderr को इसका आउटपुट लिखता है। ऐसा कौन करेगा?
केईएसईएस

2
इस दृष्टिकोण को प्राथमिकता दें क्योंकि यह पूरी तरह से पूरे update-motdपैकेज और इसकी सोच को बढ़ाता है। सिर्फ डायरेक्ट कमांड देने के लिए धन्यवाद।
jefflunt

3

मैं न्यूनतम डॉकटर कंटेनरों के अंदर एक अद्यतन जांच के लिए एक लिपिक विधि की खोज करता हूं, जब मुझे इसमें एक टिप्पणी मिली /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

यह update-notifier-commonपैकेज को स्थापित करने की आवश्यकता के बिना एक स्क्रिप्टेड अपडेट जांच की अनुमति देता है


0

अद्यतन उपलब्ध हैं या नहीं, इस आधार पर आप अलग-अलग रिटर्न कोड प्राप्त करने के लाभ check_aptसे monitoring-plugins-basic( नागिओस ) से प्लगइन का उपयोग कर सकते हैं:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

रिटर्न कोड के निम्नलिखित अर्थ हैं:

  • 0 -> उन्नयन के लिए कोई पैकेज उपलब्ध नहीं है
  • 1 -> गैर महत्वपूर्ण संकुल उन्नयन के लिए उपलब्ध है
  • 2 -> महत्वपूर्ण अपडेट उपलब्ध

संदर्भ:

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