desarrollo-web-br-bd.com

¿Cómo puedo ejecutar actualizaciones de forma responsable de forma automática en Arch Linux?

Soy un poco nuevo en Arch Linux y todavía me estoy acostumbrando a algunos de sus paradigmas. Vengo con muchos hábitos de otra distribución que era un poco más estructurada y de alguna manera predecible.

Una cosa que me gustaría hacer con algunos sistemas¹ es habilitar un trabajo cron para realizar actualizaciones automáticas de todos los paquetes del sistema. Esto parece que sería bastante fácil, excepto que también quiero algunos comentarios significativos del sistema que me digan cómo fueron las cosas que no fueron tan detalladas que termino ignorándolo hasta que descubro que el sistema está funcionando mal.

  • La salida completa de pacman no es necesaria. No me importa cuánto tiempo tomaron las descargas o si está en la actualización 46 de 53.
  • En su mayor parte, no me preocupan los éxitos.
  • Me preocupan los errores. Si falla la ejecución de una actualización, quiero saberlo y cualquier mensaje de error específico debería corregirse.
  • Me preocupan los "avisos" que se emiten durante la instalación. Por ejemplo, la actualización de systemd de hoy decía:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    O el sistema de archivos produjo esto:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Esta última categoría es en realidad lo que me impulsó a hacer esta pregunta porque parece que son muy inconsistentes en todo el conjunto de paquetes. Algunos de estos parecen ser generados por post_upgrade(), otros por install(), etc. A veces se escriben en stdout, a veces en stderr. El formato de los mensajes varía ampliamente: a veces, un bloque completo tiene un prefijo con sangría de alguna manera, otras veces solo hay una cadena con eco.

Quiero saber cosas que pueden requerir mi intervención en un sistema, pero que no me molesten de otra manera. ¿Existe alguna herramienta que gestione de forma inteligente estos datos y simplifique la administración del sistema? ¿Hay alguna forma de obtener la salida generada por los paquetes por separado del proceso de pacman que los instala? ¿O estoy solo para escribir algún tipo de analizador que filtre cosas benignas del registro de instalación?

¹ Antes de pasar por alto lo estúpido que es esto, tenga en cuenta que soy lo suficientemente inteligente como para no hacer esto en servidores de producción y no sin copias de seguridad del sistema completo basadas en instantáneas que facilitarían la recuperación en caso de una catástrofe.

15
Caleb

Quiero ser claro tanto para ti como para cualquier otra persona que pueda encontrarse con este hilo. Lo que quieres hacer es no posible. Arch no oculta el hecho de que espera que administre su sistema. Parte de esa responsabilidad está presente en el ciclo de actualización.

Ahora, hay pasos del proceso de actualización que puede automatizar de manera responsable, pero nunca llegará a ser un -Syu. Simplemente necesita estar allí para la actualización.

Lo que puede hacer, por ejemplo, es configurar un trabajo cron que descargue cualquier paquete que deba instalarse (pero no instalarlo). El siguiente es un extracto de la documentación de pacman:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Luego, podría configurar un trabajo cron para ejecutar Sudo pacman -Syuw. No estoy muy familiarizado con cron o sus habilidades de programación. Sin embargo, si solo es capaz de ejecutar un trabajo después de que se haya cumplido una condición particular (por ejemplo, un comando que devuelve un valor particular), entonces sería bastante trivial activar la descarga de nuevos paquetes según sea necesario.

Me imagino ejecutando un cheque contra checkupdates | wc -l, por ejemplo. Si devuelve cualquier número por encima de cero, puede activar la descarga. Nuevamente, sin embargo, esto no reemplazará la ejecución de un -Syu cuando esté presente y esté listo para hacer frente a la actualización.

Para la parte final de su pregunta, dónde obtener resultados de lo que sucedió durante una actualización, está buscando /var/log/pacman.log. Incluye toda la información de error que pueda interesarle.


Existe na herramienta que está destinada a hacer que pacman sea un poco más amigable para los usuarios desconocidos. Si no me equivoco, también proporciona una notificación sobre noticias si debe haber una actualización que requiera una intervención manual.

Esta herramienta podría simplificar un poco su vida a corto plazo, pero nunca reemplazará el seguimiento de las listas de correo de manera sensata y diligente.

11
HalosGhost

Hay un guión antiguo que hace un muy buen trabajo; se llama safepac .

EDITAR: Este script todavía está disponible en github aquí: https://github.com/bencahill/binfiles/blob/master/safepac

¿Qué hace y cómo funciona?

La forma en que suelo actualizar Arch es leer las noticias y luego hacer pacman -Syu, o simplemente hacer pacman -Syu y si algo sale mal, lee las noticias. Ahora, este script no hace nada más: obtiene las últimas noticias del canal RSS, hace algo de magia sed y compara los nombres de todos los paquetes que tienen actualizaciones disponibles para las noticias. Coincide con "package-name" y "package-name-" en las noticias, y si el nombre del paquete aparece en alguna parte de las noticias, ignorará el paquete y solo actualizará todos los demás. De esta manera, cualquier cosa que pueda salir mal se pospondrá hasta que uno tenga tiempo de inspeccionar el asunto a mano, ¡mientras que las actualizaciones no críticas se realizarán automáticamente!

Por lo general, una vez que se haya ocupado de una actualización que posiblemente no sea fluida, no querrá que safepac siga ignorando un determinado paquete porque todavía está en las noticias. Para eso está el ignorante. Entonces, cada vez que haya actualizado manualmente, puede agregar la entrada de noticias respectiva a la lista de ignorados con safepac -Ia xxx, donde xxx es el número de la entrada de noticias. También puede especificar la cantidad de noticias más recientes que desea incluir en su análisis con -n interruptor. El script también es lo suficientemente inteligente como para omitir entradas no existentes. Si tiene problemas con paquetes que tienen nombres muy cortos que pueden aparecer arbitrariamente en las noticias (como "sí"), puede agregarlos a la lista blanca con safepac -Wa para que siempre se instalen aunque aparezcan en las noticias.

Tenga en cuenta que necesita una configuración de correo que funcione, ya que este script también le envía un correo de resumen (¿con el registro completo?) Y con partes destacadas de la actualización:

análisis de la salida de pacman para buscar estas palabras y agregarlas al resumen:
"nota" "pacnew" "error" "importante" "advertencia" "existe".

La secuencia de comandos es antigua, pero la idea es buena y probablemente aún funcione con una actualización menor, si corresponde.

1
Lesto