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 ?
Réponses
Trop de publicités?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.
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 .
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.