Flatpak aktualisiert seine Apps nicht, wenn es über Cron ausgeführt wird

Flatpak aktualisiert seine Apps nicht, wenn es über Cron ausgeführt wird

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 --userFlag (das Flatpak --systemstandardmäß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- --userFlags. 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 cronJob 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 cronJobs in der crontabDatei Read setzen man 5 crontab.

Sehen Sie sich die Ergebnisse echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";aliasin jeder Ihrer Umgebungen an.

Da der commandTeil der crontabZeile standardmäßig von interpretiert wird /bin/sh, das eine einfachere Syntax als hat /bin/bash, empfehle ich, es commandals Aufruf eines bashSkripts (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 sudoersfolgt 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.

verwandte Informationen