¿Cómo puedo ejecutar de manera responsable las actualizaciones automáticamente en Arch Linux?

15

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 bastante 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. 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á actuando.

  • La salida completa de pacmanes innecesaria. 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 importan los éxitos.
  • Me importan los errores. Si falla una ejecución de actualización, quiero saberlo y cualquier mensaje de error específico debe ser revisado.
  • Me importan los "avisos" emitidos durante la instalación. Por ejemplo, la actualización de systemd de hoy dijo:

    :: 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 el prefijo sangrado de alguna manera, otras veces solo hay una cadena con eco desnudo.

Quiero saber sobre cosas que pueden requerir mi intervención en un sistema pero que no me molesten de otra manera. ¿Existe alguna herramienta que gestione de manera 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 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 saltar sobre lo estúpido que es esto, tenga en cuenta que soy lo suficientemente inteligente como para no hacer esto en los servidores de producción y no sin copias de seguridad de todo el sistema basadas en instantáneas que facilitarían la recuperación en caso de una catástrofe.

Caleb
fuente
La primera cosa que hacer es quitar la yaourtetiqueta, tanto de su pregunta y su modelo conceptual: tratando de hacer esto con los repositorios oficiales será bastante difícil, añadiendo paquetes al azar de la AUR a la mezcla hará que sea quijotesca ...
jasonwryan
Ah, y esta no es una idea estúpida; pero empuja mucho contra la forma en que funciona Arch. Usar checkupdatesy usar -Syuuna vez al día es una tarea bastante trivial; No veo ningún beneficio real para todo el trabajo que implicaría su propuesta.
jasonwryan
@jasonwryan Tenía la intención de ampliar eso, pero en realidad tengo algunos paquetes de AUR que me gustaría incluir en el mismo flujo de trabajo. ¡Actualmente uso mucho el yaourt y extraño mucho el hecho de que no hay soporte de funcionamiento en seco para las operaciones de gestión de paquetes! : /
Caleb
2
El ADN de Arch te está ensuciando las manos: esta no es la forma en que debe ejecutarse; puede llegar allí, pero será una victoria pírrica y, si se documenta aquí, llevará a muchos novatos al borde de un acantilado para el que no están completamente preparados ...
jasonwryan
2
Pasé un tiempo intentando este último año y llegué a la conclusión de que la única forma de lograr actualizaciones sin matar regularmente los sistemas era crear nuevas imágenes (que parece ser el punto de prueba base y más confiable en Arch) y luego el servicio de trasplante con una configuración herramienta de administracion. Tal vez las actualizaciones se hayan calmado un poco, pero hubo 3-4 en un período de 6 meses que manejarían un sistema sin intervención manual.
Matt

Respuestas:

11

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

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

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

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

Entonces podría, configurar un crontrabajo para ejecutar sudo pacman -Syuw. No estoy terriblemente familiarizado con cronsus habilidades de programación. Sin embargo, si solo es capaz de ejecutar un trabajo después de que se cumpla 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 ejecutar una verificación en contra checkupdates | wc -l, por ejemplo. Si devuelve cualquier número por encima de cero, puede activar la descarga. Una vez más, sin embargo, esto no reemplazará la ejecución de una -Syucuando esté presente y listo para lidiar con la actualización.

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


Hay una herramienta que pretende hacer pacmanun poco más amigable para usuarios desconocidos. Si no me equivoco, también proporciona una notificación sobre las noticias si debe haber una actualización que requiera intervención manual.

Esta herramienta puede simplificar su vida a corto plazo, pero nunca será un reemplazo para seguir las Listas de correo de manera sensata y diligente.

HalosGhost
fuente
2
En realidad, para avisos sobre paquetes oficiales que requerirán intervenciones manuales, recomendaría que sigas arch-dev-public y arch-general .
HalosGhost
Además, @jasonwryan es completamente correcto. Hacer esto con pacmanpodría ser posible. Hacerlo con yaourtno es factible.
HalosGhost
yaourtEn realidad, hace un trabajo un poco mejor de esto que pacman, sin embargo, como creo que quiere decir, su configuración predeterminada como poco más que un ayudante de aur casi seguramente arruinaría las cosas a largo plazo. Sin embargo, es extremadamente configurable y se puede hacer para mantener los árboles fuente de manera muy efectiva. Ambos yaourty pacmansolo envolver de alpmtodos modos.
mikeserv
O, supongo que es más cierto decir, yaourtwraps pacmany algunas alpmfuncionalidades y pacmanwraps adicionales alpm. En cualquier caso, sin embargo, se yaourtextiende pacman.
mikeserv
Como se señaló aquí , -Syuwes potencialmente bastante peligroso. Tiene la capacidad de producir actualizaciones parciales si las actualizaciones no se aplican, y luego se instala el software con -S.
Sparhawk
1

Hay un viejo script 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 generalmente actualizo Arch es leer las noticias y luego hacer pacman -Syu, o simplemente hacer pacman -Syuy, si algo sale mal, leer las noticias. Ahora este script no hace nada más: obtiene las últimas entradas de noticias del feed RSS, hace algo de sedmagia y compara los nombres de todos los paquetes que tienen actualizaciones disponibles para las noticias. Coincide con "nombre-paquete" y "nombre-paquete-" en las noticias, y si el nombre del paquete aparece en algún lugar 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 para 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 posiblemente no uniforme, no querrá safepacignorar un paquete determinado porque todavía está en las noticias. Para eso está el ignorelista. Por lo tanto, cada vez que haya actualizado manualmente, puede agregar la entrada de noticias respectiva a la lista de ignorados con , donde está 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 el conmutador. El script también es lo suficientemente inteligente como para omitir entradas no existentes. Si encuentra problemas con los paquetes que tienen nombres muy cortos que pueden aparecer arbitrariamente en las noticias (como "sí"), puede agregarlos a la lista blanca para que siempre se instalen incluso si aparecen en las noticias.safepac -Ia xxxxxx-nsafepac -Wa

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 un registro completo?) Y con partes destacadas de la actualización:

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

El script es antiguo, pero la idea es buena y probablemente todavía funcione con actualizaciones menores, si las hay.

Lesto
fuente
un posible problema es que las actualizaciones importantes (o de última hora) no se mencionan en las noticias, pero debe realizar un seguimiento usted mismo. Caso en cuestión, actualización de python2 a python3
Lesto
Aún así, podría usar las fechas de verificación (pacman-utils) y obtener la lista de paquetes, y luego incluirlos en la lista blanca de forma remota, lo que es bueno si tiene un grupo, pero tal vez sea mejor configurar algo como un repositorio local
Lesto
-2

Utilizo mi propia información para ejecutar yaourtcron.

vadzim
fuente
1
Yaourt está efectivamente muerto : esta es una idea espectacularmente mala.
jasonwryan
Yo solía yaourtpor muchos años. Era una buena herramienta, pero las cosas para las que fue construida para "envolver" han cambiado de forma y ahora hace varias cosas bastante mal. En este punto, es tan problemático que los autores de la herramienta han dicho que incluso ellos ya no la están utilizando. Si desea un ayudante de AUR, le sugiero que pruebe uno de los que se mantienen activamente. Me cambié a yaymí mismo y estoy bastante feliz.
Caleb
Esa utilidad también funciona yaypara mí.
vadzim