Ubuntu – How to tell what package requires a reboot of the system

package-management

I have unattended-upgrade set up on my Ubuntu systems. Occasionally I will log in remotely to one of them and I'll see a message informing me that I need to reboot the system (in order to complete an upgrade). Is there a way to determine the specific package (or set of packages) which is triggering this notice?

Best Answer

Short version:

cat /var/run/reboot-required.pkgs

Explanation:

Looks like there is an easy way to automatically extract the requested information.

Inside .deb files there are control files for installation, including postinst (run after installation).

For example, in linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinst includes

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

and

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

The shell script /usr/share/update-notifier/notify-reboot-required updates
/var/run/reboot-required and /var/run/reboot-required.pkgs.

The latter file contains a list of packages requesting a reboot.