Comment savoir quel package nécessite un redémarrage de mon système?


85

Je me suis unattended-upgradeinstallé sur mes systèmes Ubuntu. Parfois, je vais me connecter à distance à l'un d'entre eux et un message m'informant que je dois redémarrer le système (pour pouvoir effectuer une mise à niveau). Existe-t-il un moyen de déterminer le package spécifique (ou l'ensemble de packages) qui déclenche cette notification?

Réponses:


80

Version courte:

cat /var/run/reboot-required.pkgs

Explication:

On dirait qu'il existe un moyen facile d'extraire automatiquement les informations demandées.

Des .debfichiers de contrôle contiennent des fichiers de contrôle pour l'installation, notamment postinst(exécutés après l'installation).

Par exemple, dans linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinstinclut

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

et

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

Le script shell /usr/share/update-notifier/notify-reboot-requiredmet à jour
/var/run/reboot-required et /var/run/reboot-required.pkgs .

Ce dernier fichier contient une liste de paquets demandant un redémarrage.


1
Sur mon système, le fichier a /var/run/reboot-requiredété créé un jour avant, mais il n’existe aucun /var/run/reboot-required.pkgsfichier @ Ubuntu 16.04.5 LTS.
— Lion

25

Le redémarrage est recommandé par le unattended-upgradeslorsqu'il voit qu'il /var/run/reboot-requiredexiste. Le fichier est créé par des postinstscripts (post-installation) dans certains packages, il ressemble à ceci:

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

Si vous voulez voir quels paquets ont déclenché cela, vous pouvez consulter le contenu du /var/run/reboot-required.pkgsfichier.

Pour plus d'informations, voir également ce fil .


2

Basé sur la réponse précédente d'Olli, j'ai mis au point une méthode pour rechercher tous les packages actuellement installés sur votre système et nécessitant un redémarrage.

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

Attendez que le téléchargement soit terminé. Sur mon système, il était d’environ 900 Mo, ce qui peut prendre un certain temps en fonction de votre connexion. Ensuite:

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

La sortie peut ressembler à ceci:

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

Bien sûr, cette méthode n’est pas infaillible. Certains paquets peuvent notifier le redémarrage requis par d'autres moyens que 'notify-reboot-required', et bien que cela montre quels packages actuellement installés nécessitent ou non un redémarrage, il n'est pas certain que cela soit vrai pour plus tard versions du même paquet.


3
Vous pouvez accomplir la même chose sans aucun téléchargement fastidieux avec juste grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Notez cependant qu'il ne signalera que les paquetages pouvant nécessiter un redémarrage à un moment donné, pas quel paquetage a nécessité un redémarrage cette fois
— Matija Nalis

0

Je ne sais pas vraiment s'il existe d'autres packages qui nécessitent un redémarrage, mais les mises à jour du noyau le sont toujours. Je dirais que presque chaque fois que l'on me "demande" de redémarrer, le noyau a été mis à jour.


1
Ce n'est pas assez bon à mon avis. Les mises à jour du chargeur d'amorçage demandent également le redémarrage, ainsi que init (upstart).
— Olli

1
Eh bien, aussi quelques autres paquets, comme DBus: ubuntu.com/usn/USN-799-1 . Donc, compiler la liste des paquets qui nécessitent un redémarrage (DBus ne le demande pas toujours) est insensé pour une solution complète.
— Olli

1
Tu as raison ... La mienne est une connaissance partielle :(. Merci pour l'information. Je n'avais pas réalisé que d'autres paquets devaient également être redémarrés.
— luri
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.