Рейтинг:2

Flatpak не обновляет свои приложения при запуске через cron

флаг us

Этот простой скрипт работает корректно при запуске вручную:

#!/бин/ш

flatpak -y обновление 2>&1 >> ~/cron/cron-flatpak.log

При запуске с 00 07 * * * ш ~/cron/cron-flatpak.sh (тот же обычный пользователь, а не root crontab), выдает следующее:

Ищу обновления ¦


 1. Стабильная версия org.chromium.Chromium.Codecs и flathub < 1,1 МБ
 2. org.chromium.Chromium.Locale stable u flathub < 112,8 КБ (частично)
 3. org.qbittorrent.qBittorrent стабильный и плоский концентратор < 8,3 МБ



Обновление 1/3 ¦                                                                 
Предупреждение: не удалось получить сокет revokefs-fuse от системного помощника: системная операция Flatpak GetRevokefsFd не разрешена для пользователя

Обновление 1/3………………………………………………………………………………………………………………………………………………………………………………………………………….
Обновление 1/3………………………………………………………………………………………… âââââ 100 % 674,8 кБ/с
Обновление 1/3………………………………………………………………………………………… âââââ 100 % 674,8 кБ/с
Обновление 2/3 ¦                                                                 
Предупреждение: не удалось получить сокет revokefs-fuse от системного помощника: системная операция Flatpak GetRevokefsFd не разрешена для пользователя

Обновление 2/3………………………………………………………………………………………… âââââ 100% 592 байт/с
Обновление 3/3 ¦                                                                 
Предупреждение: не удалось получить сокет revokefs-fuse от системного помощника: системная операция Flatpak GetRevokefsFd не разрешена для пользователя

Обновление 3/3…………………………………………………………………………………………… âââââ 100% 0 байт/с
Обновления завершены.

После этого версии, кажется, совпадают с тем, что указано на flathub.io, но скрипт пытается обновлять все снова и снова при каждом запуске. Какие-либо предложения?

Расчетное время прибытия: Хорошо, люди, я буду тестировать предложенные вами подходы и приму тот или иной ответ после того, как мне удастся заставить это работать.Это займет некоторое время, так как для каждой итерации требуется развертывание новой версии приложения на flathub.

wizardpurple avatar
флаг cn
Вы можете установить определенные версии плоских пакетов, например более старые версии, используя ```flatpak remote-info --log flathub PACKAGE_NAME```, чтобы увидеть историю коммитов, а затем «обновить» плоские пакеты до этой конкретной версии: ``` обновление flatpak --commit=COMMIT_STRING PACKAGE_NAME```. Используйте флаг ```--user``` для пользовательских пакетов. Для системных пакетов требуется sudo для установки определенного коммита.
флаг us
@wizardpurple Возврат моего тестового приложения к более старой фиксации сэкономил мне много времени. Спасибо.
Рейтинг:4
флаг cn

Это не столько решение, сколько обходной путь или возможная подсказка, а установка Chromium с --пользователь флаг (flatpak использует --система по умолчанию) и обновление отлично работает в cron.

flatpak install flathub org.chromium.Chromium # по умолчанию, есть проблемы с cron
flatpak install --user flathub org.chromium.Chromium # нет проблем cron

К сожалению, я не уверен, почему в cron отсутствует возможность обновления системных плоских пакетов.по крайней мере, для плоского пакета Chromium, поскольку похоже, что третий плоский пакет смог обновиться только что. Возможно, проблема именно в этом плоском пакете.

Редактировать: я пропустил третью ошибку в выводе, она не была уникальной для Chromium.

Редактировать 2: еще несколько разъяснений/шагов по использованию flatpak --пользователь флаг. Поскольку системные и пользовательские пакеты управляются отдельно, это означает, что добавление/удаление удаленных пакетов, установка и обновление также должны выполняться отдельно. Пользовательский пакет не может быть извлечен из удаленной системы и наоборот.

# добавляем удаленного пользователя
flatpak удаленное добавление --if-not-exists --user REMOTE_NAME REMOTE_ADDRESS

# обновляет только пользовательские пакеты
обновление плоского пакета --user
флаг us
Поскольку cron выполняет свою работу как тот же интерактивный пользователь, который выполнил `crontab -e`, единственная разница между установкой приложений flatpak для системы и для пользователя должна быть в каталогах, верно?
wizardpurple avatar
флаг cn
Да, пакеты ```--user``` будут установлены в ```$HOME/.local/share/flatpak/app/``` и ```--system``` (метод по умолчанию) в ```/var/lib/flatpak/app/```
флаг us
Принимаем этот, потому что он идеологически чище, особенно когда пользователь настраивает flatpak с нуля.
Рейтинг:1
флаг it

Вакансии проходят через хрон, или же в, или же партия, не запускаются в той же среде выполнения, что и на вашем рабочем столе. Ни один из ваших ДОРОЖКА изменения или другие параметры переменных среды автоматически распространяются на ваш хрон работа. Например, нет $ ДИСПЛЕЙ, поэтому программы с графическим интерфейсом нуждаются в особом подходе (читай человек).

Можно установить переменные окружения для всех своих хрон рабочие места в кронтаб файл Читать человек 5 кронтаб.

Посмотрите на результаты echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== псевдоним ===";псевдоним в каждой из ваших сред.

Поскольку команда часть кронтаб строка по умолчанию интерпретируется /бин/ш, который имеет более простой синтаксис, чем /бин/баш, рекомендую иметь команда быть призывом к бить скрипт (исполняемый, смонтированный, начинается с #!/бин/баш), который настраивает среду, а затем вызывает нужную программу.

флаг us
Вывод `set` для моей учетной записи пользователя составляет 72 КБ, а для cron - 406 байт. Даже после исключения явно несущественных различий построчное тестирование заняло бы годы. Есть ли способ просто загрузить всю мою пользовательскую среду в cron? Сейчас я читаю о поиске переменных среды; почти уверен, что это тупик, потому что это звучит слишком очевидно. Было бы упомянуто где-нибудь, если бы это сработало.
Рейтинг:0
флаг us

Нашел дешевое и грязное решение: запустить flatpak через cron с судо. Есть как минимум 3 способа сделать это; Я пошел с добавлением flatpak к sudoers как это:

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

Сценарий меняется соответствующим образом:

#!/бин/ш

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

С этими модификациями все обновляется без сучка и задоринки. Настоящая причина, скорее всего, не в привилегиях как таковых, а в каких-то других изменениях в среде, но, по крайней мере, это не заставляет меня все переустанавливать.

Если кто-то считает, что это плохая идея, пожалуйста, объясните, почему.

wizardpurple avatar
флаг cn
Как насчет того, чтобы запустить его из crontab root? Таким образом, нет необходимости добавлять flatpak в sudoers.
флаг us
Это будет четвертый способ. Мне все еще любопытно, почему это работает, но мы, вероятно, никогда не узнаем.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.