উত্তর:
আধুনিক সংস্করণগুলির apt
জন্য এটির জন্য একটি নির্দিষ্ট সুইচ রয়েছে:
apt list --upgradable
পুরানো apt-get
কমান্ডের জন্য -u
স্যুইচ প্যাকেজগুলির তালিকা প্রদর্শন করে যা আপগ্রেডের জন্য উপলব্ধ:
# apt-get -u upgrade --assume-no
থেকে apt-get
man পৃষ্ঠা :
-u
- শো -আপগ্রেড করা আপগ্রেড প্যাকেজগুলি প্রদর্শন করুন; আপগ্রেড করা সমস্ত প্যাকেজগুলির একটি তালিকা মুদ্রণ করুন। কনফিগারেশন আইটেম: এপিটি :: পান :: শো আপগ্রেড করা।
--assume-no স্বয়ংক্রিয়ভাবে সমস্ত প্রম্পটে "না" <== এটিকে ইনস্টল করা শুরু করা থেকে বিরত রাখতে
-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
এই কমান্ডটি নতুন প্যাকেজগুলি আউটপুট দেওয়ার জন্য প্রবণতা ব্যবহার করবে এবং তারপরে কেবল লাইনগুলি গণনা করবে c
একপাশে, আমি দেখতে পেলাম যে এনজোটিবের সমাধানটি around ইউ এর আশেপাশের একক উদ্ধৃতি ছাড়া আমার পক্ষে কাজ করে না। (হুইজি, জেডএসএইচ, প্রবণতা 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 - মুলতুবি প্যাকেজ আপডেটগুলি সম্পর্কে মেল করার সহজ সরঞ্জাম
অ্যাপটিক্রন হ'ল একটি সহজ স্ক্রিপ্ট যা মুলতুবি প্যাকেজ আপডেট যেমন দৈনিক ইমেলগুলি যেমন সুরক্ষা আপডেটগুলি, সঠিকভাবে প্যাকেজগুলি হ'ল বিচ্ছিন্ন এবং প্রবণতা দ্বারা হ্যান্ডেলগুলি প্রেরণ করে।
apt-get update && apt-get -s upgrade
আসলে ইনস্টল না করে উপলভ্য আপডেটগুলি তালিকাভুক্ত করবে।
সিমুলেটেড (এভাবে -s) আপগ্রেড হওয়ার আগে প্রথম কমান্ড প্যাকেজ সূচক ফাইল আপডেট করে। "-s" প্যাকেটগুলি ইনস্টল করা হবে যা প্রকৃতপক্ষে কিছু ইনস্টল করবে না এমন একটি অনুকরণীয় আপগ্রেড করবে।
বিপরীতে "-u" পরিবর্তে "-s" নিশ্চিত হওয়ার পরে ইনস্টল হবে।
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, পুনরায় এবং ড্রাই-ড্রাই আমার ব্যক্তিগত পছন্দ favorites
আমার সম্ভাব্য আপগ্রেডগুলির পুরো সংস্করণ তথ্য দরকার ছিল, তাই আমি জেসনওয়ারিয়ান এর উত্তরের একটি পরিবর্তন ব্যবহার করেছি:
apt-get -V -u upgrade
এটি সহজ এবং আইএমও যুক্তিসঙ্গত ফর্ম্যাট করা আউটপুট।
শুধু এর আউটপুট ফিল্টার
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 "
ক্রোন ইমেলগুলির জন্য সবচেয়ে সহজ; কোনও ব্যবহারকারীর পুনরাবৃত্তি নেই, এবং আপডেট না হলে কোনও আউটপুট পাওয়া যায় না।
@ জেসনওয়ারিয়ান এর উত্তরে সতর্কতা লেখার পরে, আমি আমার নিজস্ব সমাধান দিতে চাই:
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])
যদি উপলভ্য আপডেট থাকে এবং না থাকে তবে কিছুই নেই। আপনি সহজেই এটি পর্যবেক্ষণ সমাধানের সাথে জুড়ে দিতে পারেন।