Este sencillo script se ejecuta correctamente cuando se inicia manualmente:
#!/bin/sh
flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log
Cuando se ejecuta con 00 07 * * * sh ~/cron/cron-flatpak.sh
(el mismo usuario normal, no con el crontab raíz), produce lo siguiente:
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.
Posteriormente, las versiones parecen coincidir con lo que aparece en flathub.io, pero el script intenta actualizar todo una y otra vez en cada ejecución. ¿Alguna sugerencia?
Hora estimada de llegada:Bien gente, probaré los enfoques que sugirieron y aceptaré una respuesta u otra después de que logre hacer que funcione. Tomará un tiempo ya que cada iteración requiere una nueva versión de la aplicación implementada en Flathub.
Respuesta1
No es tanto una solución como una solución alternativa o una posible pista, pero instalar Chromium con la --user
bandera (Flatpak usa --system
de forma predeterminada) y actualizar funciona bien en cron.
flatpak install flathub org.chromium.Chromium # default, has cron issues
flatpak install --user flathub org.chromium.Chromium # no cron issues
Desafortunadamente, no estoy seguro de por qué la capacidad de actualizar los paquetes planos del sistema se elimina en cron, al menos para el paquete plano Chromium, ya que parece que el tercer paquete plano apenas pudo actualizarse. Quizás el problema esté en ese paquete plano en particular.
Editar: me perdí el tercer error en el resultado, no era exclusivo de Chromium.
Edición 2: Solo algunas aclaraciones/pasos adicionales para usar la bandera de Flatpak --user
. Dado que los paquetes del sistema y del usuario se administran por separado, esto significa que agregar o quitar controles remotos, instalar y actualizar también se deben realizar por separado. Un paquete de usuario no puede extraerse de un sistema remoto y viceversa.
# add a user remote
flatpak remote-add --if-not-exists --user REMOTE_NAME REMOTE_ADDRESS
# updates just user packages
flatpak update --user
Respuesta2
Los trabajos que se ejecutan mediante cron
, o at
, o batch
no se ejecutan en el mismo entorno de ejecución que tiene en su escritorio. Ninguno de sus PATH
cambios u otras configuraciones de variables de entorno se propagan automáticamente a su cron
trabajo. Por ejemplo, no existe $DISPLAY
, por lo que los programas GUI necesitan un tratamiento especial (leer man xhost
).
Se pueden establecer variables de entorno para todos cron
los trabajos en el crontab
archivo Read man 5 crontab
.
Mira los resultados de echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
en cada uno de tus entornos.
Dado que la command
parte de la crontab
línea es, de forma predeterminada, interpretada por /bin/sh
, que tiene una sintaxis más simple que /bin/bash
, recomiendo hacer command
una llamada a un bash
script (ejecutable, montado, comienza con #!/bin/bash
) que configura el entorno y luego llama al programa deseado.
Respuesta3
Encontré una solución barata y sucia: ejecutar flatpak mediante cron con sudo
. Hay al menos 3 formas de hacerlo; Elegí agregar flatpak para que sudoers
me gustara esto:
Cmnd_Alias FLATPAK = /usr/bin/flatpak
myusername ALL=(ALL) NOPASSWD: FLATPAK
El guión cambia en consecuencia:
#!/bin/sh
sudo /usr/bin/flatpak -y update 2>&1 >> ~/cron/cron-flatpak.log
Con estas modificaciones, todo se actualiza sin problemas. Lo más probable es que la verdadera razón no sean los privilegios per se sino algún otro cambio en el entorno, pero al menos no me obliga a reinstalar todo.
Si alguien piensa que es una mala idea, explique por qué.