Основываясь на предыдущем ответе Олли, я нашел способ найти все установленные на данный момент пакеты в вашей системе, которые требуют перезагрузки.
~$ mkdir debs
~$ cd debs
~/debs$ apt-get download $(dpkg -l | tail -n +7 | awk '{print $2}')
Подождите, пока загрузка завершится, в моей системе это было около 900 МБ, поэтому это может занять некоторое время в зависимости от вашего соединения. Затем:
~/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
Вывод может выглядеть примерно так:
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
Конечно, этот метод не является надежным. Могут быть пакеты, которые уведомляют о требуемой перезагрузке с помощью других средств, кроме «notify-reboot-required», и хотя это показывает, какие в настоящее время установленные пакеты требуют или не требуют перезагрузки, она не уверена, что то же самое сохранится для последующих версии того же пакета.
/var/run/reboot-required
был создан накануне, но/var/run/reboot-required.pkgs
файла @ Ubuntu 16.04.5 LTS нет.