আমি কীভাবে বলতে পারি কোন প্যাকেজের জন্য আমার সিস্টেমের পুনরায় বুট দরকার?


85

আমি unattended-upgradeআমার উবুন্টু সিস্টেমগুলি সেট আপ করেছি। মাঝেমধ্যে আমি তাদের মধ্যে একটিতে দূরবর্তীভাবে লগ ইন করব এবং আমি একটি বার্তা আমাকে জানিয়ে দিচ্ছি যে আমাকে সিস্টেমটি পুনরায় বুট করতে হবে (একটি আপগ্রেড সম্পূর্ণ করার জন্য)) নির্দিষ্ট প্যাকেজ (বা প্যাকেজগুলির সেট) নির্ধারণ করার কোনও উপায় আছে যা এই নোটিশটি ট্রিগার করছে?

উত্তর:


80

সংক্ষিপ্ত সংস্করণ:

cat /var/run/reboot-required.pkgs

ব্যাখ্যা:

দেখে মনে হচ্ছে অনুরোধ করা তথ্যটি স্বয়ংক্রিয়ভাবে উত্তোলনের একটি সহজ উপায় আছে।

.debফাইলগুলির অভ্যন্তরে ইনস্টলেশনের জন্য নিয়ন্ত্রণ ফাইল রয়েছে postinst(ইনস্টলেশনের পরে চালানো) সহ ।

উদাহরণস্বরূপ, মধ্যে linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinstঅন্তর্ভুক্ত

my $notifier          = "/usr/share/update-notifier/notify-reboot-required";

my $warn_reboot     = 'Yes';     # Warn that we are installing a version of
                                 # the kernel we are running

এবং

# Warn of a reboot
if (-x $notifier) {
 system($notifier);
}

শেল স্ক্রিপ্ট /usr/share/update-notifier/notify-reboot-requiredআপডেট
/var/run/reboot-required এবং /var/run/reboot-required.pkgs

পরবর্তী ফাইলটিতে পুনরায় বুট করার অনুরোধ করা প্যাকেজগুলির একটি তালিকা রয়েছে।


1
আমার সিস্টেমে ফাইলটি /var/run/reboot-requiredএকদিন আগে তৈরি হয়েছিল তবে /var/run/reboot-required.pkgsউবুন্টু 16.04.5 এলটিএসের কোনও ফাইল নেই ।
সিংহ

25

পুনরায় বুট করার পরামর্শ দেওয়া হয় unattended-upgradesযখন এটি দেখায় যে কোনও /var/run/reboot-requiredঅস্তিত্ব রয়েছে। ফাইলটি postinstকিছু প্যাকেজগুলিতে (ইনস্টলেশন-পরবর্তী) স্ক্রিপ্টগুলির দ্বারা তৈরি করা হয়েছে , এটি দেখতে এরকম কিছু দেখাচ্ছে:

[ -x /usr/share/update-notifier/notify-reboot-required ] && \
/usr/share/update-notifier/notify-reboot-required || true

আপনি যদি দেখতে চান যে কোন প্যাকেজগুলি এটি ট্রিগার করেছে, আপনি /var/run/reboot-required.pkgsফাইলের বিষয়বস্তু একবার দেখে নিতে পারেন ।

আরও তথ্যের জন্য এই থ্রেডটিও দেখুন


2

অলির আগের উত্তরের উপর ভিত্তি করে, আমি আপনার সিস্টেমে ইনস্টল করা সমস্ত প্যাকেজ খুঁজে পেতে একটি পদ্ধতি নিয়ে এসেছি যার জন্য একটি রিবুট দরকার।

~$ mkdir debs
~$ cd debs
~/debs$ apt-get download $(dpkg -l | tail -n +7 | awk '{print $2}')

ডাউনলোডটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন, আমার সিস্টেমে এটি প্রায় 900 এমবি ছিল তাই আপনার সংযোগের উপর নির্ভর করে এটি কিছুটা সময় নিতে পারে। তারপর:

~/debs$ for x in $(ls); do y=$(dpkg-deb -I "$x" postinst 2>/dev/null | grep 'reboot-required'); if [ -n "$y" ]; then echo "$x" | grep -Poe '^.*?(?=_)'; fi; done

আউটপুটটি দেখতে এরকম কিছু দেখাচ্ছে:

dbus
gconf2
initscripts
libc6
libpam0g
libpam-systemd
libssl1.0.0
linux-image-3.19.0-47-generic
linux-image-3.19.0-49-generic
network-manager
upstart

অবশ্যই, এই পদ্ধতিটি নির্বোধ নয়। এমন প্যাকেজগুলি থাকতে পারে যা 'নোটিফাই-রিবুট-আবশ্যক' ব্যতীত অন্য উপায়ে প্রয়োজনীয় রিবুট সম্পর্কে অবহিত করে এবং বর্তমানে এটি ইনস্টল করা প্যাকেজগুলিকে পুনরায় বুটের প্রয়োজন হয় না বা দেখায় এটি পরবর্তী সময়ে সত্য হবে কি না তা নিশ্চিত নয় is একই প্যাকেজ সংস্করণ।


3
আপনি কেবল কোনও ক্লান্তিকর ডাউনলোড ছাড়াই এটি সম্পাদন করতে পারেন grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'। উল্লেখ্য তবে যে এটি শুধুমাত্র রিপোর্ট হবে যা প্যাকেজ পারে কিছু সময়ে পুনরায় চালু করা দরকার, কোন প্যাকেজের করেনি পুনরায় চালু করা দরকার এই সময়
Matija Nalis

0

আমি জানি না যে এমন অন্যান্য প্যাকেজ রয়েছে যা পুনরায় বুট করার দরকার পড়ে তবে কার্নেল আপডেট সর্বদা করে। আমি বলব প্রায় প্রতিবারই যখন আমাকে পুনরায় বুট করতে "জিজ্ঞাসা" করা হয়েছিল, কার্নেলটি আপডেট হয়ে গেছে।


1
আমার মতে এটি যথেষ্ট ভাল নয়। বুটলোডার আপডেটগুলি পুনরায় বুট করার অনুরোধ জানায়, পাশাপাশি আর ডি (আপস্টার্ট )ও অনুরোধ করে।
ওলি

1
ঠিক আছে, ডিবিাসের মতো আরও কিছু প্যাকেজ: ubuntu.com/usn/USN-799-1 । সুতরাং পুনরায় আরম্ভের প্রয়োজন এমন প্যাকেজগুলির তালিকা সংকলন (ডিবিবাস সর্বদা এর প্রয়োজন হয় না) সম্পূর্ণ সমাধানের জন্য বোকামি।
ওলি

1
আপনি ঠিক বলেছেন ... আমার একটি আংশিক জ্ঞান :(। তথ্যের জন্য ধন্যবাদ। আমি বুঝতে পারি নি যে অন্যান্য প্যাকেজগুলিরও পুনরায় আরম্ভ করা দরকার
লুরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.