Вопрос или проблема
Я пытаюсь разобраться, почему некоторые приложения не запускаются при входе в систему. Похоже, что это связано только с flatpak. У меня есть другие приложения, не flatpak, например virtmanager, которые запускаются нормально при входе. Я пробовал разные приложения, некоторые из них flatpak и не flatpak, но только flatpak не удается запустить. Приложения, которые не запускаются после входа в систему, работают нормально, когда я открываю их файл .desktop
.
Журнал здесь мало чем помогает. Вот пример из журнала, когда приложения работали, и когда они перестали работать.
Jan 25 08:44:15 systemd[2046]: Starting [email protected] - Firefox Web Browser...
Jan 25 08:44:15 systemd[2046]: Started [email protected] - Firefox Web Browser.
Jan 26 08:38:17 systemd[2082]: Starting [email protected] - Firefox Web Browser...
Jan 26 08:38:17 systemd[2082]: Started [email protected] - Firefox Web Browser.
Jan 26 08:38:33 systemd[2082]: [email protected]: Main process exited, code=exited, status=1/FAILURE
Jan 26 08:38:33 systemd[2082]: [email protected]: Failed with result 'exit-code'.
Приложения, файлы .desktop
, запускаются из моего каталога ~/.config/autostart.
Я также попробовал использовать скрипт ~/startup.sh
. Я начал с создания задания cron @boot, но это совсем не удалось. Приложение “косвенно” запускалось, как только я вводил свой пароль, и затем зависало. Поэтому я использовал функцию системных настроек для “Добавить скрипт запуска”. После перезагрузки Система Настройки и журнал просто показывали ошибку, без дополнительной информации.
Если кто-то знает, где я могу найти логи, которые я могу проанализировать для решения проблемы, или, лучше всего, если вы знаете, в чем проблема, я был бы рад узнать ваше мнение.
Kubuntu Oracular 24.10 x86_64
Linux 6.11.0-14-generic
KDE Plasma 6.1.5
KWin (X11)
Думаю, вы слишком много обрезали из лога. Возможно, есть другие единицы, которые не удалось запустить, от которых зависит Firefox, например, единицы xdg-desktop-portal*.service. Но я правильно понимаю, что вы отказываетесь использовать snap Firefox? У меня с этим snap нет таких проблем. Но я подозреваю, что решение flatpak является недостаточным, обходит острые углы, например, при определении правильных зависимостей (Wants=, After=), просто догадка. Также кажется, что проблема заключается в самом framework flatpak, так как это похоже на состояние гонки, где все единицы запускаются сразу, но если единица-зависимость запаздывает, зависимая просто не удается.
Думаю, это то, что вы получаете, когда абсолютно должны игнорировать официальный подход (snap), потому что “snap плохой”.
Попробуйте:
$ alias sc="systemctl"
$ alias scu='sc --user'
$ alias sda="systemd-analyse"
Просто некоторые алиасы, чтобы уменьшить количество набора текста.
$ sda verify default.target
$ sda --user verify default.target
Есть ли сообщения типа “Ordering cycle”? Также проверьте отдельные неудачные единицы с тем же подходом, например:
$ sc list-units --failed
$ scu list-units --failed
$ sda --user verify [email protected]
Также может быть полезно
$ scu status [email protected]
$ journalctl --user -xeu [email protected]
$ scu list-dependencies [email protected]
$ scu show [email protected]
Ищите/grep подробный вывод последней команды на наличие ‘Wants=”, “Requires=”, “^.*By=’, ‘Before=”, “After=”, если необходимо, например, если предыдущие команды не дали подсказок.
И я настоятельно рекомендую перейти на версию snap Firefox. Существует много абсолютно необоснованных слухов, которые продолжают ходить, что flatpak это что-то великое, а snap осуждается как Антихрист.
И причина, по которой журнал “мало чем помогает”, может быть найдена следующим образом:
$ scu cat [email protected]
Есть ли там директива “StandardError=” или “StandardInput=”, “StandardOutput’? Любая из них может быть установлена в ‘null’, что просто игнорирует ошибки (StandardError= если не задано, наследуется от двух других, в зависимости от того, какая установлена, см. systemd.exec(5)), или какая-то другая цель логирования, например, ‘syslog’. В последнем случае, что согласуется с FUD, что journald “ест щенков”, вам придется искать эти логи. На моей стороне я вижу довольно много сообщений от snap.firefox.firefox-<some-uuid>.scope
в журнале, но это нефатальные предупреждения о вещах, которые меня не волнуют. Все работает как по маслу. Также .service
единица может быть не всем, как видно, что snap использует .scope
единицы.
В противном случае: больше деталей, пожалуйста. Используйте вышеуказанные команды для проверки неудачных единиц перед их перезапуском, чтобы никакая информация о состоянии не была потеряна.
.
Ответ или решение
Проблема, с которой вы столкнулись, при загрузке приложений Flatpak после авторизации в системе, может иметь несколько причин. Прежде чем углубляться в технические детали, важно понять, что Flatpak — это система контейнеризации приложений, которая переносит приложения в изолированную среду исполнения. Это обеспечивает многие преимущества, такие как безопасность и переносимость, но также может вводить дополнительные сложности в конфигурацию и запуск приложений.
Теория
Первое, что приходит на ум при решении проблемы с запуском приложений Flatpak при старте системы — это проверка зависимостей и порядка их загрузки. Flatpak, в отличие от традиционных бинарных пакетов, может иметь другие требования к окружению, поэтому даже если приложение запускается вручную через .desktop
файл, это не гарантирует, что оно будет успешно запускаться автоматически при старте системы.
Одной из самых вероятных причин является проблема с порядком загрузки сервисов systemd, которые могут влиять на работу приложений Flatpak. Например, Flatpak может нуждаться в xdg-desktop-portal или других службах, которые могут не загружаться вовремя или иметь конфликты с другими службами.
Пример
Ваш журнал предполагает, что приложение запускается, но затем сразу завершается с ошибкой exit-code:
Jan 26 08:38:33 systemd[2082]: [email protected]: Main process exited, code=exited, status=1/FAILURE
Jan 26 08:38:33 systemd[2082]: [email protected]: Failed with result 'exit-code'.
Это может указывать на проблемы с разрешением зависимостей или доступа к ресурсам системы, необходимых для запуска Flatpak. Также возможна проблема с наличием конфликта между различными версиями библиотек, особенно если у вас смешанные источники приложений.
Применение
-
Проверка зависимостей и порядка загрузки:
Используйте команды
systemd-analyze
иsystemctl
для проверки на предмет циклов порядка загрузки и неудачных зависимостей:systemd-analyze verify default.target systemd-analyze --user verify default.target systemctl list-units --failed systemctl --user list-units --failed
Проверьте также зависимые модули:
systemctl show your-flatpak.service
Ищите в выводе такие поля как
Wants=
,Requires=
,Before=
,After=
. -
Просмотр журналов ошибок:
Используйте
journalctl
для углубленного просмотра журналов:journalctl --user -xeu your-flatpak.service
Это поможет вам выявить дополнительные сообщения об ошибках, которые могут пролить свет на происходящее.
-
Проверка конфигурации Flatpak:
Убедитесь, что у ваших Flatpak приложений нет проблем с конфигурацией. Для этого вы можете использовать команду:
flatpak repair
-
Альтернатива со Snap (если применимо):
Несмотря на возможные предубеждения против Snap, возможно, стоит попробовать использовать Snap версии приложений, чтобы убедиться, не связано ли это с проблемами специфичными для Flatpak.
-
Конфигурация и скрипты:
Если вы используете скрипты для запуска приложений, проверьте, что они корректно настроены и имеют необходимые права доступа. Попробуйте добавить задержку в исполнение вашего скрипта, чтобы убедиться, что все необходимые службы уже запущены.
-
Дополнительные действия:
Если ничего из вышеуказанного не помогло, будет полезно изучить более подробные логи и, возможно, обратиться к сообществу Flatpak для временных решений или патчей. Также стоит проверить системные настройки безопасности SELinux/AppArmor, которые могут блокировать запуск приложений.
Заключение
Проблемы с запуском Flatpak приложений при авторизации могут быть предельно сложными для диагностики из-за различных факторов, таких как порядок загрузки, конфликты зависимостей и специфические настройки вашего окружения. Комплексный подход с использованием вышеуказанных диагностических шагов должен помочь вам выявить и решить проблему. Всегда помните о важности организации стабильной среды для тестирования подобных конфигураций, чтобы минимизировать время простоя и воздействие на производственные процессы.