Come posso sapere quale pacchetto richiede un riavvio del mio sistema?


85

Ho unattended-upgradeinstallato sui miei sistemi Ubuntu. Di tanto in tanto accedo in remoto a uno di essi e vedo un messaggio che mi informa che devo riavviare il sistema (per completare un aggiornamento). C'è un modo per determinare il pacchetto specifico (o set di pacchetti) che sta attivando questo avviso?

Risposte:


80

Versione breve:

cat /var/run/reboot-required.pkgs

Spiegazione:

Sembra che ci sia un modo semplice per estrarre automaticamente le informazioni richieste.

All'interno dei .debfile ci sono file di controllo per l'installazione, incluso postinst(esegui dopo l'installazione).

Ad esempio, in linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinstinclude

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

e

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

Lo script della shell si /usr/share/update-notifier/notify-reboot-requiredaggiorna
/var/run/reboot-required e /var/run/reboot-required.pkgs .

Quest'ultimo file contiene un elenco di pacchetti che richiedono un riavvio.


1
Sul mio sistema il file è /var/run/reboot-requiredstato creato il giorno prima ma non esiste alcun /var/run/reboot-required.pkgsfile @ Ubuntu 16.04.5 LTS.
Lion

25

Il riavvio è consigliato da unattended-upgradesquando vede che /var/run/reboot-requiredesiste un . Il file è creato da postinstscript (post-installazione) in alcuni pacchetti, è simile al seguente:

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

Se vuoi vedere quali pacchetti lo hanno attivato, puoi dare un'occhiata al contenuto del /var/run/reboot-required.pkgsfile.

Per ulteriori informazioni vedi anche questa discussione .


2

Sulla base della precedente risposta di Olli, ho trovato un metodo per trovare tutti i pacchetti attualmente installati sul tuo sistema che richiedono un riavvio.

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

Attendi il completamento del download, sul mio sistema erano circa 900 MB, quindi potrebbe richiedere del tempo a seconda della tua connessione. Poi:

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

L'output potrebbe essere simile al seguente:

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

Naturalmente, questo metodo non è infallibile. Potrebbero esserci dei pacchetti che avvisano del riavvio richiesto in altro modo oltre a "notifica-riavvio-richiesto", e mentre questo mostra quali pacchetti attualmente installati richiedono o non richiedono un riavvio, non è certo che lo stesso rimarrà valido per i successivi versioni dello stesso pacchetto.


3
Potresti realizzare lo stesso senza alcun noioso download con solo grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Si noti tuttavia che segnalerà solo quali pacchetti potrebbero richiedere il riavvio in un determinato momento, non quale pacchetto ha richiesto il riavvio questa volta
Matija Nalis,

0

Non so davvero se ci sono altri pacchetti che richiedono il riavvio, ma gli aggiornamenti del kernel lo fanno sempre. Direi quasi ogni volta che mi è stato chiesto di riavviare, il kernel era stato aggiornato.


1
Non è abbastanza buono secondo me. Gli aggiornamenti del bootloader richiedono anche il riavvio, oltre a init (avvio).
Olli

1
Bene, anche alcuni altri pacchetti, come DBus: ubuntu.com/usn/USN-799-1 . Quindi compilare un elenco di pacchetti che richiedono il riavvio (DBus non lo richiede sempre) è folle per una soluzione completa.
Olli

1
Hai ragione ... Il mio è una conoscenza parziale :(. Grazie per l'informazione. Non avevo realizzato che anche altri pacchetti richiedessero il riavvio.
Luri
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.