जवाबों:
आधुनिक संस्करणों के लिए apt
इसके लिए एक विशिष्ट स्विच है:
apt list --upgradable
पुराने apt-get
कमांड के लिए -u
स्विच उन पैकेजों की सूची दिखाता है जो अपग्रेड के लिए उपलब्ध हैं:
# apt-get -u upgrade --assume-no
से apt-get
आदमी पेज :
-u
--show- उन्नत शो उन्नत संकुल; उन सभी पैकेजों की सूची प्रिंट करें, जिन्हें अपग्रेड किया जाना है। कॉन्फ़िगरेशन आइटम: APT :: Get :: Show-Upgraded।
- सभी संकेतों के लिए कोई स्वत: "नहीं" पुलाव । <== इसे स्थापित करने से शुरू करने से रोकने के लिए
-u
एक डिफ़ॉल्ट विकल्प हैapt-get
apt-get --just-print upgrade
यह आसानी से नहीं पढ़ा जा सकता है, नीचे दिए गए आउटपुट को पार्स करने के लिए एक पर्ल वन लाइनर है:
apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'
यह कुछ इस तरह उत्पादन करना चाहिए:
PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9
उम्मीद है कि यह किसी और की मदद करेगा,
column
इस तरह का उपयोग करें:apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
एक अन्य विकल्प, इंज़ोटिब से प्रेरित:
aptitude search '~U' | wc -l
यह कमांड नए पैकेजों को आउटपुट करने के लिए एप्टीट्यूड का उपयोग करेगा और फिर लाइनों को गिनने के लिए wc करेगा।
एक विचारधारा पर, मैंने पाया कि ~ यू के आसपास के एकल उद्धरणों के बिना एनज़ोटिब का समाधान मेरे लिए काम नहीं करता। (व्हीज़ी, ज़ैस, एप्टीट्यूड 0.6.8.2)
अपडेट करें :
नए एप के साथ आप अभी कर सकते हैं:
apt list --upgradable
सबसे आसान है:
apt list --upgradable
तुम दौड़ सकते हो
aptitude -F%p --disable-columns search ~U
या अनिर्दिष्ट
/usr/lib/update-notifier/apt-check -p; echo
apt-get
सिमुलेशन का उपयोग करने का एक और तरीका :
apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }'
dist-upgrade
लेकिन उपयोग करने के लिए आवश्यक कुछ पैकेजों को नहीं खोना था aptitude
। aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
चाल चली!
पैकेज पर एक नज़र डालें "एन्टीट्रॉन":
apticron - लंबित पैकेज अपडेट के बारे में मेल करने के लिए सरल उपकरण
Apticron एक सरल स्क्रिप्ट है जो दैनिक अपडेट ईमेल को लंबित पैकेज अपडेट के बारे में भेजता है जैसे सुरक्षा अपडेट, ठीक से dselect और aptitude दोनों को पकड़कर पैकेज को हैंडल करना।
apt-get update && apt-get -s upgrade
वास्तव में स्थापित किए बिना उपलब्ध अपडेट को सूचीबद्ध करेगा।
पहले कमांड अपडेट पैकेज इंडेक्स फाइलों को सिम्युलेटेड (इस तरह -s) अपग्रेड करने से पहले किया जाता है। "-s" एक सिम्युलेटेड अपग्रेड दिखाएगा जो दिखाएगा पैकेट जो स्थापित किया जाएगा लेकिन वास्तव में कुछ भी स्थापित नहीं करेगा।
इसके विपरीत "-s" के बजाय "-u" वास्तव में पुष्टि के बाद स्थापित होगा।
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, फिर से जोड़ना और ड्राई-रन मेरा व्यक्तिगत पसंदीदा है।
मुझे संभावित अपग्रेड पर पूर्ण संस्करण की जानकारी की आवश्यकता थी, इसलिए मैंने जसोनव्रीयन के उत्तर के संशोधन का उपयोग किया:
apt-get -V -u upgrade
यह सरल और IMO यथोचित स्वरूपित आउटपुट है।
का आउटपुट फ़िल्टर करें
apt-get update && apt-get -s -V -u upgrade
आपके लॉग में केवल पसंदीदा जानकारी है।
सबसे अधिक संभावना है, आपको लाइन के बाद सुंदर भाग की आवश्यकता होगी
...
निम्नलिखित पैकेजों को अपग्रेड किया जाएगा:
...
कि शुरुआत में कुछ रिक्त स्थान है।
इस उत्तर से प्रेरित एक अन्य ऑन-लाइनर जेट :
function a { read input;dpkg -l ${input} | grep " ${input} " | awk '{$1=$2=$3=$4="";print $0}' | sed 's/^ *//';unset input;};{ apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}';} | while read -r line; do echo -en "$line $(echo $line | awk '{print $1}' | a )\n"; done;
आउटपुट इस तरह दिखता है (रंगीन):
locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) Embedded GNU C Library: National Language (locale) data [support]
linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Header files for Linux 3.2.0-4-amd64
linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Common header files for Linux 3.2.0-4
sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) Provide limited super user privileges to specific users
यदि आप छोटा विवरण नहीं चाहते हैं तो इसका उपयोग करें:
{ apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}';} | while read -r line; do echo -en "$line\n"; done;
आउटपुट:
locales (2.13-38+deb7u7 -> 2.13-38+deb7u8)
linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2)
linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2)
sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2)
apt-get update > /dev/null && apt-get --just-print upgrade | grep "Inst "
क्रोन ईमेल के लिए सबसे सरल है; कोई उपयोगकर्ता पुनरावृत्ति नहीं है, और यदि कोई अद्यतन नहीं हैं तो कोई आउटपुट नहीं है।
@ Jasonwryan के उत्तर के लिए चेतावनी लिखने के बाद, मैं अपना स्वयं का समाधान प्रदान करना चाहता हूं:
apt-get dist-upgrade --assume-no
दुर्भाग्य से, यह डेबियन मट्ठा के साथ काम नहीं करता है और मुझे कुछ lxc कंटेनरों की जांच करनी थी जो अभी भी उन्नत नहीं हैं। यह फॉर्म हमेशा काम करेगा:
apt-get dist-upgrade </dev/null
अंत में, मैं आउटपुट को पुन: स्वरूपित करना चाहता था। मैंने कॉल को फिर से बदलने का उपयोग किया ( --dry-run
सभी अतिरिक्त आउटपुट की अनदेखी करते हुए ) क्योंकि यह अधिक सुरक्षित लगता है:
apt-get --dry-run dist-upgrade | awk '
BEGIN{p=0}
/^The/{p=1;t=$0}
/no longer required/{p=0}
#optional: /been kept back/{p=0}
p && t{print t;t=""}
/^ / && p{print $0}
'
यह दिखाता है:
The following packages have been kept back:
iproute
The following packages will be upgraded:
unzip
apt-check
शायद सबसे कुशल स्क्रिप्टिंग विधि है।
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1
एक बहुत छोटा संशोधन आपको केवल सुरक्षा अपडेट दिखाता है।
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2
भिन्नता के रूप में मैं निम्नलिखित का उपयोग करता हूं:
apt-get -V -s dist-upgrade \
|grep -E "^ .*=>.*" \
|awk 'BEGIN {
ul=sprintf("%*s",40,""); gsub(/ /,"-",ul);
printf "%-30s %-30s %-30s\n", "Package", "Installed", "Available";
printf "%-30.30s %-30.30s %-30.30s\n", ul, ul, ul;
}
{
printf "%-30s %-30s %-30s\n",
$1,
substr($2,2),
substr($4,1,length($4)-1)
}'
इसे नामित स्क्रिप्ट में चिपकाएं apt-updates
और फिर आप apt-updates
उपयोगकर्ता की परवाह किए बिना सभी अपडेट की एक सूची प्राप्त करने के लिए कॉल कर सकते हैं ।
आपको अभी भी apt-get update
विशेषाधिकार प्राप्त एक्सेस के साथ कॉल करने की आवश्यकता है ।
वहाँ apt-show-versions
उपकरण है। उपलब्ध अपडेट चलाने के लिए:
apt-show-versions -u
मुझे इसका उपयोग करना पसंद है:
apt-get -qq update && apt-get -qq -s upgrade
आपको इस तरह एक आउटपुट मिलता है:
Inst linux-base [3.5] (4.5~deb8u1 Debian-Security:8/oldstable [all])
Conf linux-base (4.5~deb8u1 Debian-Security:8/oldstable [all])
अगर उपलब्ध अद्यतन हैं, और कोई नहीं है अगर वहाँ नहीं है। इस तरह आप बस इसे एक निगरानी समाधान के साथ जोड़ सकते हैं।