• Café
  • Automatisiertes Paketupgrade

Hab jetzt die Lösung für die korrekte Zeitangabe, aber ich werde das erst einmal noch besser testen müssen bevor ich es herausgebe. Leider fehlt mir momentan die Zeit dafür.
Und die Anzeige der Arch-Linux-News ist auch schon auf dem Weg.
Diese Nachricht nur um mal kurz über den Stand der Dinge Bescheid zu geben.

  • md_39118 hat auf diesen Beitrag geantwortet.

    tuxnix
    Hallo
    Danke für die Info und viel Erfolg mit der neuen Lösung.
    Der Stand bei mir, ohne den Schalter -t und mit -b läuft das Script und gibt alle Debug Meldungen aus.
    Als Test habe ich nur die Zeitberechnung mal als Script gestartet, das sieht auch gut aus.

    systemctl list-timers
    sleep 3
    days="7"
    NOW=$(date --date='now' +%s)
    UPAC=$(date -d $(awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1 | sed -e 's/\[//' -e 's/\]//') +%s)
    NTIMER=$(date -d $(systemctl list-timers shadow.timer | awk 'NR>1 && NR<3{print $2,$3}' | sed -e 's/ /T/') +%s)
    LTIMER=$(date -d $(systemctl list-timers shadow.timer | awk 'NR>1 && NR<3{print $7,$8}' | sed -e 's/ /T/') +%s)
    NEXT=$((days*86400+UPAC-NOW))
    PERIOD=$((NTIMER-LTIMER))
    COUNTS=$((NEXT/PERIOD))
    HOURS=$(( (NOW-LTIMER+PERIOD*COUNTS) / 3600))
    REST=$(( (NOW-LTIMER+PERIOD*COUNTS) % 3600))
    MINUTES=$(( (3600-REST) / 60))
    sleep 3
    echo $NOW
    echo $UPAC
    echo $NTIMER
    echo $LTIMER
    echo $NEXT
    echo $PERIOD
    echo $COUNTS
    echo $HOURS
    echo $REST
    echo $MINUTES
    echo $"Next upgrade in $HOURS h $MINUTES m"

    Hier die Ausgabe.

    sudo ureminder-test
    NEXT                             LEFT LAST                            PASSED UNIT                             ACTIVATES
    -                                   - Wed 2024-09-04 14:34:05 CEST  6min ago ureminder.timer                  ureminder.service
    
    1725453656
    1725218464
    1725487200
    1725452947
    369608
    34253
    10
    95
    1239
    39
    Next upgrade in 95 h 39 m

    Ja, es rechnet und bekommt jetzt auch immer zuverlässig Ausgangswerte aus dem journal geliefert, aber es rechnet in einigen Fällen je nach Voreinstellung der Tage und des Timers noch falsch. Sorry, aber für die ganz banale Punkt und Strichrechnung bei zwei Uhren an denen man drehen kann, brauche ich den richtigen Moment an Ruhe.
    Gestern war die Beerdigung meiner Schwester und meine Konzentration ist gerade auf ganz andere Dinge gerichtet. Wenn dieser Moment kommt, dann geht's dann auch schnell wieder mit dem ein mal eins weiter. 😉

      15 Tage später

      Hallo
      Ist es möglich, das bei einer Frage am Anfang des Updat Vorgangs das Script nicht richtig reagiert.
      Am 15.9.24 ist zb. diese Frage gekommen und wurde nicht mit "J" beantwortet, danach kommen dann einige Fehler Meldungen.
      Eine initramfs wird nicht geschrieben.

      Sep 15 10:11:06 rk-7072 ureminder[1305]: :: mlocate durch extra/plocate ersetzen? [J/n]
      Sep 15 10:25:53 rk-7072 ureminder[1305]:  okular-24.08.1-1-x86_64 wird heruntergeladen …
      Sep 15 10:25:53 rk-7072 ureminder[1305]: Fehler: Konnte Datei 'okular-24.08.1-1-x86_64.pkg.tar.zst.sig' nicht von mirrors.neusoft.edu.cn übertragen : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds

      Erst nach dem Aufruf von "sudo pacman -Syu" und dem Beantworten der Frage mit "J" läuft das Update durch und die initramfs werden geschrieben.

      Das Skript benutzt die Option --noconfirm.
      Schau mit pacman --help mal nach was das bedeutet.
      .....Es bedeutet, dass ein großes J automatisch bestätigt wird.
      Ein großes N übrigens auch.

      Zusätzlich würde dir im Falle einer fehlerhaften Ausführung sofort eine Warnmeldung angezeigt werden mit folgendem Inhalt: Fehler: Zur Analyse gebe `pacman -Syu auf der Konsole ein.

      Ich weiß nicht woran es bei dir lag. Aber daran, dass das J nicht automatisch bestätigt wurde jedenfalls nicht. Und ansonsten ist ja alles o.K. denn sonst würde auch ein pacman -Syu auf der Konsole Fehler ausgeben.

      • md_39118 hat auf diesen Beitrag geantwortet.

        tuxnix
        Hallo
        Die Option --noconfirm ist mir bekannt. Eine Warnmeldung wurde nicht angezeigt.
        Der Ablauf war jedenfalls anders als bisher. Der erste Versuch startet "Sep 15 10:05:03" Hier Auszüge aus den Log Dateien.

        Sep 15 10:05:03 rk-7072 systemd[1]: Started ureminder.timer.
        Sep 15 10:10:37 rk-7072 systemd[1]: Started ureminder.service.
        .
        Sep 15 10:11:06 rk-7072 ureminder[1305]: :: mlocate durch extra/plocate ersetzen? [J/n]
        Sep 15 10:11:06 rk-7072 ureminder[1305]: Abhängigkeiten werden aufgelöst …
        Sep 15 10:11:08 rk-7072 ureminder[1305]: Warnung: Abhängigkeits-Zyklus entdeckt:
        Sep 15 10:11:08 rk-7072 ureminder[1305]: Warnung: xdg-desktop-portal-kde wird vor seiner Abhängigkeit plasma-workspace installiert werden
        Sep 15 10:11:08 rk-7072 ureminder[1305]: Paket (123)                       Alte Version               Neue Version                 Netto-Veränderung  Größe des Downloads
        .
        Sep 15 10:25:53 rk-7072 ureminder[1305]:  intel-ucode-20240910-1-any wird heruntergeladen …
        Sep 15 10:25:53 rk-7072 ureminder[1305]: Fehler: Konnte Datei 'intel-ucode-20240910-1-any.pkg.tar.zst.sig' nicht von mirrors.neusoft.edu.cn übertragen : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds
        Sep 15 10:25:53 rk-7072 ureminder[1305]: Warnung: Konnte einige Dateien nicht übertragen
        Sep 15 10:25:53 rk-7072 ureminder[1305]: Fehler: Der Vorgang konnte nicht durchgeführt werden (Unerwarteter Fehler)
        Sep 15 10:25:53 rk-7072 ureminder[1305]: Fehler sind aufgetreten, keine Pakete wurden aktualisiert.
        Sep 15 10:25:54 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
        Sep 15 10:25:54 rk-7072 systemd[1]: ureminder.service: Consumed 33.090s CPU time, 827.2M memory peak.

        Nach einiger Zeit erfolgte ein reboot, danach der zweite Versuch.

        Sep 15 11:06:33 rk-7072 systemd[1]: Started ureminder.timer.
        .
        Sep 15 11:12:34 rk-7072 ureminder[1264]:  systemd-resolvconf-256.6-1-x86_64 wird heruntergeladen …
        Sep 15 11:12:34 rk-7072 ureminder[1264]: Schlüsselbund wird geprüft …
        Sep 15 11:12:34 rk-7072 ureminder[1264]: Paketintegrität wird geprüft …
        Sep 15 11:12:44 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
        Sep 15 11:12:44 rk-7072 systemd[1]: ureminder.service: Consumed 14.546s CPU time, 893.2M memory peak.

        Hier dachte ich, es ist alles OK also wieder reboot, dann der dritte Versuch.

        Sep 15 11:44:42 rk-7072 ureminder[1268]: endeavouros/yad                   14.1-1.1                   14.1-2.1                             -0,01 MiB
        Sep 15 11:44:42 rk-7072 ureminder[1268]: endeavouros/yay                   12.3.5-1                   12.3.5-2                              0,37 MiB
        Sep 15 11:44:42 rk-7072 ureminder[1268]: Gesamtgröße des Downloads:  0,30 MiB
        Sep 15 11:44:42 rk-7072 ureminder[1268]: :: Download fortsetzen? [J/n]
        Sep 15 11:44:42 rk-7072 ureminder[1268]: :: Pakete werden empfangen …
        Sep 15 11:44:42 rk-7072 ureminder[1268]:  re2-1:20240702-2-x86_64 wird heruntergeladen …
        Sep 15 11:44:42 rk-7072 ureminder[1268]:  plocate-1.1.22-3-x86_64 wird heruntergeladen …
        Sep 15 11:44:42 rk-7072 ureminder[1268]: Schlüsselbund wird geprüft …
        Sep 15 11:44:42 rk-7072 ureminder[1268]: Paketintegrität wird geprüft …
        Sep 15 11:44:53 rk-7072 sudo[2136]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send '121 package(s): 1.archlinux-keyring 2.ark 3.baloo-widgets 4.bluedevil 5.bluez 6.bluez-libs 7.bluez-utils 8.breeze 9.breeze-gtk 10.curl 11.dolphin 12.dolphin-plugins 13.ell 14.enchant 15.expac 16.ffmpegthumbnailer 17.ffmpegthumbs 18.fmt 19.fzf 20.gcc 21.gcc-libs 22.git 23.grub 24.gspell 25.gtk-layer-shell 26.gwenview 27.intel-ucode 28.iso-codes 29.iwd 30.jsoncpp 31.kaccounts-integration 32.kactivitymanagerd 33.kate 34.kcalc 35.kde-cli-tools 36.kde-gtk-config 37.kdeconnect 38.kdecoration 39.kdegraphics-mobipocket 40.kdegraphics-thumbnailers 41.kdenetwork-filesharing 42.kdeplasma-addons 43.kgamma 44.kglobalacceld 45.kinfocenter 46.kio-admin 47.kio-extras 48.kmenuedit 49.konsole 50.kpipewire 51.kscreen 52.kscreenlocker 53.ksystemstats 54.kwallet-pam 55.kwayland 56.kwayland-integration 57.kwin 58.layer-shell-qt 59.libarchive
        Sep 15 11:44:53 rk-7072 sudo[2136]:     root : (command continued) 60.libkdcraw 61.libkexiv2 62.libkscreen 63.libksysguard 64.libmanette 65.libplasma 66.libpng 67.libreoffice-fresh 68.librsvg 69.liburcu 70.linux 71.linux-headers 72.milou 73.ocean-sound-theme 74.okular 75.opencv 76.openssh 77.orc 78.pacman 79.pacman-contrib 80.pacutils 81.perl-uri 82.plasma-activities 83.plasma-activities-stats 84.plasma-browser-integration 85.plasma-desktop 86.plasma-disks 87.plasma-firewall 88.plasma-integration 89.plasma-nm 90.plasma-pa 91.plasma-systemmonitor 92.plasma-workspace 93.plasma5support 94.polkit-kde-agent 95.powerdevil 96.print-manager 97.protobuf 98.protobuf-c 99.pulseaudio-qt 100.python 101.python-pydantic 102.qqc2-breeze-style 103.qt6-webengine 104.sddm-kcm 105.signon-kwallet-extension 106.spdlog 107.spectacle 108.sudo 109.systemd 110.systemd-libs 111.systemd-resolvconf 112.systemd-sysvcompat 113.systemsettings 114.thunderbird 115.tzdata 116.vlc 117.waybar 118.wayland
        Sep 15 11:44:53 rk-7072 sudo[2136]:     root : (command continued) 119.xdg-desktop-portal-kde 120.yad 121.yay' 'Save open documents!\\nRun # pacman -Syu on terminal!\\nAfter upgrading:\\nNew linux version will run after your next system boot.\\n' -t 0 -u normal
        Sep 15 11:44:53 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
        Sep 15 11:44:53 rk-7072 systemd[1]: ureminder.service: Consumed 12.227s CPU time, 890.3M memory peak.

        Nach einen weiteren reboot war immer noch der alte Kernel aktiv, bisher wurde keine initramfs geschrieben.
        Nun der Aufruf in der Konsole dann erst war das Update komplett.

        sudo pacman -Syu 
        .
        :: Vollständige Systemaktualisierung wird gestartet …
        :: mlocate durch extra/plocate ersetzen? [J/n] j
        .
        :: Post-transaction-Hooks werden gestartet …
        ( 1/22) Creating system user accounts...
        Creating group 'alpm' with GID 960.
        Creating user 'alpm' (Arch Linux Package Management) with UID 960 and GID 960.
        .
        (12/22) Updating initramfs...
        :: Building initramfs for linux (6.10.10-arch1-1)
        dracut[I]: Executing: /usr/bin/dracut --force --hostonly --no-hostonly-cmdline /boot/initramfs-linux.img 6.10.10-arch1-1
        • tuxnix hat auf diesen Beitrag geantwortet.

          md_39118 Nach einem reboot war immer noch der alte Kernel aktiv, bisher wurde keine initramfs geschrieben.

          Danke für den Hinweis!
          Es kann sein, dass Endevous die Post-transaction-Hooks anders als Arch gesetzt hat.
          Ändere bitte die Zeile -
          pacman -Su --noconfirm || Error="# pacman -Su"
          im Skript in -
          pacman -Syu --noconfirm || Error="# pacman -Syu"
          dann ist das behoben.
          Ich ändere das auch in der nächsten Version.

          • md_39118 hat auf diesen Beitrag geantwortet.
            9 Tage später

            tuxnix
            Hallo
            Nach der Änderung läuft es gut, die Meldungen kommen in dieser Reihenfolge, die initramfs werden geschrieben.

            Sep 29 10:22:03 rk-7072 sudo[2583]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Upgrade starts in 1 minute:' 'Save open documents!\\n' -t 0 -u normal -p
            
            Sep 29 10:23:03 rk-7072 sudo[2602]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send Upgrading: 'Keep system running!' -t 0 -u critical -r 1 -p
            
            Sep 29 10:25:36 rk-7072 sudo[11662]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Upgrade successfull:' 'Restart applikations you\'re working with!\\n' -t 0 -u normal -r 1

            Welche Script Version ist den im Moment aktuell?

            Vielen Dank für deine Rückmeldung!

            Die nächste Version wird 0.8 sein. 😉
            (Die kommt wenn ich wieder Zeit habe. Meine Augen geht's inzwischen wieder gut, aber ich hab gerade jede Menge anderen Kram zu tun.
            Die übernächste Version 0.9 hat dann auch die Abfrage der Arch-News mit drin.
            (Eigentlich ist diese Funktion auch schon fertig und funktioniert. Allerdings darf ich das nicht einfach so integrieren, weil das Skript mit Root-Rechten laufen muss. Deshalb muss ich jetzt docker lernen, damit die Abfrage der Arch-News in einem Container und vom übrigen System getrennt abläuft. Wenn ich das nicht mache, würde die Arch-News-Seite zum Angriffsziel für sportliche Hacker werden um darüber Code einzuschleusen, der anschließend dann mit Root-Rechten auf meinem und deinem Computer alles ausführen kann was dem Hacker so einfällt).

            Hier ist das Skript für die Abfrage der letzten Arch-Linux-News.
            Mit userrechten ausgeführt ist es völlig gefahrlos:

            #!/bin/bash
            
            
            PAGE=$(curl -s $URL https://archlinux.org/news/)
            DATE=$(echo "$PAGE" | awk '/<td>/ {print $0}' | head -1 | sed -e 's/<td>//' -e 's/<\/td>//'| xargs)
            HREF=$(echo "$PAGE" | awk '/<td class="wrap">/ {print $0}' | head -1 | sed -e 's/<a href=//' -e 's/<td class="wrap">//' | xargs)
            TITLE=$(echo "$PAGE" | awk '/title="View:/ {print $0}'| head -1  | sed -e 's/<\/td>//' -e 's/title="View:.*">//' | xargs)
            
            
            TUSER=$(who -T | awk '/+/{print $1}' | head -1)
            sudo -u $TUSER DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $TUSER)/bus notify-send " " "$DATE: <a href='$HREF'>$TITLE" -t 0 -u normal

            P.S.: Wenn jemand etwas gescheiteres wie docker einfällt, dann bitte gerne. Ich mach das zum ersten mal.


            • md_39118 hat auf diesen Beitrag geantwortet.

              tuxnix
              Hallo
              Eine gute Idee die Abfrage der Arch-News vor dem Update, schade das es mit der Deutschen Startseite nicht geht.

              • tuxnix und Dirk haben auf diesen Beitrag geantwortet.

                md_39118 schade das es mit der Deutschen Startseite nicht geht

                Die Arch-News sind für Anfänger erst einmal nicht so interessant weil die installierten Anwendungen die ein Arch-Newbe auf dem Rechner nutzt, meist völlig unproblematisch sind und erfahrungsgemäß keine manuellen Eingriffe benötigen. Die fortgeschrittenen User für die die News eine ganz andere Relevanz haben, bevorzugen hingegen eher englisch- sprachiges "Computer-Latein". Deshalb habe ich die englische Seite gewählt.
                Das Wichtige an dieser Funktion ist aber ohnehin lediglich anzuzeigen , dass keine neue Nachricht vorliegt und ein Link anzugeben falls dann doch mal etwas getan werden muss.

                Der erfahrene User will sein upgrade ohnehin lieber manuell tätigen.
                Ureminder kann dann aber trotzdem nützlich sein um automatisch die zu erneuerten Pakete anzuzeigen und nebenbei auch zu sehen ob es bei Arch-Linux Änderungen gibt.
                @GerBra z.B. wählt (s. oben) den Zeitpunkt wann er ein pacman -Syu tätigt sehr bewusst, je nach dem welche Pakete gerade erneuert werden um dann auch die nötige Zeit zu haben bei Änderungen reagieren zu können.
                Wenn z.B. wie bei der letzten News ssh neu gestartet werden muss, dann hat man die nötige Informationen alle auf einen Blick.



                2 Monate später

                Hallo
                Eine Frage wird am Script noch gearbeitet oder wurde das Projekt eingestellt ?

                • tuxnix hat auf diesen Beitrag geantwortet.

                  md_39118 Eine gute Idee die Abfrage der Arch-News vor dem Update, schade das es mit der Deutschen Startseite nicht geht.

                  Der richtige/bessere Weg wäre, den entsprechenden RSS-Feed zu parsen, anstatt manuell dreckig durch das gerenderte HTML zu laufen 🙂

                  https://www.archlinux.de/news/feed

                    md_39118 Hallo
                    Eine Frage wird am Script noch gearbeitet oder wurde das Projekt eingestellt ?

                    Momentan hab ich leider keine Zeit daran weiter zu arbeiten. Aber wenn ich die Zeit finde wird sofort daran weiter gearbeitet. Sorry.

                    Dirk Der richtige/bessere Weg wäre, den entsprechenden RSS-Feed zu parsen

                    Danke für den Tipp, schau ich mir dann an.

                    P.S.: Oder kannst du mir kurz zeigen wie das geht?

                    ein Monat später
                    • Bearbeitet

                    md_39118 Hallo
                    Eine Frage wird am Script noch gearbeitet oder wurde das Projekt eingestellt ?

                    Es geht jetzt endlich weiter:
                    Unter Anderem habe ich die Anzeige für das nächste auto-update gefixt.

                    Und das aller Beste ist, dass es jetzt ein AUR-Paket gibt, mit dem man alles in einem Rutsch einschließlich der deutschen Sprachdatei installiert bekommt.
                    Die Funktion für die Desktop-Anzeige der Arch-News folgt in einer der nächsten Versionen.

                    Die Installation funktioniert mit dem klassischen 3-Satz:
                    git clone https://aur.archlinux.org/ureminder.git && cd ureminder && makepkg -fi

                    Oder mit dem AUR-Hiflsprogramm der Wahl:
                    <AUR-Helper> -S ureminder

                    Die Datei /usr/local/bin/ureminder kann danach gelöscht werden.

                    Hallo
                    Auf meinen Endeavour Pc wird das getestet, als Helper werde ich trizen benutzen.
                    Eine Frage
                    Wenn ein "pacman -Syu" Update in der Konsole erfolgt gibt es zb. solche Meldungen, eine gute Info wenn die neue Abhängigkeit gebraucht wird.

                    Neue optionale Abhängigkeiten für cups-filters
                    ghostscript: for non-PDF printers (preferred) [Installiert]
                    mupdf-tools: for non-PDF printers
                    poppler: for non-PDF printers [Installiert]

                    Beim "ureminder" Update sind diese Meldungen auch mit laufenden journalctl -f nicht zu sehen.
                    Auch in der /var/log/pacman.log bzw. beim Durchsuchen des Journals fehlen die Infos.
                    journalctl --since="2025-01-10 09:58:00" --until="2025-01-12 10:02:00" -g "Neue"
                    Gibt es eine weitere Möglichkeit um die Infos noch zu sehen?

                    • Bearbeitet

                    Hallo
                    Schön wenn du das auf Endeavour testest.
                    Das changelog und die Beschreibung gibt es auf Codeberg zu lesen. Da findet dann auch die weitere Entwicklung statt.

                    Außer dem reflector sind das alles Pakete die auch schon von anderen Paketen als Abhängigkeit installiert worden sind. Und den reflektor hast du wahrscheinlich letztes Jahr explizit installiert. Die Suche nach "Neue" dürfte aber auch bei dem gewählten Zeitraum ins Leere laufen. Eintrizen -Qi ureminder zeigt dir die bestehenden Abhängigkeiten von ureminder an.

                    //Edit

                    Hallo
                    Meine Frage zielt eigentlich darauf, warum diese in der Konsole zu sehende Meldung(Neue optionale Abhängigkeiten für cups-filters)
                    sonst nirgends wieder zu finden ist, weder in der /var/log/pacman.log noch im Journal.
                    Das Update das diese Info Meldungen erzeugt wurde am 12.1.2025 um 9:58 in der Konsole gestartet.

                    journalctl --since="2025-01-12 09:58:00" --until="2025-01-12 10:02:00" -g "frank"
                    Jan 12 09:58:50 linux-pc6 sudo[1638]: frank : TTY=pts/0 ; PWD=/home/frank ; USER=root ; COMMAND=/usr/bin/pacman -Syu

                    Ein Auszug aus der /var/log/pacman.log
                    [2025-01-12T09:58:50+0100] [PACMAN] Running 'pacman -Syu'
                    [2025-01-12T10:01:21+0100] [ALPM] upgraded cups-filters (2.0.1-1 -> 2.0.1-2)
                    [2025-01-12T10:01:50+0100] [ALPM-SCRIPTLET] ==> Initcpio image generation successful

                    • tuxnix hat auf diesen Beitrag geantwortet.
                      • Bearbeitet

                      md_39118
                      Ich bin jetzt nicht so ins Detail gegangen.
                      Falls es sich dabei aber nur um optionale Abhängigkeiten handelt verhält es sich damit ganz einfach.
                      Pacman informiert dich, welche Optionen es noch gäbe, die jeweilige Anwendung, die gerade ein Upgrade erfährt, mit zusätzlichen Fähigkeiten auszustatten. Das Jounale notiert aber nur die Pakete die du dann auch tatsächlich installierst.
                      Und nachlesen welche Anwendung noch optional Möglichkeiten bietet, kann man auch sehr schön mit pacman -Si oder -Qi <paket>.