Wie kann ich Updates unter Arch Linux verantwortungsvoll automatisch ausführen?

Wie kann ich Updates unter Arch Linux verantwortungsvoll automatisch ausführen?

Ich bin ein Neuling bei Arch Linux und gewöhne mich noch an einige seiner Paradigmen. Ich habe viele Gewohnheiten von einer anderen Distribution mitgebracht, die wesentlich strukturierter und in gewisser Weise vorhersehbarer war.

Bei einigen Systemen¹ würde ich gern einen Cron-Job aktivieren, der alle Systempakete automatisch aktualisiert. Das scheint ziemlich einfach zu sein, aber ich möchte auch eine sinnvolle Rückmeldung vom System, die mir sagt, wie die Dinge gelaufen sind, und die nicht so ausführlich ist, dass ich sie ignoriere, bis ich feststelle, dass das System nicht richtig funktioniert.

  • Die vollständige Ausgabe pacmanist unnötig. Es ist mir egal, wie lange die Downloads gedauert haben oder dass es sich um Update 46 von 53 handelt.
  • Erfolge sind mir größtenteils egal.
  • Fehler interessieren mich. Wenn ein Update fehlschlägt, möchte ich darüber informiert werden und alle spezifischen Fehlermeldungen sollten durchgepatcht werden.
  • Mir sind die „Hinweise“ wichtig, die während der Installation ausgegeben werden. Das heutige Systemd-Update besagt beispielsweise:

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

    Oder das Dateisystem hat Folgendes erzeugt:

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

    Diese letzte Kategorie hat mich eigentlich dazu veranlasst, diese Frage zu stellen, da diese im gesamten Paketsatz sehr inkonsistent zu sein scheinen. Einige davon scheinen von generiert zu werden post_upgrade(), andere von install()usw. Manchmal werden sie in stdout geschrieben, manchmal in stderr. Das Format der Nachrichten variiert stark: Manchmal ist ein ganzer Block auf irgendeine Weise eingerückt, manchmal gibt es nur eine bloße Echo-Zeichenfolge.

Ich möchte über Dinge informiert sein, die möglicherweise mein Eingreifen in ein System erfordern, aber ansonsten nicht gestört werden. Gibt es ein Tool, das diese Daten intelligent verwaltet und die Systemverwaltung vereinfacht? Gibt es eine Möglichkeit, die von Paketen generierte Ausgabe getrennt vom Pacman-Prozess abzurufen, der sie installiert? Oder muss ich selbst eine Art Parser schreiben, der harmlose Dinge aus dem Installationsprotokoll herausfiltert?

¹ Bevor Sie jetzt gleich sagen, wie dumm das ist, beachten Sie bitte, dass ich klug genug bin, dies nicht auf Produktionsservern zu tun und nicht ohne Snapshot-basierte vollständige Systemsicherungen, die im Katastrophenfall eine Wiederherstellung einfach machen würden.

Antwort1

Ich möchte sowohl für Sie als auch für alle anderen Personen, die auf diesen Thread stoßen, klarstellen, dass Sienichtmöglich. Arch macht keinen Hehl daraus, dass es erwartet,Duum Ihr System zu verwalten. Zu dieser Verantwortung gehört auch die Anwesenheit beim Aktualisierungszyklus.

Jetzt sind daSchrittedes Aktualisierungsprozesses, den Sie verantwortungsvoll automatisieren können, aber es wird nie zu einem automatisierten führen -Syu. Sie müssen einfach beim Upgrade dabei sein.

Was Sie beispielsweise tun können, ist, einen Job einzurichten cron, der alle zu installierenden Pakete herunterlädt (aber nicht installiert). Nachfolgend ein Auszug aus der pacmanDokumentation:

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

Sie könnten dann einen cronJob einrichten, der ausgeführt werden soll sudo pacman -Syuw. Ich bin mit seinen Planungsfunktionen nicht besonders vertraut cron. Wenn es jedoch möglich ist, einen Job nur auszuführen, wenn eine bestimmte Bedingung erfüllt ist (z. B. ein Befehl, der einen bestimmten Wert zurückgibt), wäre es ziemlich einfach, das Herunterladen neuer Pakete nach Bedarf auszulösen.

checkupdates | wc -lIch könnte mir vorstellen , beispielsweise eine Prüfung gegen auszuführen . Wenn eine Zahl über Null zurückgegeben wird, können Sie den Download auslösen. Dies ersetzt jedoch nicht die Ausführung eines -Syu, wenn Sie anwesend und bereit sind, das Upgrade durchzuführen.

Zum letzten Teil Ihrer Frage, wo Sie eine Ausgabe dessen erhalten, was während eines Upgrades passiert ist, suchen Sie nach /var/log/pacman.log. Darin sind alle Fehlerinformationen enthalten, die Sie interessieren könnten.


Es gibtein Werkzeugdas soll es pacmanfür unerfahrene Benutzer etwas benutzerfreundlicher machen. Wenn ich mich nicht irre, gibt es auch eine Benachrichtigung über Neuigkeiten, wenn es ein Update geben sollte, das manuelles Eingreifen erfordert.

Dieses Tool macht Ihnen das Leben vielleicht kurzfristig ein wenig einfacher, aber es kann nie das sorgfältige und gewissenhafte Verfolgen der Mailinglisten ersetzen.

Antwort2

Es gibt ein altes Skript, das wirklich gute Arbeit leistet. Es heißtSafepac.

BEARBEITEN: Dieses Skript ist weiterhin hier auf GitHub verfügbar: https://github.com/bencahill/binfiles/blob/master/safepac

Was macht es und wie funktioniert es?

Normalerweise aktualisiere ich Arch so, dass ich die News lese und dann tue pacman -Syuoder nur tue pacman -Syuund wenn etwas schief geht, lese ich die News. Dieses Skript tut nichts anderes: Es ruft die neuesten News-Einträge aus dem RSS-Feed ab, vollführt ein bisschen sedMagie und vergleicht die Namen aller Pakete, für die Updates verfügbar sind, mit den News. Es gleicht „Paketname“ und „Paketname-“ in den News ab, und wenn der Paketname irgendwo in den News auftaucht, wird es das Paket ignorieren und nur alle anderen aktualisieren. Auf diese Weise wird alles, was schief gehen könnte, verschoben, bis man Zeit hat, die Angelegenheit manuell zu prüfen, während nicht kritische Updates einfach automatisch durchgeführt werden!

Normalerweise möchten Sie, nachdem Sie sich um ein möglicherweise nicht reibungsloses Update gekümmert haben, safepacein bestimmtes Paket nicht mehr ignorieren, weil es immer noch in den Nachrichten ist. Dafür gibt es die Ignorierliste. Jedes Mal, wenn Sie ein manuelles Update durchgeführt haben, können Sie den entsprechenden Nachrichteneintrag mit zur Ignorierliste hinzufügen , wobeisafepac -Ia xxxxxxist die Nummer des News-Eintrags. Mit dem -nSchalter können Sie auch die Anzahl der neuesten News angeben, die Sie in die Analyse einbeziehen möchten. Das Skript ist auch intelligent genug, um nicht vorhandene Einträge zu überspringen. Wenn Sie Probleme mit Paketen haben, die sehr kurze Namen haben und willkürlich in den News erscheinen könnten (wie „yes“), können Sie sie mit zur Whitelist hinzufügen, safepac -Wasodass sie immer installiert werden, auch wenn sie in den News erscheinen.

Bitte beachten Sie, dass Sie ein funktionierendes E-Mail-Setup benötigen, da dieses Skript Ihnen auch eine Digest-E-Mail (mit vollständigem Protokoll?) und mit den wichtigsten Teilen des Updates sendet:

Analyse der pacmanAusgabe, um nach diesen Wörtern zu suchen und sie der Zusammenfassung hinzuzufügen:
„Hinweis“, „Pacnew“, „Fehler“, „wichtig“, „Warnung“, „existiert“.

Das Skript ist alt, aber die Idee ist gut und funktioniert wahrscheinlich mit geringfügigen Aktualisierungen, wenn überhaupt, immer noch.

Antwort3

Ich benutze meine eigenetilitätyaourtper Cron ausführen .

verwandte Informationen