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

83

Ho impostato unattended-upgrade sui miei sistemi Ubuntu. Occasionalmente accederò da remoto a uno di essi e vedrò un messaggio che mi informa che devo riavviare il sistema (per completare un aggiornamento). C'è un modo per determinare il pacchetto specifico (o una serie di pacchetti) che sta attivando questo avviso?

    
posta belacqua 01.03.2011 - 09:17

4 risposte

79

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 file .deb ci sono i 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 ,
postinst include

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 /usr/share/update-notifier/notify-reboot-required aggiornamenti
/var/run/reboot-required e /var/run/reboot-required.pkgs .

Il secondo file contiene un elenco di pacchetti che richiedono un riavvio.

    
risposta data Olli 01.03.2011 - 10:11
25

Il riavvio è raccomandato da unattended-upgrades quando vede che esiste /var/run/reboot-required . Il file è creato da postinst (post-installazione) script in alcuni pacchetti, sembra qualcosa del tipo:

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

Se vuoi vedere quali pacchetti sono stati attivati, puoi dare un'occhiata al contenuto del file /var/run/reboot-required.pkgs .

Per maggiori informazioni vedi anche questo thread .

    
risposta data arrange 01.03.2011 - 10:10
2

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

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

Attendi il completamento del download, sul mio sistema era di circa 900 MB, quindi potrebbe essere necessario un po 'di tempo a seconda della 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 a questo:

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 notificano il riavvio richiesto con mezzi diversi da 'notify-reboot-required', e mentre questo mostra quali pacchetti attualmente installati richiedono o non richiedono un riavvio, non è sicuro che lo stesso rimanga valido per dopo versioni dello stesso pacchetto.

    
risposta data Niklas Holm 10.02.2016 - 11:22
0

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

    
risposta data luri 01.03.2011 - 09:42

Leggi altre domande sui tag