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.