Comment puis-je exécuter les mises à jour de manière responsable automatiquement sur Arch Linux?

15

Je suis un peu nouveau sur Arch Linux et je m'habitue toujours à certains de ses paradigmes. Je viens avec beaucoup d'habitudes d'une autre distribution qui était un peu plus structurée et à certains égards prévisible.

Une chose que j'aimerais faire avec quelques systèmes¹ est d'activer une tâche cron pour effectuer des mises à jour automatiques de tous les packages système. Cela semble être assez facile, sauf que je veux également des commentaires significatifs du système me disant comment les choses se sont déroulées de manière moins verbeuse que je finis par l'ignorer jusqu'à ce que je découvre que le système agit.

  • La sortie complète de pacmann'est pas nécessaire. Peu m'importe le temps que les téléchargements ont pris ou que ce soit sur la mise à jour 46 de 53.
  • Pour la plupart, je ne me soucie pas des succès.
  • Je me soucie des erreurs. Si une mise à jour échoue, je veux en être informé et tout message d'erreur spécifique doit être corrigé.
  • Je me soucie des "avis" émis lors de l'installation. Par exemple, la mise à jour systemd d'aujourd'hui a déclaré:

    :: 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"
    

    Ou le système de fichiers a produit ceci:

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

    Cette dernière catégorie est en fait ce qui m'a incité à poser cette question car il semble que celles-ci soient très incohérentes dans l'ensemble de packages. Certains d'entre eux semblent être générés par post_upgrade(), d'autres par install(), etc. Parfois, ils sont écrits sur stdout, parfois sur stderr. Le format des messages varie considérablement: parfois un bloc entier est préfixé d'une manière ou d'une autre en retrait, d'autres fois il n'y a qu'une chaîne en écho.

Je veux savoir des choses qui peuvent nécessiter mon intervention sur un système mais ne pas être dérangé autrement. Existe-t-il un outil qui gère intelligemment ces données et simplifie l'administration du système? Existe-t-il un moyen d'obtenir la sortie générée par les packages séparément du processus pacman en les installant? Ou suis-je seul à écrire une sorte d'analyseur qui filtre les éléments bénins du journal d'installation?

¹ Avant de sauter à quel point c'est stupide, veuillez noter que je suis assez intelligent pour ne pas le faire sur les serveurs de production et pas sans sauvegardes système complètes basées sur des instantanés qui rendraient la récupération facile en cas de catastrophe.

Caleb
la source
La première chose que je ferais serait de supprimer la yaourtbalise, à la fois de votre question et de votre modèle conceptuel: essayer de le faire avec les dépôts officiels sera assez difficile, ajouter des packages aléatoires de l'AUR au mixage le rendra capricieux ...
jasonwryan
Oh, et ce n'est pas une idée stupide; mais cela repousse fortement la façon dont Arch fonctionne. Utiliser checkupdateset -Syuing une fois par jour est une tâche assez banale; Je ne vois aucun avantage réel pour tout le travail que votre proposition impliquerait.
jasonwryan
@jasonwryan Je voulais développer cela, mais j'ai en fait des packages AUR que j'aimerais intégrer dans le même flux de travail. Je fais actuellement un usage intensif de yaourt et je regrette vivement le fait qu'il n'y ait pas de prise en charge sèche pour les opérations de gestion de paquets! : /
Caleb
2
L'ADN d'Arch se salit les mains: ce n'est tout simplement pas la façon dont il est destiné à être exécuté; vous pouvez y arriver, mais ce sera une victoire à la Pyrrhus et, si cela est documenté ici, mènera tout un tas de débutants au bord d'une falaise pour laquelle ils ne sont absolument pas préparés ...
jasonwryan
2
J'ai passé un certain temps à essayer l'année dernière et je suis arrivé à la conclusion que la seule façon de réaliser des mises à niveau sans tuer régulièrement les systèmes était de construire de nouvelles images (qui semble être le point de test de base et plus fiable dans Arch) puis des services de transplantation avec une configuration Outil de gestion. Peut-être que les mises à jour se sont un peu calmées, mais il y en avait 3-4 en 6 mois qui permettraient d'arroser un système sans intervention manuelle.
Matt

Réponses:

11

Je veux être clair pour vous et pour toute autre personne qui pourrait arriver sur ce fil. Ce que vous voulez faire n'est pas possible. Arch ne cache pas le fait qu'il attend de vous que vous administriez votre système. Une partie de cette responsabilité est présente pour le cycle de mise à jour.

Maintenant, il existe des étapes du processus de mise à jour que vous pouvez automatiser de manière responsable, mais cela ne sera jamais un automatisé -Syu. Vous devez simplement être là pour la mise à niveau.

Ce que vous pouvez faire, par exemple, est de configurer un crontravail qui télécharge tous les packages qui doivent être installés (mais pas les installer). Ce qui suit est un extrait de la pacmandocumentation:

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

Vous pouvez ensuite configurer un crontravail à exécuter sudo pacman -Syuw. Je ne connais pas très bien cronles capacités de planification. Cependant, s'il est capable d'exécuter un travail uniquement après qu'une condition particulière a été remplie (par exemple, une commande renvoyant une valeur particulière), il serait assez trivial de déclencher le téléchargement de nouveaux packages selon les besoins.

J'imagine checkupdates | wc -l, par exemple, faire une vérification contre . S'il renvoie un nombre supérieur à zéro, vous pouvez déclencher le téléchargement. Encore une fois, cependant, cela ne remplacera pas l'exécution d'un -Syulorsque vous êtes présent et prêt à gérer la mise à niveau.

Pour la dernière partie de votre question, où chercher la sortie de ce qui s'est passé lors d'une mise à niveau, vous cherchez /var/log/pacman.log. Il comprend toutes les informations d'erreur qui pourraient vous intéresser.


Il existe un outil qui est destiné à rendre pacmanun peu plus convivial pour les utilisateurs inconnus. Si je ne me trompe pas, il fournit également une notification sur les actualités en cas de mise à jour nécessitant une intervention manuelle.

Cet outil pourrait vous rendre la vie un peu plus simple à court terme, mais il ne remplacera jamais le suivi judicieux et diligent des listes de diffusion.

HalosGhost
la source
2
En fait, pour les avis sur les packages officiels qui nécessiteront des interventions manuelles, je vous recommande de suivre arch-dev-public et arch-general .
HalosGhost
De plus, @jasonwryan est tout à fait correct. Faire cela avec pacmanpourrait être possible. Il yaourtn'est pas possible de le faire avec .
HalosGhost
yaourtfait en fait un travail légèrement meilleur que cela pacman, bien que, comme je pense que vous voulez dire, sa configuration par défaut, un peu plus qu'un assistant aur, ne ferait presque certainement pas bouger les choses à long terme. Il est cependant extrêmement configurable et peut être fait pour maintenir très efficacement les arborescences sources. Les deux yaourtet pacmanseulement envelopper de alpmtoute façon.
mikeserv
Ou, je suppose qu'il est plus vrai de dire, des yaourtwraps pacmanet quelques alpmfonctionnalités et pacmanwraps supplémentaires alpm. Dans tous les cas cependant, yaourts'étend pacman.
mikeserv
Comme indiqué ici , -Syuwest potentiellement très dangereux. Il a la capacité de produire des mises à jour partielles si les mises à jour ne sont pas appliquées, et le logiciel est ensuite installé avec -S.
Sparhawk
1

Il y a un vieux script qui fait un très bon travail; il s'appelle safepac .

EDIT: Ce script est toujours disponible sur github ici: https://github.com/bencahill/binfiles/blob/master/safepac

Que fait-il et comment ça marche?

La façon dont je mets habituellement à jour Arch est de lire les nouvelles, puis de le faire pacman -Syu, ou simplement de le faire pacman -Syuet si quelque chose se passe mal, lire les nouvelles. Maintenant, ce script ne fait rien d'autre: il obtient les dernières entrées de nouvelles du flux RSS, fait de la sedmagie et compare les noms de tous les packages qui ont des mises à jour disponibles pour les nouvelles. Il correspond à "nom-package" et "nom-package-" dans les actualités, et si le nom du package apparaît quelque part dans les actualités, il ignorera le package et ne mettra à jour que tous les autres. De cette façon, tout ce qui pourrait mal tourner sera reporté jusqu'à ce que l'on ait le temps d'inspecter le problème à la main, tandis que les mises à jour non critiques seront effectuées automatiquement!

Habituellement, une fois que vous avez pris en charge une mise à jour éventuellement non fluide, vous ne voudrez plus safepacignorer un certain package car il est toujours dans les actualités. C'est à cela que sert l'ignoréliste. Ainsi, chaque fois que vous avez mis à jour manuellement, vous pouvez ajouter l'entrée de nouvelles respective à la liste des ignorés avec , où est le numéro de l'entrée de nouvelles. Vous pouvez également spécifier le nombre de dernières nouvelles que vous souhaitez inclure dans son analyse avec le commutateur. Le script est également suffisamment intelligent pour ignorer les entrées inexistantes. Si vous rencontrez des problèmes avec des packages dont le nom est très court et qui pourraient apparaître arbitrairement dans les actualités (comme "oui"), vous pouvez les ajouter à la liste blanche afin qu'ils soient toujours installés même s'ils apparaissent dans les actualités.safepac -Ia xxxxxx-nsafepac -Wa

Veuillez noter que vous avez besoin d'une configuration de messagerie fonctionnelle car ce script vous envoie également un courrier de résumé (avec journal complet?), Et avec les parties saillantes de la mise à jour:

analyse de la pacmansortie pour rechercher ces mots et les ajouter au résumé:
"note" "pacnew" "erreur" "important" "avertissement" "existe".

Le script est ancien, mais l'idée est bonne et fonctionne probablement avec une mise à jour mineure, le cas échéant.

Lesto
la source
un problème possible est que la mise à jour majeure (ou en cours) n'est pas mentionnée dans les nouvelles, mais vous devez suivre par vous-même. Exemple, mise à jour de python2 vers python3
Lesto
Pourtant, vous pouvez utiliser des checkupdates (pacman-utils) et obtenir la liste des packages, puis les mettre sur liste blanche à distance, bien si vous avez un pool, mais il est peut-être préférable de configurer quelque chose comme un
dépôt
-2

J'utilise ma propre aptitude à exécuter yaourtpar cron.

vadzim
la source
1
Yaourt est effectivement mort : c'est une très mauvaise idée.
jasonwryan
Je l'ai utilisé yaourtpendant de nombreuses années moi-même. C'était un bon outil, mais les choses qu'il a été construites pour "envelopper" ont changé de forme et cela fait plusieurs choses très mal maintenant. À ce stade, il est si problématique que les auteurs de l'outil ont dit même qu'ils ne l'utilisaient plus eux-mêmes. Si vous voulez un assistant AUR, je vous suggère d'essayer l'un des services activement maintenus. Je suis passé à yaymoi-même et je suis assez content.
Caleb
Cet utilitaire fonctionne également yaypour moi.
vadzim