Quiero que mi script de informes cron-run me notifique en caso de que haya actualizaciones para mis paquetes. ¿Es la forma de apt-get
darme la lista de actualizaciones disponibles pero no hacer nada más?
209
Para las versiones modernas de apt
hay un interruptor específico para esto:
apt list --upgradable
Para el apt-get
comando anterior, el -u
conmutador muestra una lista de paquetes disponibles para la actualización:
# apt-get -u upgrade --assume-no
Desde la apt-get
página del manual :
-u
--show-updated Muestra paquetes actualizados; Imprima una lista de todos los paquetes que se actualizarán. Elemento de configuración: APT :: Get :: Show-Upgraded.
--assume-no Automático "no" a todas las indicaciones. <== Para evitar que comience a instalarse
-u
es una opción predeterminada deapt-get
No se lee tan fácilmente, a continuación hay un perl one liner para analizar la salida de apt-get:
Esto debería generar algo como:
Esperemos que ayude a alguien más,
fuente
column
así:apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
Otra opción, inspirada en enzotib:
Este comando usará aptitude para generar los nuevos paquetes y luego wc para contar las líneas.
En una nota al margen, encontré que la solución de enzotib sin las comillas simples alrededor de la ~ U no funcionó para mí. (Wheezy, ZSH, aptitud 0.6.8.2)
Actualización:
Con el nuevo apt que puedes hacer ahora:
fuente
Lo más fácil es:
fuente
Tu puedes correr
o los indocumentados
Otro método usando una
apt-get
simulación:fuente
dist-upgrade
pero no perder algunos paquetes que necesitaba usaraptitude
.aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
¡Hizo el truco!Echa un vistazo al paquete "apticron":
apticron: herramienta simple para enviar por correo sobre actualizaciones de paquetes pendientes
https://packages.debian.org/buster/apticron
fuente
enumerará las actualizaciones disponibles sin instalar realmente.
El primer comando actualiza los archivos de índice del paquete antes de realizar la actualización simulada (por lo tanto, -s). "-s" realizará una actualización simulada que mostrará los paquetes que se instalarían pero que en realidad no instalarán nada.
Por el contrario, "-u" en lugar de "-s" en realidad se instalaría después de la confirmación.
fuente
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, reconocimiento y ejecución en seco son mis favoritos personales.Necesitaba información de la versión completa sobre posibles actualizaciones, así que utilicé una modificación de la respuesta de jasonwryan:
Es una salida simple e IMO razonablemente formateada.
fuente
Simplemente filtre la salida de
tener solo la información preferida en su registro.
Lo más probable es que necesites la parte hermosa después de la línea
que tiene pocos espacios al principio.
fuente
Jet otro en línea, inspirado por esta respuesta :
La salida se ve así (coloreada):
Si no desea la breve descripción, use esta:
Salida:
fuente
es el más simple para correos electrónicos cron; no hay iteración del usuario, y si no hay actualizaciones no hay salida.
fuente
Después de escribir una advertencia a la respuesta de @ jasonwryan, quiero proporcionar mi propia solución:
Desafortunadamente, este no funciona con debian wheezy y tuve que verificar algunos contenedores lxc que aún no están actualizados. Este formulario siempre funcionará:
Finalmente, también quería formatear la salida. Elegí cambiar la llamada nuevamente (usando
--dry-run
pero ignorando todas las salidas adicionales) porque se siente más seguro:Devoluciones:
fuente
apt-check
es probablemente el método de script más eficiente.Una modificación muy pequeña muestra solo las actualizaciones de seguridad.
fuente
Como variación, uso lo siguiente:
Péguelo en un script llamado
apt-updates
y luego puede llamarapt-updates
para obtener una lista de todas las actualizaciones, independientemente del usuario.Aún necesita llamar
apt-get update
con acceso privilegiado.fuente
Ahí está la
apt-show-versions
herramienta. Para mostrar las actualizaciones disponibles, ejecute:fuente
Me gusta usar esto:
Obtiene una salida como esta:
si hay actualizaciones disponibles, y ninguna si no las hay. De esta manera, simplemente puede combinarlo con una solución de monitoreo.
fuente