Dieses einfache Skript wird ordnungsgemäß ausgeführt, wenn es manuell gestartet wird:
#!/bin/sh
flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log
Bei Ausführung mit 00 07 * * * sh ~/cron/cron-flatpak.sh
(demselben normalen Benutzer, nicht mit der Root-Crontab) wird Folgendes erzeugt:
Looking for updates…
1. org.chromium.Chromium.Codecs stable u flathub < 1.1 MB
2. org.chromium.Chromium.Locale stable u flathub < 112.8 kB (partial)
3. org.qbittorrent.qBittorrent stable u flathub < 8.3 MB
Updating 1/3…
Warning: Failed to get revokefs-fuse socket from system-helper: Flatpak system operation GetRevokefsFd not allowed for user
Updating 1/3… ██▌ 13% 41.1 kB/s
Updating 1/3… ████████████████████ 100% 674.8 kB/s
Updating 1/3… ████████████████████ 100% 674.8 kB/s
Updating 2/3…
Warning: Failed to get revokefs-fuse socket from system-helper: Flatpak system operation GetRevokefsFd not allowed for user
Updating 2/3… ████████████████████ 100% 592 bytes/s
Updating 3/3…
Warning: Failed to get revokefs-fuse socket from system-helper: Flatpak system operation GetRevokefsFd not allowed for user
Updating 3/3… ████████████████████ 100% 0 bytes/s
Updates complete.
Danach scheinen die Versionen mit denen auf flathub.io übereinzustimmen, aber das Skript versucht bei jedem Durchlauf immer wieder, alles zu aktualisieren. Irgendwelche Vorschläge?
Voraussichtliche Ankunftszeit:Okay Leute, ich werde die von euch vorgeschlagenen Ansätze testen und die eine oder andere Antwort akzeptieren, nachdem ich es geschafft habe, das Ding zum Laufen zu bringen. Das wird eine Weile dauern, da für jede einzelne Iteration eine neue App-Version auf Flathub ausgerollt werden muss.
Antwort1
Es handelt sich dabei nicht so sehr um eine Lösung, sondern eher um einen Workaround oder einen möglichen Hinweis, aber die Installation von Chromium mit dem --user
Flag (das Flatpak --system
standardmäßig verwendet) und die Aktualisierung funktionieren in Cron problemlos.
flatpak install flathub org.chromium.Chromium # default, has cron issues
flatpak install --user flathub org.chromium.Chromium # no cron issues
Leider bin ich mir nicht sicher, warum die Möglichkeit, System-Flatpaks zu aktualisieren, in Cron weggefallen ist – zumindest für das Chromium-Flatpak, da es so aussieht, als ob das dritte Flatpak gerade so aktualisiert werden konnte. Vielleicht liegt das Problem bei diesem bestimmten Flatpak.
Bearbeiten: Ich habe den dritten Fehler in der Ausgabe übersehen, er betraf nicht nur Chromium.
Bearbeitung 2: Nur einige weitere Erläuterungen/Schritte zur Verwendung des Flatpak- --user
Flags. Da System- und Benutzerpakete separat verwaltet werden, bedeutet dies, dass das Hinzufügen/Entfernen von Remotes, die Installation und die Aktualisierung ebenfalls separat erfolgen müssen. Ein Benutzerpaket kann nicht von einem System-Remote abgerufen werden und umgekehrt.
# add a user remote
flatpak remote-add --if-not-exists --user REMOTE_NAME REMOTE_ADDRESS
# updates just user packages
flatpak update --user
Antwort2
Jobs, die über cron
, oder at
, oder ausgeführt werden batch
, werden nicht in derselben Laufzeitumgebung ausgeführt, die Sie auf Ihrem Desktop haben. Keine Ihrer PATH
Änderungen oder anderen Einstellungen der Umgebungsvariablen werden automatisch an Ihren cron
Job weitergegeben. Es gibt beispielsweise kein $DISPLAY
, daher benötigen GUI-Programme eine spezielle Behandlung (lesen Sie man xhost
).
Man kann Umgebungsvariablen für alle seine cron
Jobs in der crontab
Datei Read setzen man 5 crontab
.
Sehen Sie sich die Ergebnisse echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
in jeder Ihrer Umgebungen an.
Da der command
Teil der crontab
Zeile standardmäßig von interpretiert wird /bin/sh
, das eine einfachere Syntax als hat /bin/bash
, empfehle ich, es command
als Aufruf eines bash
Skripts (ausführbar, gemountet, beginnt mit #!/bin/bash
) zu verwenden, das die Umgebung einrichtet und dann das gewünschte Programm aufruft.
Antwort3
Habe eine billige und einfache Lösung gefunden: führe Flatpak über Cron mit aus sudo
. Es gibt mindestens 3 Möglichkeiten, dies zu tun. Ich habe mich dafür entschieden, Flatpak wie sudoers
folgt hinzuzufügen:
Cmnd_Alias FLATPAK = /usr/bin/flatpak
myusername ALL=(ALL) NOPASSWD: FLATPAK
Das Skript ändert sich entsprechend:
#!/bin/sh
sudo /usr/bin/flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log
Mit diesen Änderungen läuft alles reibungslos. Der wahre Grund liegt wahrscheinlich nicht an den Berechtigungen an sich, sondern an einer anderen Änderung in der Umgebung, aber zumindest muss ich nicht alles neu installieren.
Wenn jemand denkt, dass es eine schlechte Idee ist, erklären Sie bitte, warum.