Bagaimana saya bisa tahu paket apa yang membutuhkan reboot sistem saya?


85

Saya telah unattended-upgrademengatur pada sistem Ubuntu saya. Kadang-kadang saya akan login secara jarak jauh ke salah satu dari mereka dan saya akan melihat pesan yang memberitahu saya bahwa saya perlu me-reboot sistem (untuk menyelesaikan upgrade). Apakah ada cara untuk menentukan paket spesifik (atau set paket) yang memicu pemberitahuan ini?

Jawaban:


80

Versi pendek:

cat /var/run/reboot-required.pkgs

Penjelasan:

Sepertinya ada cara mudah untuk secara otomatis mengekstrak informasi yang diminta.

Di dalam .debfile ada file kontrol untuk instalasi, termasuk postinst(berjalan setelah instalasi).

Misalnya, dalam linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinsttermasuk

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

dan

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

/usr/share/update-notifier/notify-reboot-requiredPembaruan skrip shell
/var/run/reboot-required dan /var/run/reboot-required.pkgs .

File terakhir berisi daftar paket yang meminta reboot.


1
Di sistem saya file /var/run/reboot-requireddibuat sehari sebelumnya tetapi tidak ada /var/run/reboot-required.pkgsfile @ Ubuntu 16.04.5 LTS.
Lion

25

Reboot direkomendasikan oleh unattended-upgradesketika melihat bahwa /var/run/reboot-requiredada. File ini dibuat oleh postinstskrip (pasca instalasi) dalam beberapa paket, terlihat seperti ini:

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

Jika Anda ingin melihat paket mana yang memicu ini, Anda dapat melihat isi /var/run/reboot-required.pkgsfile.

Untuk info lebih lanjut juga lihat utas ini .


2

Berdasarkan jawaban Olli sebelumnya, saya datang dengan metode untuk menemukan semua paket yang saat ini diinstal pada sistem Anda yang memerlukan reboot.

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

Tunggu pengunduhan selesai, pada sistem saya sekitar 900 MB sehingga mungkin perlu waktu tergantung pada koneksi Anda. Kemudian:

~/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

Outputnya mungkin terlihat seperti ini:

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

Tentu saja, metode ini tidak mudah. Mungkin ada paket yang memberitahukan tentang reboot yang diperlukan melalui cara lain selain 'notify-reboot-required', dan sementara ini menunjukkan paket yang diinstal saat ini memerlukan atau tidak memerlukan reboot, tidak yakin hal yang sama akan berlaku untuk nanti versi dari paket yang sama.


3
Anda dapat melakukan hal yang sama tanpa mengunduh yang membosankan hanya dengan grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Namun perlu dicatat bahwa itu hanya akan melaporkan paket mana yang mungkin membutuhkan reboot pada suatu waktu, bukan paket mana yang memang perlu reboot kali ini
Matija Nalis

0

Saya tidak benar-benar tahu apakah ada paket lain yang perlu di-boot ulang, tetapi pembaruan kernel selalu dilakukan. Saya akan mengatakan hampir setiap kali saya "diminta" untuk reboot, kernel telah diperbarui.


1
Itu menurut saya tidak cukup baik. Pembaruan bootloader juga meminta boot ulang, serta init (pemula).
Olli

1
Ya, juga beberapa paket lain, seperti DBus: ubuntu.com/usn/USN-799-1 . Jadi kompilasi daftar paket yang membutuhkan restart (DBus tidak selalu mengharuskan itu) bodoh untuk solusi lengkap.
Olli

1
Anda benar ... Milik saya adalah pengetahuan parsial :(. Terima kasih atas informasinya. Saya belum menyadari bahwa paket lain juga perlu di-restart.
luri
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.