«Redémarrage du système requis»… pourquoi? Comment puis-je obtenir ce qui a déclenché cette notification pour afficher également les détails?

26

De temps en temps, je vais SSH dans une boîte avec des mises à niveau sans assistance et je serai accueilli par "** Redémarrage du système requis ***" sans aucune information supplémentaire.

Mon fichier '/var/run/reboot-required.pkgs' contient:

linux-image-3.13.0-61-generic
linux-base
linux-base
linux-base

Cela ne me dérange pas de redémarrer, mais je n'aime pas redémarrer sans avoir les détails POURQUOI je devrais redémarrer en premier lieu. Ci-dessus, je vois que deux packages ont déclenché le message, mais il n'y a aucune explication au-delà.

Existe-t-il un moyen d'obtenir des détails supplémentaires sur la raison pour laquelle le redémarrage s'affiche également lors de la connexion SSH?

Idéalement, je voudrais extraire un fichier qui contient quelque chose de lisible par l'homme, "Le package xyz a été mis à jour à [date / heure]. Il devait modifier les fichiers a, b et c mais ne pouvait pas parce que le système bloquait / bloquer l'action. Lors du prochain redémarrage, les fichiers a, b et c seront remplacés. " Mais quelque chose qui n'est pas complètement lisible par l'homme est probablement correct aussi.

E. Diaz
la source
OMI, cela semble évident: le noyau a été mis à niveau et il ne peut pas se remplacer en direct (du moins pas encore).
muru
6
Bien sûr, c'est évident pour vous, mais seulement parce que je suis allé creuser et que j'ai tout cherché pour pouvoir démontrer ce que je veux. Ce n'est PAS évident dès que je SSH dans la boîte. L'affichage de la liste des packages qui nécessite un redémarrage est également insuffisant. Je veux savoir à quelle date et heure ce package a été mis à jour et une raison lisible par l'homme qui explique pourquoi le package souhaite le redémarrage. Si votre grille-pain voulait un redémarrage, vous voudriez savoir pourquoi. Alors pourquoi ne pas exiger autant, sinon plus, d'un système d'exploitation très complexe?
E. Diaz
Parce que je suis un idiot? N'hésitez pas à modifier si vous pensez que la question a besoin d'être clarifiée.
E. Diaz

Réponses:

24

Edit: Une autre, probablement pertinent ou utile article .

Comme vous l'avez déjà découvert, vous pouvez trouver les packages qui nécessitent un redémarrage dans /var/run/reboot-required.pkgs

Maintenant, il vous suffit de regarder dans le changelog du package pour trouver les informations que vous recherchez.

  • Si vous êtes déjà sur la machine, vous pouvez trouver les changelogs dans /usr/share/doc/${package_name}(exemple :) zless /usr/share/doc/linux-image-3.13.0-61-generic/changelog.Debian.gz.
  • Debian fournit quelques outils apt-listchangespour rendre cela plus pratique ( 1 , 2 , 3 ).
  • Une autre façon de le faire serait d'utiliser packages.ubuntu.com .

    Dans ton cas:

    image montrant où trouver le lien pour le changelog sur packages.ubuntu.com

LiveWireBT
la source
5

Le fichier finalement appelé est /usr/lib/update-notifier/update-motd-reboot-required(il est appelé par /etc/update-motd.d/98-reboot-required).

À l'intérieur de l'instruction conditionnelle if de l'un de ces fichiers, ajoutez simplement ceci:

    echo "Packages causing reboot:"
    cat /var/run/reboot-required.pkgs

Ainsi, par exemple, votre /usr/lib/update-notifier/update-motd-reboot-requiredfichier ressemblerait à ceci:

#!/bin/sh -e
#
# helper for update-motd

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
        echo "Packages causing reboot:"
        cat /var/run/reboot-required.pkgs
fi
Berto
la source