Hangi paketin sistemimin yeniden başlatılmasını gerektirdiğini nasıl anlarım?

83

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

    
sordu belacqua 01.03.2011 09:17

4 cevap

79

Kısa versiyon:

cat /var/run/reboot-required.pkgs

Açıklama:

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

.deb dosyası içinde, yükleme için postinst (kurulumdan sonra çalıştır) dahil olmak üzere kontrol dosyaları vardır.

Örneğin, linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb , postinst iç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-required güncellemesi% /var/run/reboot-required ve /var/run/reboot-required.pkgs .

Sonuncu dosya, yeniden başlatma isteğinde bulunan paketlerin bir listesini içerir.

    
verilen cevap Olli 01.03.2011 10:11
25

Yeniden başlatma unattended-upgrades öğesinin var olduğunu gördüğünde /var/run/reboot-required tarafından önerilir. Dosya, bazı paketlerde postinst (post-installation) komut dosyası 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 paketleri tetiklediğini görmek istiyorsanız, /var/run/reboot-required.pkgs dosyasının içeriğine bakabilirsiniz.

Daha fazla bilgi için bkz. bu konu .

    
verilen cevap arrange 01.03.2011 10:10
2

Olli'nin önceki cevabına dayanarak, sisteminizde kurulu olan ve yeniden başlatılmasını gerektiren 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 }')

İndirme işleminin tamamlanmasını bekleyin, sistemimde yaklaşık 900 MB oldu, bu nedenle bağlantınıza bağlı olarak biraz zaman alabilir. Ardından:

~/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ı şunun gibi görünebilir:

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 'bildir-yeniden başlat-gerek' seçeneğinden başka bir yolla bildiren paketler olabilir ve bu, yüklü olan paketlerin yeniden başlatılmasını gerektirdiği ya da gerektirmediğini gösterirken, aynı şey daha sonra için geçerli olmayacağından emin değildir. aynı paketin sürümleri.

    
verilen cevap Niklas Holm 10.02.2016 11:22
0

Yeniden başlatma gerektiren başka paketler olup olmadığını bilmiyorum, ancak çekirdek güncellemeleri her zaman yapıyor. Hemen hemen her zaman yeniden başlatmayı "istedim" derdim, çekirdek güncellendi.

    
verilen cevap luri 01.03.2011 09:42

Etiketlerdeki diğer soruları oku