89 votes

Comment puis-je savoir quel paquet nécessite un redémarrage de mon système ?

J'ai unattended-upgrade mis en place sur mes systèmes Ubuntu. Il m'arrive de me connecter à distance à l'un d'entre eux et de voir apparaître un message m'informant que je dois redémarrer le système (afin de terminer une mise à niveau). Existe-t-il un moyen de déterminer le paquet (ou l'ensemble de paquets) spécifique qui déclenche cette notification ?

88voto

Olli Points 8476

Version courte :

cat /var/run/reboot-required.pkgs

Explication :

Il semble qu'il existe un moyen simple d'extraire automatiquement les informations demandées.

À l'intérieur de .deb il y a des fichiers de contrôle pour l'installation, notamment postinst (à exécuter après l'installation).

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

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

y

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

Le Shell Shell /usr/share/update-notifier/notify-reboot-required mises à jour
/var/run/reboot-required y /var/run/reboot-required.pkgs .

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

25voto

DublinJimbo Points 314

Le redémarrage est recommandé par le unattended-upgrades lorsqu'il voit qu'un /var/run/reboot-required existe. Le fichier est créé par postinst (post-installation) scripts dans certains paquets, cela ressemble à quelque chose comme 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 jeter un œil au contenu du fichier /var/run/reboot-required.pkgs archivo.

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

2voto

Niklas Holm Points 381

En me basant sur la réponse précédente d'Olli, j'ai trouvé une méthode pour trouver tous les paquets actuellement installés sur votre système qui nécessite 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 s'agissait d'environ 900 Mo, donc cela 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 à quelque chose comme 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 entendu, cette méthode n'est pas infaillible. Il peut y avoir des paquets qui notifient le redémarrage requis par d'autres moyens que 'notify-reboot-required', et bien que cela montre quels paquets actuellement installés nécessitent ou non un redémarrage, il n'est pas certain qu'il en sera de même pour les versions ultérieures du même paquet.

0voto

Karolis T. Points 2649

Je ne sais pas vraiment s'il existe d'autres paquets qui nécessitent un redémarrage, mais les mises à jour du noyau le font toujours. Je dirais que presque chaque fois qu'on m'a "demandé" de redémarrer, le noyau avait été mis à jour.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X