¿Cómo encontrar el número de paquetes que necesitan actualización desde la línea de comandos?

34

Estoy trabajando en alguna automatización del administrador del sistema usando Fabric y me gustaría poder monitorear la cantidad de paquetes que necesitan actualizarse en una máquina determinada. Esta es la misma información que puedo ver la primera vez que inicio sesión en una máquina, es decir, esta parte:

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

¿Hay algún comando que pueda ejecutar (preferiblemente sin sudo) que proporcione solo esa información?

He examinado los enlaces de apt-python, pero parecen tener una curva de aprendizaje alta y también parecen haber cambiado mucho: me gustaría algo que funcione al menos tan lúcido sin necesidad de hacerlo. hacer cosas diferentes en diferentes versiones de Ubuntu.

KayEss
fuente

Respuestas:

33

Para obtener esa salida, puede usar el comando

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

o, si no quieres usar sudo,

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

Explicación

La loginaplicación muestra el resultado encontrado en el archivo /etc/motd, que es un enlace simbólico a /var/run/motd.

El mounted-varrunservicio actualiza este último archivo (ver /etc/init/mounted-varrun.conf) invocando todos los scripts /etc/update-motd.d/, y en particular

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

que a su vez llama al guión

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

este script ejecuta varias acciones y finalmente escribe el resultado en el archivo de texto

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

EDITAR

En cuanto a la parte de reinicio de la pregunta, ejecute este comando

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

no dará salida si no se requiere reiniciar.

enzotib
fuente
Solo estoy revisando una máquina que ejecuta 11.04 y byobu muestra 44 actualizaciones requeridas. catSi el archivo que sugiere está en blanco y el script al que apunta primero no existe en esta máquina, ¿está en algún paquete que necesita ser instalado? Tengo /usr/lib/update-manager, pero no hay update-notifierdirectorio.
KayEss
Probado en el escritorio 11.04. Esos archivos pertenecen a los update-notifier-commonque se instalaron automáticamente en una instalación nueva (no se actualiza desde 10.10).
enzotib
He visto algunas máquinas más. Para aquellos que tienen /var/lib/update-notifier/apt-checkesto, parece que devuelve los dos números, es decir, 43; 24 (43 actualizaciones, 24 son de seguridad), pero incluso eso no aparece en todas mis máquinas. Supongo que este archivo podría haberse movido entre paquetes en diferentes versiones.
KayEss
21

¿Por qué no puedes simplemente ejecutar esto?

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

Eso es lo que hace / usr / lib / update-notifier / update-motd-updates-available para recopilar la información, al menos en la versión de Ubuntu que estoy usando (12.10).

Tom Barron
fuente
Acaba de comprobar en lúcido y funciona allí también
Kayess
2
Que escribe su salida a stderr. ¿Quién haría eso?
Kayess
2
Prefiero este enfoque, ya que los pasos laterales completamente todo el update-motdpaquete y su pensamiento. Gracias por sólo dar el mando directo.
jefflunt
3

También busco un método programado para una verificación de actualización dentro de contenedores mínimos de acopladores, cuando encontré un comentario en /usr/lib/update-notifier/apt-check:

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

Esto permite una comprobación de actualización programada, sin la necesidad de instalar el update-notifier-commonpaquete

Simon Sudler
fuente
0

Puede usar el check_aptcomplemento de monitoring-plugins-basic( Nagios ), con la ventaja de obtener diferentes códigos de retorno dependiendo de si hay actualizaciones disponibles:

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

Los códigos de retorno tienen los siguientes significados:

  • 0 -> no hay paquetes disponibles para actualizar
  • 1 -> paquetes no críticos disponibles para la actualización
  • 2 -> actualizaciones críticas disponibles

Referencias

Clauz
fuente