Come trovare il numero di pacchetti che necessitano di aggiornamento dalla riga di comando?


34

Sto lavorando su un po 'di automazione dell'amministratore di sistema usando fabric e vorrei essere in grado di monitorare il numero di pacchetti che devono essere aggiornati su un determinato computer. Queste sono le stesse informazioni che posso vedere quando accedo per la prima volta a una macchina, ovvero questa parte:

35 packages can be updated.
22 updates are security updates.

Esiste un comando che posso eseguire (preferibilmente senza sudo) che fornisce solo queste informazioni?

Ho esaminato le associazioni apt-python, ma sembrano avere un'alta curva di apprendimento e sembrano anche essere cambiate molto intorno - mi piacerebbe qualcosa che funzionerà almeno tanto indietro quanto lucido senza bisogno di fare cose diverse su diverse versioni di Ubuntu.

Risposte:


33

Per ottenere tale output, è possibile utilizzare il comando

sudo /usr/lib/update-notifier/update-motd-updates-available

o, se non si desidera utilizzare sudo,

cat /var/lib/update-notifier/updates-available

Spiegazione

L' loginapplicazione mostra l'output trovato nel file /etc/motd, ovvero un collegamento simbolico a /var/run/motd.

Quest'ultimo file viene aggiornato dal mounted-varrunservizio (vedi /etc/init/mounted-varrun.conf) invocando tutti gli script /etc/update-motd.d/, e in particolare

/etc/update-motd.d/90-updates-available

che a sua volta chiama la sceneggiatura

/usr/lib/update-notifier/update-motd-updates-available

questo script esegue varie azioni e alla fine scrive l'output nel file di testo

/var/lib/update-notifier/updates-available

MODIFICARE

Per quanto riguarda la parte di riavvio della domanda, eseguire questo comando

/usr/lib/update-notifier/update-motd-reboot-required

non darà alcun output se non è necessario riavviare.


Sto solo controllando una macchina con 11.04 e byobu mostra 44 aggiornamenti richiesti. catil file che suggerisci è vuoto e lo script a cui fai riferimento per primo non esiste su questa macchina - è presente in qualche pacchetto che deve essere installato? Ho /usr/lib/update-manager, ma nessuna update-notifierdirectory.
KayEss,

Testato sul desktop 11.04. Questi file appartengono a update-notifier-commonquelli installati automaticamente su una nuova installazione (non aggiornare dalla 10.10).
enzotib,

Ho guardato alcune altre macchine. Per quelli che hanno /var/lib/update-notifier/apt-checkquesto sembra che restituisca i due numeri, ovvero 43; 24 (43 aggiornamenti, 24 sono quelli di sicurezza), ma anche questo non appare su tutte le mie macchine. Suppongo che questo file potrebbe essere spostato tra i pacchetti in diverse versioni.
KayEss,

21

Perché non puoi semplicemente eseguire questo?

/usr/lib/update-notifier/apt-check --human-readable

Ecco cosa fa / usr / lib / update-notifier / update-motd-updates-available per raccogliere le informazioni, almeno nella versione di Ubuntu che sto usando (12.10).


Ho appena controllato Lucid e funziona anche lì
KayEss

2
Scrive il suo output su stderr. Chi lo farebbe?
KayEss,

2
Preferisce questo approccio poiché completa completamente il update-motdpacchetto e il suo modo di pensare. Grazie per aver dato solo il comando diretto.
jefflunt,

3

Cerco anche un metodo scripred per un controllo di aggiornamento all'interno di contenitori docker minimi, quando ho trovato un commento in /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

Ciò consente un controllo degli aggiornamenti tramite script, senza la necessità di installare il update-notifier-commonpacchetto


0

Puoi utilizzare il check_aptplug-in da monitoring-plugins-basic( Nagios ), con il vantaggio di ottenere codici di ritorno diversi a seconda che siano disponibili aggiornamenti:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

I codici di ritorno hanno i seguenti significati:

  • 0 -> nessun pacchetto disponibile per l'aggiornamento
  • 1 -> pacchetti non critici disponibili per l'aggiornamento
  • 2 -> aggiornamenti critici disponibili

Riferimenti:

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.