Wie kann ich feststellen, welches Paket einen Neustart meines Systems erfordert?

85

Ich habe unattended-upgradeauf meinen Ubuntu-Systemen eingerichtet. Gelegentlich melde ich mich remote bei einem von ihnen an und erhalte eine Meldung, dass ich das System neu starten muss (um ein Upgrade abzuschließen). Gibt es eine Möglichkeit, das bestimmte Paket (oder die Gruppe von Paketen) zu bestimmen, die diese Benachrichtigung auslösen?

belacqua
quelle

Antworten:

80

Kurzfassung:

cat /var/run/reboot-required.pkgs

Erläuterung:

Offenbar gibt es eine einfache Möglichkeit, die angeforderten Informationen automatisch zu extrahieren.

In .debDateien befinden sich Steuerdateien für die Installation, einschließlich postinst(nach der Installation ausgeführt).

Zum Beispiel in linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinstumfasst

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

und

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

Das Shell-Skript /usr/share/update-notifier/notify-reboot-requiredaktualisiert
/var/run/reboot-required und /var/run/reboot-required.pkgs .

Die letztere Datei enthält eine Liste von Paketen, die einen Neustart anfordern.

Olli
quelle
1
Auf meinem System wurde die Datei /var/run/reboot-requiredeinen Tag zuvor erstellt, aber es gibt keine /var/run/reboot-required.pkgsDatei @ Ubuntu 16.04.5 LTS.
Lion
25

Ein Neustart wird empfohlen, unattended-upgradeswenn erkannt wird, dass ein /var/run/reboot-requiredvorhanden ist. Die Datei wird von postinst(nach der Installation) ausgeführten Skripten in einigen Paketen erstellt. Sie sieht ungefähr so ​​aus:

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

Wenn Sie sehen möchten, welche Pakete dies ausgelöst haben, können Sie sich den Inhalt der /var/run/reboot-required.pkgsDatei ansehen .

Weitere Informationen finden Sie auch in diesem Thread .

ordnen
quelle
2

Basierend auf der früheren Antwort von Olli habe ich eine Methode gefunden, um alle derzeit auf Ihrem System installierten Pakete zu finden, für die ein Neustart erforderlich ist.

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

Warten Sie, bis der Download abgeschlossen ist. Auf meinem System waren es ca. 900 MB. Je nach Verbindung kann dies einige Zeit dauern. Dann:

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

Die Ausgabe könnte ungefähr so ​​aussehen:

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

Natürlich ist diese Methode nicht narrensicher. Es kann Pakete geben, die über den erforderlichen Neustart auf andere Weise als "notify-reboot-required" benachrichtigen. Dies zeigt zwar, welche derzeit installierten Pakete einen Neustart erfordern oder nicht erfordern, es ist jedoch nicht sicher, ob dies auch für später gilt Versionen desselben Pakets.

Niklas Holm
quelle
3
Sie können dies auch ohne langwieriges Herunterladen mit just grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Beachten Sie jedoch, dass nur gemeldet wird, welche Pakete zu einem bestimmten Zeitpunkt möglicherweise neu gestartet werden müssen, und nicht, welches Paket diesmal neu gestartet werden musste
Matija Nalis,
0

Ich weiß nicht wirklich, ob es andere Pakete gibt, die einen Neustart erfordern, aber Kernel-Updates sind immer erforderlich. Ich würde sagen, fast jedes Mal, wenn ich zum Neustart "aufgefordert" wurde, wurde der Kernel aktualisiert.

luri
quelle
1
Das ist meiner Meinung nach nicht gut genug. Bootloader-Updates erfordern auch einen Neustart sowie init (upstart).
Olli
1
Nun, auch einige andere Pakete wie DBus: ubuntu.com/usn/USN-799-1 . Das Kompilieren einer Liste von Paketen, für die ein Neustart erforderlich ist (DBus erfordert dies nicht immer), ist für eine vollständige Lösung dumm.
Olli
1
Du hast recht ... Meins ist ein Teil des Wissens :(. Danke für die Information. Ich hatte nicht
bemerkt,