• Café
  • Automatisiertes Paketupgrade

md_39118

Ja, timer/service läuft und löst das skript aus!
Ja, wenn Days=4 im Skript gesetzt ist und das letzte Paket von dir am 11.8 erneuert wurde und du zwischendurch kein pacman -Syu tätigst, dann sollte am 15.08. ein auto-ugrade erfolgen. 😉

Erscheint denn auch alle 4 h eine Nachricht auf dem Desktop bzw. wenn du ein sudo ureminder ausführst? Dort werden auch die Namen der zum Upgrade stehenden Pakete angezeigt.
Ich habe mal ein Screenshot gemacht wie das auf sway aussieht.
Und welches Plasma läuft bei dir Plasma (X11) oder Plasma (Wayland) ?

  • md_39118 hat auf diesen Beitrag geantwortet.

    tuxnix
    Hallo
    Das Endeavour läuft mit Plasma (X11)
    Mit Wayland gibt es nach der User Anmeldung nur einen schwarzen Monitor keine Konsole nichts.
    Die 1 Nachricht kommt gleich nach dem Anmelden, die 2 Nachricht nach 7 Minuten.
    Beide Nachrichten zeigen die anstehenden Pakete. Nach 4 Stunden ist keine Nachricht erfolgt.
    Das werde ich nochmal Kontrollieren.
    Eigentlich wollte ich noch ein Bildschirm Foto anhängen, aber wie, ist ja sehr umständlich hier im Forum.

    • tuxnix hat auf diesen Beitrag geantwortet.

      md_39118

      Falls du Plasma mit Wayland ausprobieren möchtest wäre es für dich empfehlenswert das Gruppenpaket plasma noch einmal zu installieren. Da sind in letzter Zeit wohl noch ein paar Kleinigkeiten dazugekommen die man sonst nicht auf dem Rechner hat, wenn man nur aktualisiert. Das musst du aber nicht, wenn plasma X11 zu deiner Zufriedenheit läuft.

      Ich habe gestern selbst mal geschaut. Plasma zeigt Meldungen mit geringer Priorität nur sehr kurz an. Ich habe das Skript jetzt auf GNOME und Plasma angepasst, noch ein klein wenig erweitert und wenn die Tests gut verlaufen, dann gibt es am Wochenende eine verbesserte ureminder Version.

      Ein Bild anhängen ist hier recht einfach. Screenshot erzeugen, den Button mit der Landschaft drücken und das Bild hochladen. 😉

      • md_39118 hat auf diesen Beitrag geantwortet.

        tuxnix
        Hallo
        Die Meldungen 1 und 2 bleiben die ganze Zeit auf dem Desktop stehen, nach 4 Stunden kommt keine Meldung.
        X11 läuft recht gut, Plasma mit Wayland wird nochmal getestet.

        • tuxnix hat auf diesen Beitrag geantwortet.

          md_39118
          Das war auch so von mir gedacht, dass man die Paket-Meldung stehen bleibt bis man sie selbst wegklickt. 😉
          Der Timer sieht bei mir so aus:

          # systemctl list-timers
          NEXT                           LEFT   LAST                           PASSED         UNIT 
          Thu 2024-08-15 01:01:17 CEST   49min  Wed 2024-08-14 21:01:17 CEST   3h 10min ago   ureminder.timer

          Mit dem Befehl hast immer den Überblick.
          Oder den Befehl hier:

          # systemctl status ureminder.timer
          ● ureminder.timer
               Loaded: loaded (/usr/lib/systemd/system/ureminder.timer; enabled; preset: disabled)
               Active: active (waiting) since Wed 2024-08-14 06:56:25 CEST; 17h ago
           Invocation: 82e3264d089248f0a3979f0d5f3b99ed
              Trigger: Thu 2024-08-15 01:01:17 CEST; 47min left
             Triggers: ● ureminder.service
          
          Aug 14 06:56:25 leno1 systemd[1]: Started ureminder.timer.

          Edit\:
          Bei der Abfrage von journalctl -b | grep ureminder hast du dann jeweils bevor das script ureminder ausgeführt wurde ein 'Started ureminder.service' und dahinter ein 'ureminder.service: Deactivated successfully' stehen.

          Damit du nach dem Hochfahren vom Rechner nicht zwei Meldungen auf's display bekommst, kannst du das persistans=true aus dem timer nehmen. Und vielleicht ihn auch gleich auf daily umstellen:

          #file->/usr/lib/systemd/system/ureminder.service
          
          [Unit]
          Description=ureminder.timer
          
          [Timer]
          OnStartupSec=5min
          OnUnitActiveSec=daily
          
          [Install]
          WantedBy=basic.target
          • md_39118 hat auf diesen Beitrag geantwortet.

            tuxnix
            Hallo
            Das Auto Update ist heute noch nicht gelaufen, es wurden noch ca. 68 Pakete geladen.
            Nach 4 Stunden kommt nichts mehr. Den Timer ändere ich mit der neuen Version von ureminder
            Im Journal steht es genauso wie Du geschrieben hast.

            Aug 15 13:53:32 rk-7072 ureminder[622]:  kded-6.5.0-1-x86_64 wird heruntergeladen …
            Aug 15 13:53:32 rk-7072 ureminder[622]:  bubblewrap-0.10.0-1-x86_64 wird heruntergeladen …
            Aug 15 13:53:32 rk-7072 ureminder[622]: Schlüsselbund wird geprüft …
            Aug 15 13:53:35 rk-7072 ureminder[622]: Paketintegrität wird geprüft …
            Aug 15 13:54:08 rk-7072 ureminder[1749]: ==> no candidate packages found for pruning
            Aug 15 13:54:08 rk-7072 ureminder[1759]: ==> finished: 67 packages removed (disk space saved: 98.57 MiB)
            Aug 15 13:54:08 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
            Aug 15 13:54:08 rk-7072 systemd[1]: ureminder.service: Consumed 11.574s CPU time, 677.6M memory peak.
            Aug 15 14:02:41 rk-7072 systemd[1]: Started ureminder.service.
            
            Aug 15 14:02:42 rk-7072 ureminder[1882]: Gesamtgröße des Downloads:  0,00 MiB
            Aug 15 14:02:42 rk-7072 ureminder[1882]: :: Download fortsetzen? [J/n]
            Aug 15 14:02:42 rk-7072 ureminder[1882]: Schlüsselbund wird geprüft …
            Aug 15 14:02:42 rk-7072 ureminder[1882]: Paketintegrität wird geprüft …
            Aug 15 14:02:46 rk-7072 ureminder[2443]: ==> no candidate packages found for pruning
            Aug 15 14:02:46 rk-7072 ureminder[2453]: ==> no candidate packages found for pruning
            Aug 15 14:02:46 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
            Aug 15 14:02:46 rk-7072 systemd[1]: ureminder.service: Consumed 7.337s CPU time, 58.6M memory peak.

            Das Bild dazu

            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.