• Café
  • Automatisiertes Paketupgrade

Mach einfach mal ein sudo pacman -Syu ich hab momentan wenig Zeit. ich schau da in ein paar Tagen nochmal genauer rein, wenn die neue Version steht. 😉

Das upgrade wird zwar auch vom Timer ausgelößt, richtet sich aber nach dem Zeitpunt wann das letzten Paketupgrade vorgenommen wurde.
awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1
Bei Days=4 exakt 3 Tage und 23 Stunden später bis die Automatik bei dir zuschlagen kann.

Dein Timer löst auf jeden Fall schon mal aus. Das ist o.K. Allerdings zweimal hintereinander ich nehme an, beim Rechnerstart, wenn er länger als 4 Stunden aus war. In dem Fall ist dann 10m nach systemd start und persistend doppelt gemoppelt. 😉

  • md_39118 hat auf diesen Beitrag geantwortet.

    tuxnix
    Der Pc wird morgen wieder gestartet dann sollte die Zeitspanne ja passen.

    Hallo
    Das Update ist am Freitag korrekt durchgelaufen.
    Im ureminder.timer ist der Eintrag OnUnitActiveSec=daily nicht OK, ob (days, day, d) muß ich noch Testen.

    journalctl -b | grep ureminder
    Aug 16 17:05:24 rk-7072 systemd[1]: /usr/lib/systemd/system/ureminder.timer:8: Failed to parse timer value, ignoring: daily
    Aug 16 17:05:30 rk-7072 systemd[1]: Started ureminder.timer.
    • tuxnix hat auf diesen Beitrag geantwortet.

      md_39118
      Sorry, habe in der Eile nicht richtig hingeguckt.
      Es muss selbstvertändlich OnCalendar=daily lauten
      Aber warte besser bis morgen damit, dann kommt alles neu und besser.

      Hier die aktuelle Version:

      Das ureminder Skript

      • Den skript-code markieren und mit strg+c in die Zwischenablage kopieren.

      • sudo nano /usr/local/bin/ureminder - aufrufen mit strg+v die Zwischenablage einfügen, mit Strg+o return speichern und mit strg+x schließen.

      • chmod +x /usr/local/bin/ureminder - Das script ausführbar machen.

      • pacman -Syu libnotify reflector pacman-contrib - abhängige Pakete installieren

      • sudo /usr/local/bin/ureminder - testen ob das skript läuft und kein Fehler auswirft!

        #!/bin/bash
        #file-> /usr/local/bin/ureminder
        
        TEXTDOMAIN=ureminder
        TEXTDOMAINDIR=/usr/share/locale
        version="ureminder version 8.0"
        
        # (Default) Days between auto upgrades
        days="7"
        
        # Send user a notify-send meeage from root
        send() {
        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 "$@"
        }
        
        # Display Help
        Help() {
        echo
        echo $"Reminds to upgrade and does it if user does not"
        echo
        echo $"Usage: ureminder [-s|a|t|b|h|v|u|d]"
        echo $"Options:"
        echo $"s      Display message: Save your Documents & pacman -Syu"
        echo $"a      Display message: After upgrade: Do.."
        echo $"t      Display message: Auto upgrade in x h y m (only with [u|d])"
        echo $"b      Debug mode"
        echo $"h      Print this help"
        echo $"v      Print version"
        echo $"u      Auto upgrade ON. (Or set option d)"
        echo $"d num  Days between upgrades (default: d 7)"
        echo
        echo $"Example: ureminder -tasd 14"
        echo
        }
        
        # Get options
        while getopts ":abd:hstuv" option; do
           case $option in
              a) # after Upgrade:messages
                 afterdo=1
                 echo $"Display message: After upgrade: Do.. - ON";;
              b) # debug mode
                 set -vx
                 echo $"Debug mode activated";;
              d) # Enter days
                 re='^[0-9]+$'
                 if ! [[ $OPTARG =~ $re ]]; then
                    echo $"Error: $OPTARG is not a number!" >&2; exit 1
                 elif [ $OPTARG -lt 1 ]; then
                    echo $"d needs a positiv number as argument!"; exit 1
                 else
                    days=$OPTARG
                    upgrade=1
                    echo $"Auto upgrade - days=$days - ON"
                 fi;;
              h) # Display Help
                 Help
                 exit 0;;
              s) # save documents and pacman -Syu messages
                 savesyu=1
                 echo $"Display message: Save your Documents & pacman -Syu - ON";;
              t) # Message till auto upgrade
                 time=1
                 echo $"Display message: Next upgrade in x hours - ON";;
              u) # Auto Upgrade
                 upgrade=1
                 echo $"Auto upgrade - days=$days - ON";;
              v) # Display Version
                 echo $version
                 exit 0;;
              ?) # Invalid option
                 echo $"Usage: ureminder [-s|a|t|b|h|v|u|d argument]"
                 echo $"Display help: ureminder -h"
                 exit 1;;
           esac
        done
        
        # error db.lck
        if [ -f /var/lib/pacman/db.lck ] && [ ! $(pgrep pacman) ]; then
            send $"Error: Pacman database locked" "<a href='https://wiki.archlinux.org/title/Pacman#%22Failed_to_init_transaction_(unable_to_lock_database)%22_error'>How to solve the problem</a>" -t 0 -u critical
            exit 1
        fi
        
        # update mirrors
        reflector --age 1 --delay 0.25 --protocol https --latest 5 --save /etc/pacman.d/mirrorlist || Error="reflector --age 1 --delay 0.25 --protocol https --latest 5"
        
        # del PKGS from cache which are not installed anymore
        paccache -ruk0 || Error="paccache -ruk0"
        
        # keep current package and last for downgrade purpose
        paccache -rk2 || Error="paccache -rk2"
        
        # list all installed packages
        pacman -Qqe > /var/pkg.lst || Error="pacman -Qqe"
        
        # download new packages
        pacman -Syuw --noconfirm || Error="# pacman -Syuw"
        
        # check for PKGS upgrades available
        PKGS=($(pacman -Qu | awk '{print $1}')) || Error="pacman -Qu"
        
        Nr=0
        for PKG in ${PKGS[@]}; do
          Nr=$(($Nr+1))
          PK+=("$Nr.$PKG")
        done
        
        # KERNEL upgrade
        KERNEL=$(cat /proc/version | awk '{ print $4}'| sed -e 's/(//' -e 's/@.*//')
        for i in ${PKGS[*]}; do
          if [[ $KERNEL == $i ]]; then
            RKERNEL=$i
          fi
        done
        
        # GUI upgrade
        GUIs=('awesome' 'budgie-session' 'cinnamon-desktop' 'deepin-daemon' 'gnome-shell' 'i3' 'lxsession' 'lxqt-session' 'mate-desktop' 'plasma-desktop' 'sway' 'xfce4-session')
        for j in ${GUIs[@]}; do
          if [ $(pgrep -fc $j) -gt "0" ]; then
            for l in ${PKGS[@]}; do
              if [[ $l == $j ]]; then
                GUI=$j
              fi
            done
          fi
        done
        
        # wich of these often used applications is runnig now
        APPS=('firefox' 'librewolf' 'chromium' 'dolphin' 'nautilus' 'kmail' 'kontact' 'kate' 'vim' 'libreoffice' 'gimp' 'inkscape' 'kdenlive')
        for k in ${APPS[@]}; do
          if [ $(pgrep -fc $k) -eq "0" ]; then
            APPS=("${APPS[@]/$k}")
          fi
        done
        
        # Exchange app-name with pkg-name
        if [[ "${APPS[@]/libreoffice/}" != "${APPS[@]}" ]]; then
            APPS=("${APPS[@]/libreoffice}")
            APPS+=("libreoffice-fresh")
            APPS+=("libreoffice-still")
        fi
        
        # wich of these runnig applicatins get's upgrades
        for m in ${PKGS[*]}; do
          for n in ${APPS[*]};do
            if [[ "$m" == "$n" ]]; then
              UAPPS+=($n)
            fi
          done
        done
        
        # Exchange pkg-name with app-name
        if [[ "${UAPPS[@]/libreoffice-still/}" != "${UAPPS[@]}" ]]; then
            UAPPS=("${UAPPS[@]/libreoffice-still}")
            UAPPS+=("libreoffice")
        elif [[ "${UAPPS[@]/libreoffice-fresh/}" != "${UAPPS[@]}" ]]; then
            UAPPS=("${UAPPS[@]/libreoffice-fresh}")
            UAPPS+=("libreoffice")
        fi
        
        #messages
        SAVE=$"Save open documents!\n"
        SYU=$"Run # pacman -Syu on terminal!\n"
        AFTER=$"After upgrading:\n"
        UPGRADE=$"Auto upgrade in $HOURS h $MINUTES m\n"
        PKMESS=$"${#PKGS[*]} package(s): ${PK[*]}"
        if [[ $GUI != "" ]] && [[ "$RKERNEL" != "" ]]; then
            MESS=$"GUI and kernel upgrade:"
            DO=$"Reboot your system!"
        elif [[ $GUI != "" ]]; then
            MESS=$"$GUI upgrade:"
            DO=$"Restart your usersesson!\n"
        elif [[ $RKERNEL != "" ]] && [ ${#UAPPS[*]} -gt "0" ]; then
            MESS=$"Application and kernel upgrade:"
            DO=$"Restart ${UAPPS[*]} and other applikations you are working with! New $RKERNEL version will run after your next system boot.\n"
        elif [[ $RKERNEL != "" ]]; then
            MESS=$"Kernel upgrade:"
            DO=$"New $RKERNEL version will run after your next system boot.\n"
        elif [ ${#UAPPS[*]} -gt "0" ]; then
            MESS=$"Application upgrade:"
            DO=$"Restart${UAPPS[*]} and other applikations!\n"
        else
            MESS=$"Upgrade successfull:"
            DO=$"Restart applikations in use!\n"
        fi
        
        # time till auto upgrade (Unix seconds)
        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 ureminder.timer | awk 'NR>1 && NR<3{print $2,$3}' | sed -e 's/ /T/') +%s)
        LTIMER=$(date -d $(systemctl list-timers ureminder.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))
        #if [[ "$LTIMER x" == " x" ]]; then HOURS=$((NEXT/3600)); MINUTES=30; fi
        echo $"Next upgrade in $HOURS h $MINUTES m"
        
        # Abitity to auto upgrade all 86400sec-600sec=85600sec=23 hous and 50 minutes
        if [ "$(((NOW-UPAC)/days))" -ge "85600" ] && [ "${#PKGS[*]}" -gt "0" ] && [ $upgrade ]; then
          NID=$(send  $"Upgrade starts in 1 minute:" $"$SAVE" -t 0 -u normal -p)
          sleep 60
          NID=$(send $"Upgrading:" $"Keep system running!" -t 0  -u critical -r $NID -p)
          pacman -Su --noconfirm || Error="# pacman -Su"
          send "$MESS" "$DO" -t 0 -u normal -r $NID
        
        elif [ "${#PKGS[*]}" -gt "0" ]; then
          if [ $savesyu ] && [ $afterdo ] && [ $time ] && [ $upgrade ]
            then  send "$PKMESS" "$SAVE$SYU$AFTER$DO$UPGRADE" -t 0 -u normal
          elif [ $savesyu ] && [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$SAVE$SYU$UPGRADE" -t 0 -u normal
          elif [ $afterdo ] && [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$AFTER$DO$UPGRADE" -t 0 -u normal
          elif [ $savesyu ] && [ $afterdo ]; then  send "$PKMESS" "$SAVE$SYU$AFTER$DO" -t 0 -u normal
          elif [ $savesyu ] && [ $afterdo ]; then  send "$PKMESS" "$SAVE$SYU$AFTER$DO" -t 0 -u normal
        
          elif [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$UPGRADE" -t 0 -u normal
          elif [ $savesyu ];then send "$PKMESS" "$SAVE$SYU" -t 0 -u normal
          elif [ $afterdo ]; then  send "$PKMESS" "$AFTER$DO" -t 0 -u normal
          else  send "$PKMESS" -t 0 -u normal
          fi
        fi
        
        # error message
        if  [ "$Error" != "" ]; then
          send $"Error: $Error" $"To analyse run this command on terminal!" -t 0 -u critical
        fi
        
        # TODO:
        # GUI- und APP-Messiges noch um weite Pakete ergänzen und weiter testen.
        # Für APP - Messige Ablauf umdrehen. Zuerst pkgs upgrades testen spart eine Namenswandlung für libreoffice ein.
        # Arch Linux News anzeigen.
        # In Plasma und GNOME die Notiz Meldung größer darstellen lassen damit eine lange Paket-Upgrade-Liste komplett angezeigt wird.
        
        #Know issues:
        # 'pacman -Qu' does not list new added dependencies of package upgrades. This is not very importent for ureminder script - Fix would need a feature request to pacman devs.

      Der ureminder.service

      • Den code markieren und mit strg+c in die Zwischenablage kopieren.
      • sudo nano /usr/lib/systemd/system/ureminder.service - aufrufen mit strg+v die Zwischenablage einfügen, mit Strg+o return speichern und mit strg+x schließen.
      
      #file->/usr/lib/systemd/system/ureminder.service
      
      [Unit]
      Description=ureminder.service
      After=network-online.target
      Wants=network-online.target
      
      [Service]
      ExecStart=/usr/local/bin/ureminder -astu
      
      [Install]
      WantedBy=basic.target

      Der ureminder.timer

      • Code markieren und mit strg+c in die Zwischenablage kopieren
      • sudo nano /usr/lib/systemd/system/ureminder.timermit strg+v einfügen strg+o return speichern, strg+x schließen
      • sudo systemctl enable --now ureminder.timer - anschließend den timer aktivieren
      #file->/usr/lib/systemd/system/ureminder.timer
      
      [Unit]
      Description=ureminder.timer
      
      [Timer]
      OnCalendar=daily
      Persistent=true
      
      [Install]
      WantedBy=basic.target

      7.8.2024 changelog:

      • Erkennt den jeweils laufenden kernel und die laufende GUI und gibt nach einem upgrade vom kernel bzw. der GUI entsprechende Mitteilungen aus.

      18.8.2024 changelog:

      • Erkennt wenn eine laufende Anwendung ein upgrade erfahren hat und fordert auf sie neu zu starten. (Nur für sehr häufig genutzte Anwendungen)
      • Option --days --verboste --help eingeführt (DAYS=7 default)
      • Den Timer auf täglich eingestellt.
      • Konsolenmeldung ab wann ein autoupgrade möglich ist.
      • reflector auf internationalen Gebrauch eingestellt
      • Funktion send überarbeitet
      • Nummerrierung der verfügbaren upgrades damit eine eventuell abgeschnittene Meldung keine Vollständigkeit vortäucht. (Plasma zeigte bisher nur ca. 60 Pkgs namentlich an, obwohl das eine mal 82 upgrades anstanden.)

      22.8.2024 changelog:

      • Zeile 127 PRAPPS+=('$n')->PRAPPS+=($n)
      • Zeile 138: $PRAPPS->${PRAPPS[*]}
      • Skript für Übersetzungen eingerichtet und eine deutsche ureminder.mo erstellt.

      27.8.2024 changelog:

      • Skript-Code an meheren Stellen geändert und Rihenfolge umgestellt.
      • Gibt schon bei der Upgade-Aufforderung Hinweise was danach zu tun ist.

      29.8.2024 changelog:

      • Bezieht die Timer Einstellung mit ein und zeigt jetzt präzise den Zeitpunkt des Auto-Upgrade an.
      • Optionen neu gestaltet. Die verschiedenen Mitteilungen und das Autoupdate müssen jetzt explizit ausgewählt werden.

      @md_39118 Viel Spaß damit. 😉

      @GerBra
      Das Autoupgrade lässt sich jetzt bequem per Option z.B. von
      ureminder --days 30 für fast NIE bis --days 30000 NIEmals einstellen. 😉
      Das käme wohl auch deiner Arbeitsweise entgegen, denn die fälligen Pkgs upgrades werden dir dann automatisch angezeigt.
      Zusätzlich wäre es möglich Vorwarnungen einzubauen wenn upgrades anstehen, die bei dir sensibel sind.
      Vielen Dank für das ausführliche Brainstorming, deine Argumente waren mir sehr hilfreich.

        tuxnix
        Hallo
        Der erste Test bringt einen Fehler. Der Timer ist noch inaktiv
        Kann der service und timer auch unter /etc/systemd/system/ liegen ?
        Wird im Wiki als Ort für eigene Dateien angegeben.

        sudo ureminder
        ==> no candidate packages found for pruning
        ==> no candidate packages found for pruning
        :: Paketdatenbanken werden synchronisiert …
         endeavouros ist aktuell
         core ist aktuell
         extra ist aktuell
         multilib ist aktuell
        :: Vollständige Systemaktualisierung wird gestartet …
        Abhängigkeiten werden aufgelöst …
        
        Paket (11)                   Alte Version      Neue Version      Netto-Veränderung
        
        core/btrfs-progs             6.10-1            6.10.1-1                  -0,05 MiB
        core/fakeroot                1.35.1-1          1.36-1                     0,00 MiB
        extra/gtk-update-icon-cache  1:4.14.4-2        1:4.14.5-1                 0,00 MiB
        extra/gtk4                   1:4.14.4-2        1:4.14.5-1                 0,21 MiB
        extra/librsvg                2:2.58.2-1        2:2.58.3-1                -0,06 MiB
        extra/libssh                 0.11.0-1          0.11.0-2                   0,00 MiB
        extra/luajit                 2.1.1720049189-1  2.1.1723675123-1           0,01 MiB
        core/systemd                 256.4-1           256.5-1                    0,01 MiB
        core/systemd-libs            256.4-1           256.5-1                    0,00 MiB
        core/systemd-resolvconf      256.4-1           256.5-1                    0,00 MiB
        core/systemd-sysvcompat      256.4-1           256.5-1                    0,00 MiB
        
        Gesamtgröße des Downloads:  0,00 MiB
        
        :: Download fortsetzen? [J/n]
        (11/11) Schlüssel im Schlüsselbund werden geprüft                                                                                             [---------------------------------------------------------------------------------------] 100%
        (11/11) Paket-Integrität wird überprüft                                                                                                       [---------------------------------------------------------------------------------------] 100%
        With Days=7. Next automated packgage upgrade when runnig uriminder in 113 hour(s)
        Verbindung ist gescheitert: Datei oder Verzeichnis nicht gefunden
        • tuxnix hat auf diesen Beitrag geantwortet.

          md_39118
          Man kann den timer und den service alternativ auch unter /etc/systemd/system/ abspeichern. Das macht funktionell keinen Unterschied. Für den Paketbau wird allerdings /usr/lib/systemd/system/ als Speicherort dafür vorgeschrieben. ureminder wird, falls es sich bewähren sollte als AUR Paket angeboten werden.
          Ohnehin löst der timer, wenn du alles so wie ich es vorgegeben habe gemacht hast , zum aller ersten mal um 00:00:00 aus und holt das, falls der Rechner zu dem Zeitpunkt ausgeschaltet ist beim nächsten Start nach (persistend=true) .
          Gutes Nächtle

          md_39118

          Der Fehler war im Skript bei der Funktion 'send' ich hab es oben korrigiert.

          • md_39118 hat auf diesen Beitrag geantwortet.

            tuxnix
            Hallo
            Mit der Änderung sieht es gut aus.
            In der "ureminder-fg" habe ich die Meldungen auf DE eingetragen und die Rechte geändert.

            sudo chmod go-x /usr/local/bin/ureminder-fg
            ls -la /usr/local/bin/
            -rwxr--r--  1 root root 7757 19. Aug 15:42 ureminder-fg
            
            journalctl -b | grep ureminder-fg
            Aug 19 15:39:15 rk-7072 dolphin[1188]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/version-3/ureminder-fg") to QUrl("file:///home/ralf/version-3/ureminder-fg") mode= 420
            Aug 19 15:41:10 rk-7072 sudo[1328]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/bin/nano /usr/local/bin/ureminder-fg
            Aug 19 15:44:52 rk-7072 sudo[1402]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/bin/chmod go-x /usr/local/bin/ureminder-fg
            Aug 19 15:48:36 rk-7072 sudo[1449]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/local/bin/ureminder-fg -h
            Aug 19 15:49:38 rk-7072 sudo[1462]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/local/bin/ureminder-fg
            Aug 19 15:55:14 rk-7072 ureminder-fg[1838]: ==> no candidate packages found for pruning
            Aug 19 15:55:15 rk-7072 ureminder-fg[1847]: ==> finished: 1 packages removed (disk space saved: 81.2 KiB)
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Paketdatenbanken werden synchronisiert …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  endeavouros wird heruntergeladen …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  core wird heruntergeladen …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  extra wird heruntergeladen …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  multilib wird heruntergeladen …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Vollständige Systemaktualisierung wird gestartet …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Abhängigkeiten werden aufgelöst …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Paket (13)                   Alte Version      Neue Version      Netto-Veränderung
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/btrfs-progs             6.10-1            6.10.1-1                  -0,05 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/fakeroot                1.35.1-1          1.36-1                     0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/gtk-update-icon-cache  1:4.14.4-2        1:4.14.5-1                 0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/gtk4                   1:4.14.4-2        1:4.14.5-1                 0,21 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/libinput               1.26.1-1          1.26.2-1                   0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/librsvg                2:2.58.2-1        2:2.58.3-1                -0,06 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/libssh                 0.11.0-1          0.11.0-2                   0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/luajit                 2.1.1720049189-1  2.1.1723675123-1           0,01 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/pv                     1.8.12-1          1.8.13-1                   0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd                 256.4-1           256.5-1                    0,01 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-libs            256.4-1           256.5-1                    0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-resolvconf      256.4-1           256.5-1                    0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-sysvcompat      256.4-1           256.5-1                    0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Gesamtgröße des Downloads:  0,00 MiB
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Download fortsetzen? [J/n]
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Schlüsselbund wird geprüft …
            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Paketintegrität wird geprüft …
            Aug 19 15:55:16 rk-7072 ureminder-fg[1830]: With Days=7. Nächstes automatisches Package-Upgrade bei der Ausführung von ureminder in 95 hour(s)

            Ist das schon der erste fork?
            Schön wenn du damit kreativ umgehst, das Skript an deine Bedürfnisse anpasst und ausprobierst. Genau deshalb sind Skripte ja auch so wertvoll. 😉

            Bei den Änderung der Rechte hätte ich es an deiner Stelle bevorzugt, die Datei der Gruppe users mit Schreibrechten zuzuordnen. Der Besitzer root muss weiterhin ausführen können, aber wenn ralf Mitglied in der Gruppe users ist, dann kann er danach das Skript bearbeiten ohne sudo und dann kann er auch einen editor wie z.B. kate viel einfacher benutzen.
            Ungefähr so:

            id ralf
            chown root:users ureminder-fg
            chmod g+w ureminder-fg

            • md_39118 hat auf diesen Beitrag geantwortet.

              tuxnix
              Hallo
              Der Pc soll bei zwei Freunden als Linux Test und Spielwiese neben Ihren Window Pc stehen.
              Mit den original Meldungen würde ich beiden(Ü70) keine Freude machen, deshalb eher eine Notwendigkeit als ein fork.
              Die Änderung an den Rechten gefällt mir auch gut, das werden ich noch ändern.
              Für den Einsatz bei den Freunden kommt mir das AutoUpdate Script sehr gelegen.
              Danke für Deine Arbeit.

              • tuxnix hat auf diesen Beitrag geantwortet.

                md_39118
                Das ist genau das angedachte Einsatzszenario für das Skript.
                Es führt dazu hin was man tun soll und teilt mit was passiert.
                Nimm doch mal das Original Arch Linux dafür. 😉
                Mit den Spickern ist das schneller per konsole installiert als der Calamares Installer von Endeverous durchgeklickt ist.
                O.k. erst beim zweiten mal 😉

                Als GUi würde ich dir sway vorschlagen. Ich habe da was altengerechtes, sehr einfach und intuitiv zu bedienendes konfiguriert, mit dem auch mein 80 jähriger Onkel auf Anhieb zurechtkommt. Plasma hat so viele Knöpfe die am Anfang irritieren können. Aber vor allem schnurrt selbst ein schwacher Rechner wieder wie am ersten Tag damit.
                Sag Bescheid wenn du soweit bist.


                md_39118
                P.S.: Deine Übersetzungen ins Deutsche könnte auch für mich und weitere user nützlich sein. Lese dich doch mal hier und hier ein und schaue wie weit du damit kommst. Ansonsten schau ich dann in ein paar Tagen mal danach. Eilt ja nicht.

                • md_39118 hat auf diesen Beitrag geantwortet.

                  tuxnix
                  Hallo

                  1. Rechte ändern. In Endeavour sieht es so aus.
                    Nach dem ändern kann man mit kate das Script öffnen, ändern, speichern alles OK.
                    Aber im Journal ist nicht mehr viel zu sehen, deshalb noch die Gruppe "log" bringt aber auch nichts.
                  id ralf
                    uid=1000(ralf) gid=1000(ralf) Gruppen=1000(ralf),3(sys),998(wheel),981(rfkill)
                  sudo chown root:ralf ureminder-fg
                  sudo chmod g+w ureminder-fg
                  sudo usermod -aG log ralf
                  id
                    uid=1000(ralf) gid=1000(ralf) Gruppen=1000(ralf),3(sys),19(log),981(rfkill),998(wheel)
                    
                  journalctl -b | grep ureminder-fg
                  Aug 20 17:18:06 rk-7072 sudo[1205]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/local/bin/ureminder-fg
                  1. Die Übersetzungen habe ich mit deepl gemacht und dann in das Script eingetragen. Das Script lege ich an das Ende.
                    Die beiden Links kannte ich nicht, um mich da einzulesen dauert es etwas.

                  2. Die Spickzettel werden von mir auch benutzt.
                    Bei 1.Vorbereitung steht "lynx wiki.archlinux.de/title/spicker" das ist an der Stelle aber nicht möglich.
                    Bei 2.
                    Installation_des_Grundsystems benutze ich - d) EFI, crypted-LVM
                    Bei 4._Bootloader dann - b) EFI, crypted-LVM - hier soll mit nano /boot/loader/loader.conf - default arch-uefi.conf eingetragen werden, die Datei gibt es nicht.

                  3. Zu sway kann nach der Installation ein User weiter Plasma und der andere User dann sway benutzen.

                  4. Das Script

                    #!/bin/bash
                    #file-> /usr/local/bin/ureminder
                    
                    # Days from last packgag upgrade to autoupgrade (default)
                    # Tage vom letzten Packgag-Upgrade bis zum Autoupgrade (Standard)
                    DAYS="7"
                    
                    #options
                    while [[ $# -gt 0 ]]; do
                    case "$1" in
                    
                    --help|-h)
                    # echo "Reminds package upgrades and will autoupgrade if user does'nt do it"
                    echo "Erinnert an Paket-Upgrades und führt automatisch ein Upgrade durch, wenn der Benutzer dies nicht tut"
                    echo "Aufruf: ureminder [OPTION]... [Value]..."
                    echo "Options:"
                    # echo "-d [n] --days [n]  Autoupgrade in n days from the last pkg upgrade done - (default 7)"
                    echo "-d [n] --days [n]  Autoupgrade in n Tagen ab dem letzten durchgeführten pkg-Upgrade - (default 7)"
                    echo "-h --help          Print this help"
                    echo "-v --verbose       Verbose mode"
                    exit
                    ;;
                    
                    --days| -d)
                    if [ $2 ] && [ $2 -gt 0 ]; then
                      DAYS=$2
                      shift 1
                      break
                    
                    else
                    # echo "-d --days needs a positiv number as argument"
                      echo "-d --days benötigt eine positive Zahl als Argument"
                    fi
                    exit
                    ;;
                    
                    --verbose|-v)
                    # echo "Verbose Mode Activated"
                    echo "Ausführlicher Modus Aktiviert"
                    set -vx
                    shift 1
                    break
                    ;;
                    
                    -dv| -vd)
                    set -vx
                    if [ $2 ] && [ $2 -gt 0 ]; then
                      DAYS=$2
                      shift 1
                      break
                    
                    else
                    # echo "-d --days needs a positiv number as argument"
                      echo "-d --days benötigt eine positive Zahl als Argument"
                    fi
                    exit
                    ;;
                    
                    *) # Invalid option
                    #\?) # Invalid option
                    echo "Unknown option: $1"
                    echo "Run -h or --help for help"
                    exit
                    ;;
                    
                    esac
                    
                    done
                    
                    send() {
                    tty1user=$(who | awk '{print $1}'| tail -1)
                    sudo -u $tty1user DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $tty1user)/bus notify-send "$@"
                    }
                    
                    # time span last pkg upgrade  (Unix seconds)
                    # Zeitspanne letztes pkg-Upgrade (Unix-Sekunden)
                    NOW=$(date --date='now' +%s)
                    UPAC=$(date -d $(awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1 | sed -e 's/\[//' -e 's/\]//') +%s)
                    SECS=$((NOW-UPAC))
                    
                    
                    # error db.lck
                    if [ -f /var/lib/pacman/db.lck ] && [ ! $(pgrep pacman) ]; then
                        send "Error: Pacman database locked" "<a href='https://wiki.archlinux.org/title/Pacman#%22Failed_to_init_transaction_(unable_to_lock_database)%22_error'>How to solve the problem</a>" -t 0 -u critical
                        exit 1
                    fi
                    
                    # update mirrors
                    reflector --age 1 --delay 0.25 --protocol https --latest 5 --save /etc/pacman.d/mirrorlist || Error="reflector --age 1 --delay 0.25 --protocol https --latest 5"
                    
                    # del PKGS from cache which are not installed anymore
                    # PKGS aus dem Cache löschen, die nicht mehr installiert sind
                    paccache -ruk0 || Error="paccache -ruk0"
                    
                    # keep current package and last for downgrade purpose
                    # Beibehaltung des aktuellen Pakets und des letzten Pakets zum Zwecke des Downgrades
                    paccache -rk2 || Error="paccache -rk2"
                    
                    # list all installed packages
                    # alle installierten Pakete auflisten
                    pacman -Qqe > /var/pkg.lst || Error="pacman -Qqe"
                    
                    # preload new packages
                    # neue Pakete vorladen
                    pacman -Syuw --noconfirm || Error="# pacman -Syuw"
                    
                    # check for PKGS upgrades available
                    # Prüfung auf verfügbare PKGS-Upgrades
                    PKGS=($(pacman -Qu | awk '{print $1}')) || Error="pacman -Qu"
                    
                    # print
                    # echo "With Days=$DAYS. Next automated packgage upgrade when runnig uriminder in $(( (DAYS*86400-3600+UPAC-NOW)/3600)) hour(s)"
                    # echo "With Days=$DAYS. Nächstes automatisches Package-Upgrade bei der Ausführung von ureminder in $(( (DAYS*86400-3600+UPAC-NOW)/3600)) hour(s)"
                    echo "With Days=$DAYS. Nächstes automatisches Package-Upgrade bei der Ausführung von Script ureminder in $(( (DAYS*86400-3600+UPAC-NOW)/3600)) hour(s)"
                    
                    # auto upgrade in (86400sec-3600sec=82800sec=23h)
                    if [ "$((SECS/DAYS))" -ge "82800" ] && [ "${#PKGS[*]}" -gt "0" ]; then
                    #  NID=$(send  "Upgrade starts in 1 minute:" "Save your documents!" -t 0 -u normal -p)
                    #  NID=$(send  "Upgrade beginnt in 1 Minute:“ “Speichern Sie Ihre Dokumente!" -t 0 -u normal -p)
                      NID=$(send  "Upgrade beginnt in 1 Minute:“ “Bitte Speichern Sie Ihre Dokumente!" -t 0 -u normal -p)
                      sleep 60
                    #  NID=$(send "Upgrading:" "Keep system running!" -t 0  -u critical -r $NID -p)
                    #  NID=$(send "Upgrade:“ “System weiterlaufen lassen!" -t 0  -u critical -r $NID -p)
                      NID=$(send "Upgrade:“ “Bitte System weiterlaufen lassen!" -t 0  -u critical -r $NID -p)
                      pacman -Su --noconfirm || Error="# pacman -Su"
                    
                      # KERNEL upgrade message
                      # KERNEL-Upgrade-Meldung
                      KERNEL=$(cat /proc/version | awk '{ print $4}'| sed -e 's/(//' -e 's/@.*//')
                      for i in ${PKGS[*]}; do
                        if [ $KERNEL = $i ]; then
                          # send "Installed next $i version:" "This new kernel will run after your next system boot!" -t 0 -u normal
                          send "Installierte nächste $i-Version:“ “Dieser neue Kernel wird nach dem nächsten Systemstart laufen!" -t 0 -u normal
                        fi
                      done
                    
                      # running GUI was upgraded
                      # Die laufende GUI wurde aktualisiert
                      GUIs=('qt5' 'qt6' 'gtk4''awesome' 'budgie-session' 'cinnamon-desktop' 'deepin-daemon' 'gnome-shell' 'i3' 'lxsession' 'lxqt-session' 'mate-desktop' 'plasma-desktop' 'kwindowsystem' 'sway' 'xfce4-session')
                      for j in ${GUIs[@]}; do
                        if [[ $(pgrep -fc $j) -gt "0" ]]; then
                          for l in ${PKGS[@]}; do
                            if [ $l = $j ]; then GUI=$j; fi
                          done
                        fi
                      done
                    
                      # wich of these often used applications is runnig now
                      # Welche dieser häufig genutzten Anwendungen wird gerade ausgeführt?
                      APPS=('firefox' 'chromium' 'dolphin' 'nautilus' 'kmail' 'kontact' 'kate' 'vim' 'libreoffice' 'libreoffice-still')
                      for k in ${APPS[@]}; do
                        if [[ $(pgrep -fc $k) -ge "0" ]]; then RAPPS+=($k); fi
                      done
                    
                      # wich of these runnig applikatins were upgraded
                      # Welche dieser laufenden Anwendungen wurden aktualisiert?
                      for m in ${PKGS[*]}; do
                        for n in ${RAPPS[*]};do
                           if [ $m = $n ]; then PRAPPS+=('$n'); fi
                        done
                      done
                    
                      # GUI message - if GUI was upgraded
                      # GUI-Meldung - wenn die GUI aktualisiert wurde
                      if [ $GUI ]; then
                       # send "$GUI was upgraded:" "Please restart your usersesson!" -t 0 -u normal #-r $NID
                        send "$GUI wurde aktualisiert:“ “Bitte starten Sie Ihr Benutzersystem neu!" -t 0 -u normal #-r $NID
                    
                      # applikation message - for some usual apps +
                      # applikation message - für einige übliche apps +
                      elif [ ${#PRAPPS[*]} -gt "0" ]; then
                       # send "Upgrade successfully:" "Please restart $PRAPPS and other applications you are using now!" -t 0 -u normal #-r $NID
                        send "Upgrade erfolgreich:" "Bitte neu starten $PRAPPS und andere Anwendungen, die Sie gerade benutzen!" -t 0 -u normal #-r $NID
                    
                      # application message all apps
                      # Anwendungsnachricht alle Anwendungen
                      else
                       # send "Upgrade successfully:" "Just to be safe, restart applikations you are using now!" -t 0 -u normal -r $NID
                        send "Upgrade erfolgreich:" "Starten Sie sicherheitshalber alle Anwendungen neu, die Sie gerade verwenden!" -t 0 -u normal -r $NID
                      fi
                    
                    # remind message
                    # Meldung erinnern
                    elif [ ${#PKGS[*]} -eq "1" ]; then
                     # send "${#PKGS[*]} upgrade. Run: # pacman -Syu" "<i>$(echo ${PKGS[*]})</i>" -t 0 -u normal
                     # send "${#PKGS[*]} Upgrade. Laufen: # pacman -Syu" "<i>$(echo ${PKGS[*]})</i>" -t 0 -u normal
                      send "${#PKGS[*]} Upgrade. geladen: Manuelles Install mit pacman -Syu pacman -Syu" "<i>$(echo ${PKGS[*]})</i>" -t 0 -u normal
                    elif [ ${#PKGS[*]} -gt "1" ]; then
                    
                      Nr=0
                      for PKG in ${PKGS[@]}; do
                        Nr=$(($Nr+1))
                        PK+=("$Nr.$PKG")
                      done
                      # send "${#PKGS[*]} upgrades. Run: # pacman -Syu" "<i>${PK[*]}</i>" -t 0 -u normal
                      # send "${#PKGS[*]} Upgrades. Laufen: # pacman -Syu" "<i>${PK[*]}</i>" -t 0 -u normal
                      send "${#PKGS[*]} Upgrades geladen: Manuelles Install mit pacman -Syu" "<i>${PK[*]}</i>" -t 0 -u normal
                    fi
                    
                    # error message
                    # Fehlermeldung
                    if  [ "$Error" != "" ]; then
                     # send "Error: $Error" "To analyse run this command on terminal" -t 0 -u critical
                      send "Error: $Error" "Zur Analyse führen Sie diesen Befehl im Terminal aus" -t 0 -u critical
                    fi
                    
                    
                    # TODO:
                    # GUI- und APP-Messages noch um weite Pakete ergänzen und testen.
                    # In Plasma und GNOME die Notiz Meldung gößer darstellen lassen damit eine lange Paket-Upgrade-Liste komplett angezeigt wird..
                    
                    
                    # Know issues:
                    # Probleme erkennen:
                    # 'pacman -Qu' does not list new added Dendendencies of package upgrades. This is not very importent for ureminder script - Fix would need a bug report to pacman
                    # 'pacman -Qu' listet keine neu hinzugefügten Dendendenzen von Paket-Upgrades auf. Dies ist für das Ureminder-Skript nicht sehr wichtig - eine Behebung würde einen Fehlerbericht an pacman erfordern
                  • tuxnix hat auf diesen Beitrag geantwortet.

                    md_39118
                    Zu 1.
                    Schau lieber auf die Ausgabe auf der Konsole wenn du die Befehle eingibst.
                    Bei dir fehlt die Pfadangabe, sonst findet der Befehl die Datei nicht.
                    Du kannst eine Gruppe users oder admin auch selbst anlegen.
                    Ich weiß nicht wie viele Leute deinen PC nutzen sollen und wer dann noch in dieser Gruppe mit rein soll.
                    Zu 2.
                    Ich schaue es mit auch selbst an. Das hat aber auch noch Zeit.
                    Zu 3.
                    lynx ist ein textbasierter Browser für die Konsole. Den musst du erst installieren damit er laufen kann. Auf der Arch-Linux-ISO ist er aber schon drauf. Ist nur dafür wenn man kein Handy oder 2. Pc oder Drucker zur Verfügen hat, um die Wiki bei der Installation lesen zu können.

                    Welchen Bootloader möchtest du installieren? Wenn das systemd-boot ist dann musst du die Datei /boot/loader/entries/arch.conf und /boot/loader/entries/arch-fallback.conf neu anlegen. Du kannst dabei auch auf die ausführliche Anleitung https://wiki.archlinux.de/title/Installation_mit_UEFI_und_Verschl%C3%BCsselung zurückgreifen. Die erklärt es besser.
                    (Im Zweifel gilt der Pfad aus der ausführlichen Anleitung, dort habe ich für die Spicker (falsch) abgeschrieben)
                    Oder du nimmst alternativ grub als bootloder. Der macht die config weitgehend automatisch.

                    Zu 4.
                    Ja, das geht. Man kann beim Login dann wählen welche GUI man jeweils nutzen möchte. Die stören sich nicht.
                    Nimm für Plasma gleich das Paket 'plasma-meta' dann hast du komplett alles drauf.

                    Zu 5.
                    Danke ich schau mir die Übersetzungen dann an. (Wie gesagt, in ein paar Tagen)

                    P.S.: Der aller wichtigste Unterschied zu Endeverous ist, dass du nach dem Installieren von Arch Linux weißt wie dein System aufgebaut ist. Schön, dass du die Gelegenheit beim Schopf packst.

                    • md_39118 hat auf diesen Beitrag geantwortet.

                      tuxnix
                      Hallo
                      Zun 1. Die Ausgabe in der Endeavour Konsole ist OK. Der Pc soll von zwei Leuten benutzt werden.
                      Die Gruppe users werde ich noch anlegen und beiden Leuten geben, dann mit chown ureminder-fg nochmal ändern.
                      Die Pfadangabe ist OK type zeigt /usr/local/bin/ureminder-fg

                      Zu 3. Mein Arbeits Pc läuft seit 2020 und wurde genau wie im Link beschrieben aufgebaut mit bootctl von Systemd
                      Zu 4. Sway werde ich mal Testen. Das 'plasma-meta' habe ich nicht Installiert weil ich vieles nicht benötige.
                      Ich kann erst nächste Woche weiter Testen und melde mich dann wieder.

                      6 Tage später

                      Hallo
                      Das Update ist am 26.08.2024 erfolgreich gelaufen.
                      Die Anzeigen des Scripts in der Konsole und im Journal sind vollkommen OK.

                      Dazu wurde folgendes eingerichtet.

                      less /etc/group
                      sudo usermod -aG users ralf
                      sudo usermod -aG users gerald
                      cd /usr/local/bin/
                      sudo chown root:users ureminder-fg
                      ls -la /usr/local/bin/
                      -rwxrw-r--  1 root users 8352 20. Aug 16:42 ureminder-fg
                      journalctl -b | grep ureminder    # Von heute, bei Interesse als zip verfügbar.

                      Ab hier der Start von heute.
                      Frage sollte der Kernel und die Anwendungen mit in der Notify Meldung angezeigt werden?
                      Im Bild und im Journal ist nichts zu sehen, könnte das an der Übersetzung liegen?

                      send "Installierte nächste $i-Version:“ “Dieser neue Kernel wird nach dem nächsten Systemstart laufen!" -t 0 -u normal
                      send "Upgrade erfolgreich:" "Bitte neu starten $PRAPPS und andere Anwendungen, die Sie gerade benutzen!" -t 0 -u normal #-r $NID
                      
                      journalctl -b | grep sudo
                      Aug 26 17:22:08 rk-7072 sudo[1852]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Upgrade beginnt in 1 Minute:“ “Bitte Speichern Sie Ihre Dokumente!' -t 0 -u normal -p
                      Aug 26 17:22:08 rk-7072 sudo[1852]: pam_systemd_home(sudo:session): New sd-bus connection (system-bus-pam-systemd-home-1852) opened.
                      Aug 26 17:22:08 rk-7072 sudo[1852]: pam_unix(sudo:session): session opened for user ralf(uid=1000) by (uid=0)
                      Aug 26 17:22:08 rk-7072 sudo[1852]: pam_unix(sudo:session): session closed for user ralf
                      Aug 26 17:23:08 rk-7072 sudo[1882]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Upgrade:“ “Bitte System weiterlaufen lassen!' -t 0 -u critical -r 1 -p
                      Aug 26 17:23:08 rk-7072 sudo[1882]: pam_systemd_home(sudo:session): New sd-bus connection (system-bus-pam-systemd-home-1882) opened.
                      Aug 26 17:23:08 rk-7072 sudo[1882]: pam_unix(sudo:session): session opened for user ralf(uid=1000) by (uid=0)
                      Aug 26 17:23:08 rk-7072 sudo[1882]: pam_unix(sudo:session): session closed for user ralf
                      
                      Aug 26 17:24:43 rk-7072 sudo[10849]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Installierte nächste linux-Version:“ “Dieser neue Kernel wird nach dem nächsten Systemstart laufen!' -t 0 -u normal
                      Aug 26 17:24:43 rk-7072 sudo[10849]: pam_systemd_home(sudo:session): New sd-bus connection (system-bus-pam-systemd-home-10849) opened.
                      Aug 26 17:24:43 rk-7072 sudo[10849]: pam_unix(sudo:session): session opened for user ralf(uid=1000) by (uid=0)
                      Aug 26 17:24:43 rk-7072 sudo[10849]: pam_unix(sudo:session): session closed for user ralf
                      Aug 26 17:24:44 rk-7072 sudo[10891]:     root : PWD=/ ; USER=ralf ; ENV=DISPLAY= DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ; COMMAND=/usr/bin/notify-send 'Upgrade erfolgreich:' 'Bitte neu starten $n und andere Anwendungen, die Sie gerade benutzen!' -t 0 -u normal
                      Aug 26 17:24:44 rk-7072 sudo[10891]: pam_systemd_home(sudo:session): New sd-bus connection (system-bus-pam-systemd-home-10891) opened.
                      Aug 26 17:24:44 rk-7072 sudo[10891]: pam_unix(sudo:session): session opened for user ralf(uid=1000) by (uid=0)
                      Aug 26 17:24:44 rk-7072 sudo[10891]: pam_unix(sudo:session): session closed for user ralf

                      • tuxnix hat auf diesen Beitrag geantwortet.

                        md_39118
                        Das mit den Rechten war nur ein Tipp wenn du das Skript bearbeiten möchtest. Ist O.K. so.
                        Endeverous macht zusätzliche Desktop Meldungen. O.K. wir lassen sie mal machen.
                        Was Anwendungen- und Kernel-Meldung angeht, da waren noch kleine Fehler im Skript. Lass es erst einmal gut sein. Es kommt ohnehin neu und dann komplett incl. deutscher Übersetzung als AUR Paket.

                        md_39118
                        Immer noch nicht fertig aber hier mal eine kleine Vorrausschau:

                        Meldung beim normalen Durchlauf ohne, dass ein upgrade durchgeführt wird:

                        Das Selbe mit laufendem Libreoffice:

                        Und jetzt die Meldungen die während eines auto-upgrades erscheinen:

                        Die erste Meldung verschwindet wenn die 2. erscheint:

                        Die 2. verschwindet wenn die 3. erscheint:

                        Die deutsche Übersetzungsdatei kann ich leider hier nicht mitliefern. Das Srkipt ist oben aktualisiert und du kannst gerne das Deutsche abschreiben und ins Skript eintragen wenn du magst. Deepl ist für diesen Zweck nicht so geeignet.
                        In plasma gibt es hier und da einen Zeilenumbruch mehr. Es gibt zwar eine Einstellung der Benachrichtigungen in der Systemsteuerung aber die Weite der Meldungen kann man dort nicht einstellen. Ich habe den Text so kurz gehalten wie nur möglich.

                        Edit: Mir fällt ein, ich kann dir doch was schicken, bei dem du mit copy & past arbeiten kannst. Die Nummern entsprechen dabei den Zeilen im Skript.

                        #: ureminder:16
                        msgid "Reminds to upgrade and does it if user does not"
                        msgstr ""
                        "Erinnert an Upgrades und führt sie durch,\n"
                        "wenn der Benutzer dies nicht selbst tut."
                        
                        #: ureminder:18
                        msgid "Call: ureminder [OPTION]... [Value]..."
                        msgstr "Aufruf: ureminder [OPTION]... [Value]..."
                        
                        #: ureminder:19
                        msgid "Options:"
                        msgstr "Optionen:"
                        
                        #: ureminder:20
                        msgid "--days [n]         Autoupgrade in n days - default 7"
                        msgstr "--days [n]         Auto-Upgrade in n Tagen - default 7"
                        
                        #: ureminder:21
                        msgid "-h --help          Print this help"
                        msgstr "-h --help          Zeigt diese Hilfe an"
                        
                        #: ureminder:22
                        msgid "-v --verbose       Verbose mode"
                        msgstr "-v --verbose       Zeigt ausführliche Meldungten an"
                        
                        #: ureminder:24
                        msgid "Example: ureminder --days 30 -v"
                        msgstr "Beispiel: ureminder --days 30 -v"
                        
                        #: ureminder:34
                        msgid "--day(s) needs a positiv number as argument"
                        msgstr "--day(s) benötigt eine positive Zahl als Argument"
                        
                        #: ureminder:40
                        msgid "Verbose mode activated"
                        msgstr "Auskunftsfreudiger Modus eingeschaltet"
                        
                        #: ureminder:47
                        msgid "Unknown option: $1"
                        msgstr "Unbekonnte Option $1"
                        
                        #: ureminder:48
                        msgid "Run -h or --help for help"
                        msgstr "Nutze -h oder --help um die Hilfe anzuzeigen"
                        
                        #: ureminder:67
                        msgid "Next upgrade with days=$DAYS at least in $NEXT hour(s)."
                        msgstr "Nächstes Auto-Upgrade mit days=$DAYS frühestens in $NEXT Stunde(n)"
                        
                        #: ureminder:71
                        msgid "Error: Pacman database locked"
                        msgstr "Fehler: Die Pacman Datenbank ist geblockt"
                        
                        #: ureminder:153
                        msgid "Save open documents!"
                        msgstr "Sichere geöffnete Dokumente!"
                        
                        #: ureminder:154
                        msgid "<b>Run # pacman -Syu on terminal!</b>\\n"
                        msgstr "<b>Führe # pacman -Syu auf der Konsole aus!</b>\\n"
                        
                        #: ureminder:155
                        msgid "<b>After upgrading:</b>\\n"
                        msgstr "<b>Nach dem Upgrade:</b>\\n"
                        
                        #: ureminder:156
                        msgid "<b>Next auto upgrade in $NEXT h possible.</b>\\n"
                        msgstr "<b>Nächstes Auto-Upgrade frühestens in $NEXT h.</b>\\n"
                        
                        #: ureminder:157
                        msgid "${#PKGS[*]} package(s): <i>${PK[*]}</i>"
                        msgstr "${#PKGS[*]} Paket(e): <i>${PK[*]}</i>"
                        
                        #: ureminder:159
                        msgid "$GUI and kernel upgrade:"
                        msgstr "$GUI und Kernel Upgrade:"
                        
                        #: ureminder:160
                        msgid "Reboot your system!"
                        msgstr "Starte das System neu!"
                        
                        #: ureminder:162
                        msgid "$GUI upgrade:"
                        msgstr "$GUI wurde erneuert:"
                        
                        #: ureminder:163
                        msgid "<b>Restart your usersesson!</b>\\n"
                        msgstr "Starte deine Benutzersitzung neu!"
                        
                        #: ureminder:165
                        msgid "Application and kernel upgrade:"
                        msgstr "Anwendungen und Kernel erneuert:"
                        
                        #: ureminder:166
                        msgid ""
                        "<b>Restart ${UAPPS[*]} and other applikations you are working with! New "
                        "$RKERNEL version will run after your next system boot.</b>\\n"
                        msgstr ""
                        "<b>Starte ${UAPPS[*]} und Anwendungen neu die in Benutzung sind! Die neue "
                        "$KERNEL version wird aktiv mit dem nächsten Systemstart.</b>\\n"
                        
                        #: ureminder:168
                        msgid "Kernel upgrade:"
                        msgstr "Kernel upgrade:"
                        
                        #: ureminder:169
                        msgid "<b>New $RKERNEL version will run after your next system boot.</b>\\n"
                        msgstr ""
                        "<b>Die neue $KERNEL Version läuft nach dem nächsten Systemstart.</b>\\n"
                        
                        #: ureminder:171
                        msgid "Application upgrade:"
                        msgstr "Upgrade von Anwendungen:"
                        
                        #: ureminder:172
                        msgid ""
                        "<b>Restart${UAPPS[*]} and other applikations you are working with!</b>\\n"
                        msgstr "<b>Starte${UAPPS[*]} und Programme in Benutzung neu!</b>\\n"
                        
                        #: ureminder:174
                        msgid "<b>Upgrade successfull</b>"
                        msgstr "<b>Uggrade erfolgreich durchgeführt:</b>"
                        
                        #: ureminder:175
                        msgid "<b>Restart applikations you're working with!</b>\\n"
                        msgstr "<b>Programme in Benutzung neu starten!</b>\\n"
                        
                        #: ureminder:181
                        msgid "Upgrade starts in 1 minute:"
                        msgstr "Upgrade startet in 1 Minute:"
                        
                        #: ureminder:181
                        msgid "$SAVE"
                        msgstr "$SAVE"
                        
                        #: ureminder:183
                        msgid "Upgrading:"
                        msgstr "Das Upgrade wird eingespielt:"
                        
                        #: ureminder:183
                        msgid "Keep system running!"
                        msgstr "Computer bitte laufen lassen!"
                        
                        #: ureminder:193
                        msgid "Error: $Error"
                        msgstr "Fehler: $Error"
                        
                        #: ureminder:193
                        msgid "To analyse run this command on terminal:"
                        msgstr "Gebe zur Analyse den Befehl in die Konsole ein:"
                        • md_39118 hat auf diesen Beitrag geantwortet.

                          tuxnix
                          Hallo
                          Die DE Übersetzungen sind im Script, ein Test läuft.
                          Bei Post 40 ist im Script noch/wieder der Fehler bei send()

                          send() {
                          tty1user=$(who | awk '{print $1}'| tail -1)
                          sudo -u $tty1user DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $tty1user)/bus notify-send "$@"
                          }
                          
                          #send() {
                          #TUSER=$(who | awk '/tty1/{print $1}')
                          #sudo -u $TUSER DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $TUSER)/bus notify-send "$@"
                          #}