Krótka wersja:
cat /var/run/reboot-required.pkgs
Wyjaśnienie:
Wygląda na to, że istnieje prosty sposób na automatyczne wyodrębnienie żądanych informacji.
Wewnątrz .deb
plików znajdują się pliki kontrolne do instalacji, w tym postinst
(uruchamiane po instalacji).
Na przykład w linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb
,
postinst
obejmuje
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
i
# Warn of a reboot
if (-x $notifier) {
system($notifier);
}
/usr/share/update-notifier/notify-reboot-required
Aktualizuje się skrypt powłoki
/var/run/reboot-required
i /var/run/reboot-required.pkgs
.
Ten ostatni plik zawiera listę pakietów żądających ponownego uruchomienia.
/var/run/reboot-required
został utworzony dzień wcześniej, ale nie ma/var/run/reboot-required.pkgs
pliku @ Ubuntu 16.04.5 LTS.Ponowne uruchomienie jest zalecane,
unattended-upgrades
gdy zobaczy, że/var/run/reboot-required
istnieje. Plik jest tworzony przezpostinst
skrypty (poinstalacyjne) w niektórych pakietach, wygląda mniej więcej tak:Jeśli chcesz zobaczyć, które pakiety to spowodowały, możesz zajrzeć do zawartości
/var/run/reboot-required.pkgs
pliku.Aby uzyskać więcej informacji, zobacz także ten wątek .
źródło
W oparciu o wcześniejszą odpowiedź Olli, wymyśliłem metodę znajdowania wszystkich aktualnie zainstalowanych pakietów w twoim systemie, która wymaga ponownego uruchomienia.
Poczekaj na zakończenie pobierania, w moim systemie było to około 900 MB, więc może to chwilę potrwać w zależności od połączenia. Następnie:
Dane wyjściowe mogą wyglądać mniej więcej tak:
Oczywiście ta metoda nie jest niezawodna. Mogą istnieć pakiety, które powiadamiają o wymaganym ponownym uruchomieniu komputera za pomocą innych środków niż „powiadomienie-wymagane ponowne uruchomienie”, i chociaż pokazuje to, które obecnie zainstalowane pakiety wymagają ponownego uruchomienia lub nie, nie jest pewne, czy to samo zachowa się na później wersje tego samego pakietu.
źródło
grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'
. Należy jednak pamiętać, że będzie to zgłosić tylko pakiety, które może wymagać ponownego uruchomienia komputera w pewnym momencie, a nie pakiet, który nie wymaga restarcie ten czasNaprawdę nie wiem, czy istnieją inne pakiety wymagające ponownego uruchomienia, ale aktualizacje jądra zawsze tak robią. Powiedziałbym, że prawie za każdym razem, gdy „proszono mnie” o ponowne uruchomienie, jądro było aktualizowane.
źródło