Puncte:2

Flatpak nu își actualizează aplicațiile atunci când rulează prin cron

drapel us

Acest script simplu rulează corect atunci când este lansat manual:

#!/bin/sh

flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log

Când alergați cu 00 07 * * * sh ~/cron/cron-flatpak.sh (același utilizator obișnuit, nu root crontab), produce următoarele:

Caut actualizări...


 1. org.chromium.Chromium.Codecs stable u flathub < 1,1Â MB
 2. org.chromium.Chromium.Locale stable u flathub < 112,8Â kB (parțial)
 3. org.qbittorrent.qBittorrent stabil u flathub < 8,3 MB



Se actualizează 1/3⦠                                                                
Avertisment: Nu s-a putut obține revokefs-fuse socket de la system-helper: Operarea sistemului Flatpak GetRevokefsFd nu este permisă pentru utilizator

Se actualizează 1/3⦠âââ 13% 41,1 kB/s
Se actualizează 1/3… âââââ 100% 674,8 kB/s
Se actualizează 1/3… âââââ 100% 674,8 kB/s
Actualizare 2/3⦠                                                                
Avertisment: Nu s-a putut obține revokefs-fuse socket de la system-helper: Operarea sistemului Flatpak GetRevokefsFd nu este permisă pentru utilizator

Se actualizează 2/3⦠ââââââââââââââââââââââââ âââââ 100% 592 octeți/s
Actualizare 3/3⦠                                                                
Avertisment: Nu s-a putut obține revokefs-fuse socket de la system-helper: Operarea sistemului Flatpak GetRevokefsFd nu este permisă pentru utilizator

Se actualizează 3/3⦠ââââââââââââââââââââââââ âââââ 100% 0 octeți/s
Actualizări finalizate.

Ulterior, versiunile par să se potrivească cu ceea ce este listat pe flathub.io, dar scriptul încearcă să actualizeze totul din nou și din nou la fiecare rulare. Orice sugestii?

ETA: Bine, oameni buni, voi testa abordările pe care le-ați sugerat și voi accepta un răspuns sau altul după ce voi reuși să fac chestia să funcționeze.Va dura ceva timp, deoarece fiecare iterație necesită o nouă versiune de aplicație lansată pe flathub.

wizardpurple avatar
drapel cn
Puteți instala anumite versiuni de flatpak-uri, cum ar fi versiuni mai vechi, folosind ```flatpak remote-info --log flathub PACKAGE_NAME``` pentru a lista istoricul de comitere, apoi să „actualizați” flatpak-ul la versiunea respectivă: ``` Actualizare flatpak --commit=COMMIT_STRING PACKAGE_NAME```. Utilizați indicatorul ```--user``` pentru pachetele utilizator. Pentru pachetele de sistem, sudo este necesar să instaleze un anumit commit.
drapel us
@wizardpurple Rolul aplicației mele de testare înapoi la un commit mai vechi mi-a economisit mult timp. Mulțumiri.
Puncte:4
drapel cn

Nu este atât o soluție, cât o soluție sau un posibil indiciu, ci instalarea Chromium cu --utilizator steag (flatpak folosește --sistem implicit) și actualizarea funcționează bine în cron.

flatpak install flathub org.chromium.Chromium # implicit, are probleme de cron
flatpak install --user flathub org.chromium.Chromium # fără probleme de cron

Din păcate, nu sunt sigur de ce capacitatea de a actualiza flatpak-urile de sistem este renunțată în cronâcel puțin pentru Chromium flatpak, deoarece se pare că al treilea flatpak a putut să se actualizeze doar. Poate că problema este cu acel flatpack.

Editare: am ratat a treia eroare din ieșire, nu era unică pentru Chromium.

Editarea 2: Doar câteva clarificări/pași suplimentari pentru utilizarea flatpak-urilor --utilizator steag. Deoarece pachetele de sistem și de utilizator sunt gestionate separat, aceasta înseamnă că adăugarea/eliminarea telecomenzilor, instalarea și actualizarea trebuie făcute și separat. Un pachet de utilizator nu poate extrage de la o telecomandă de sistem și invers.

# adăugați o telecomandă de utilizator
flatpak remote-add --dacă-nu-există --user REMOTE_NAME REMOTE_ADDRESS

# actualizări doar pachete de utilizator
actualizare flatpak --user
drapel us
Deoarece cron își rulează joburile ca același utilizator interactiv care a executat `crontab -e`, singura diferență între instalarea aplicațiilor flatpak pentru sistem și pentru utilizator trebuie să fie în directoare, nu?
wizardpurple avatar
drapel cn
Da, pachetele ```--user``` vor fi instalate în ```$HOME/.local/share/flatpak/app/``` și ```--system``` (metoda implicită) sunt în ```/var/lib/flatpak/app/```
drapel us
Acceptându-l pe acesta pentru că este mai curat din punct de vedere ideologic, mai ales când utilizatorul configurează flatpak de la zero.
Puncte:1
drapel it

Locuri de muncă rulează cron, sau la, sau lot, nu sunt rulate în același mediu de rulare pe care îl aveți pe desktop. Nici unul dintre voi CALE modificările sau alte setări ale variabilelor de mediu sunt propagate automat către dvs cron loc de munca. De exemplu, nu există $DISPLAY, deci programele GUI au nevoie de un tratament special (citiți man xhost).

Se pot seta variabile de mediu pentru toate cron locuri de muncă în crontab fişier Citit om 5 crontab.

Uită-te la rezultatele echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias în fiecare dintre mediile dumneavoastră.

De când comanda parte a crontab linia este, implicit, interpretată de /bin/sh, care are o sintaxă mai simplă decât /bin/bash, recomand să aveți comanda fii un apel către a bash script (executabil, montat, începe cu #!/bin/bash) care configurează mediul, apoi apelează programul dorit.

drapel us
Ieșirea lui `set` pentru contul meu de utilizator este de 72 KB și pentru cron este de 406 octeți. Chiar și după excluderea diferențelor evident irelevante, testarea lui linie cu linie ar dura ani de zile. Există vreo modalitate de a încărca întregul meu mediu de utilizator în cron? Citesc despre aprovizionarea variabilelor de mediu acum; destul de sigur că este o fundătură pentru că sună prea evident. Ar fi fost menționat undeva dacă ar funcționa.
Puncte:0
drapel us

Am găsit o soluție ieftină și murdară: rulați flatpak prin cron cu sudo. Există cel puțin 3 moduri de a face acest lucru; Am trecut cu adăugarea flatpak la sudoeri ca aceasta:

Cmnd_Alias ​​FLATPAK = /usr/bin/flatpak
myusername ALL=(ALL) NOPASSWD: FLATPAK

Scriptul se modifică în consecință:

#!/bin/sh

sudo /usr/bin/flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log

Cu aceste modificări, totul se actualizează fără probleme. Adevăratul motiv nu sunt, cel mai probabil, privilegiile în sine, ci o altă schimbare a mediului, dar cel puțin nu mă face să reinstalez totul.

Dacă cineva crede că este o idee proastă, vă rugăm să explicați de ce.

wizardpurple avatar
drapel cn
Ce zici de rularea lui din crontab-ul root? Nu este nevoie să adăugați flatpak la sudoers în acest fel.
drapel us
Aceasta ar fi a patra cale. Încă sunt curios de ce funcționează, dar probabil nu vom ști niciodată.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.