Hangi paketin sistemimin yeniden başlatılmasını gerektirdiğini nasıl söyleyebilirim?


85

unattended-upgradeUbuntu sistemlerimi kurdum . Bazen bunlardan birine uzaktan giriş yapacağım ve sistemi yeniden başlatmam gerektiğini bildiren bir mesaj göreceğim (bir yükseltme işlemini tamamlamak için). Bu bildirimi tetikleyen belirli paketi (veya paket kümesini) belirlemenin bir yolu var mı?

Yanıtlar:


80

Kısa versiyon:

cat /var/run/reboot-required.pkgs

Açıklama:

İstenen bilgileri otomatik olarak almanın kolay bir yolu var gibi görünüyor.

.debDosyaların içinde kurulum dahil kontrol dosyaları vardır postinst(kurulumdan sonra çalıştır).

Örneğin, linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinstiçerir

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

ve

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

Kabuk betiği /usr/share/update-notifier/notify-reboot-requiredgüncellenir
/var/run/reboot-required ve /var/run/reboot-required.pkgs .

İkinci dosya, yeniden başlatma isteyen bir paket listesi içerir.


1
Sistemimde dosya /var/run/reboot-requiredbir gün önce oluşturuldu, ancak /var/run/reboot-required.pkgs@ Ubuntu 16.04.5 LTS dosyası yok .
Aslan,

25

Yeniden başlatılması unattended-upgrades, var olduğu zaman önerilir /var/run/reboot-required. Dosya, postinstbazı paketlerde (yükleme sonrası) komut dosyaları tarafından oluşturulur , şöyle görünür:

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

Hangi paketlerin bunu tetiklediğini görmek istiyorsanız, /var/run/reboot-required.pkgsdosyanın içeriğine bakabilirsiniz .

Daha fazla bilgi için bu konuya bakın .


2

Olli'nin önceki cevabına dayanarak, sisteminizde yeniden başlatılması gereken yüklü tüm paketleri bulmak için bir yöntem buldum.

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

İndirme işleminin tamamlanmasını bekleyin, sistemimde 900 MB civarındaydı, bu nedenle bağlantınıza bağlı olarak biraz zaman alabilir. Sonra:

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

Çıktı şöyle bir şeye benzeyebilir:

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

Tabii ki, bu yöntem kusursuz değildir. Gerekli yeniden başlatma hakkında 'bildirim-yeniden başlatma gerekli' dışında başka yollarla bildirimde bulunan paketler olabilir ve bu, şu anda yüklü paketlerin yeniden başlatma gerektirdiğini veya yeniden başlatılmasını gerektirmediğini gösterir, Aynı paketin sürümleri.


3
Bunu, sadece herhangi bir sıkıcı indirme işlemi yapmadan başarabilirsiniz grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Sadece hangi paketleri bildirir Ancak unutmayın olabilir değil hangi paket, bazı zaman yeniden başlatılmasını gerektirir mi yeniden başlatılmasını gerektirir bu kez
Matija Nalis

0

Yeniden başlatma gerektiren başka paketler olup olmadığını gerçekten bilmiyorum, ancak çekirdek güncellemeleri her zaman yapar. Neredeyse her zaman yeniden başlatmak için "istendi", çekirdeğin güncellendiğini söyleyebilirim.


1
Bu bence yeterince iyi değil. Bootloader güncellemeleri ayrıca yeniden başlatmanın yanı sıra init (starttart) isteğinde bulunur.
Olli

1
Ayrıca DBus gibi başka paketler de var: ubuntu.com/usn/USN-799-1 . Bu nedenle, yeniden başlatma gerektiren paketlerin derlenmesi (DBus her zaman bunu gerektirmez) tam bir çözüm için aptalca olur.
Olli

1
Haklısın ... Mine kısmi bir bilgi :(. Bilgi için teşekkürler. Başka paketlerin de yeniden başlatılması gerektiğini fark
etmemiştim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.