Версия пакета: appinstall-1.3.3-alt1.noarch Стенды: kworkstation-10-x86-64 education-10-x86-64-kde Шаги для воспроизведения: 1) Запустить App Install из меню приложений Фактический результат: приложение запускается через две минуты. Ожидаемый результат: приложение запускается в течение десяти секунд. Ошибка воспроизводится только на системах с KDE. На системах с Mate/Xfce приложение запускается в течение 10 секунд. Сообщения в системном журнале при запуске приложения: сен 09 12:20:11 kworkstation-10-x86-64-20220909.localdomain systemd[3442]: Started App Install - Установка сторонних приложений. ░░ Subject: Запуск юнита UNIT завершен ░░ Defined-By: systemd ░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel ░░ ░░ Процесс запуска юнита UNIT был завершен. ░░ ░░ Результат: done. сен 09 12:20:13 kworkstation-10-x86-64-20220909.localdomain consolehelper[24050]: pam_tcb(appinstall:auth): Authentication passed for root from test(uid=500) сен 09 12:20:13 kworkstation-10-x86-64-20220909.localdomain consolehelper[24064]: executing "/usr/sbin/appinstall": (test --> root --> root)
Из терминала приложение запускается с нормальной скоростью: $ appinstall
(Ответ для Ivan Alekseev на комментарий #1) > Из терминала приложение запускается с нормальной скоростью: > $ appinstall Он зачем-то запускает epm installed для каждого из поддерживаемых им приложений.
Проверялось в Sisyphus, ошибка воспроизводится.
appinstall-1.4.0-alt1 -> sisyphus: Mon May 08 2023 Andrey Cherepanov <cas@altlinux> 1.4.0-alt1 - Show window immediately and display loading animation (ALT #43747) - Show only allowed applications from /etc/appinstall/allow.d (ALT #41900) - Change installed icon to QStyle.SP_ArrowDown - Get installed application list with new epm play parameter --short (ALT #42812, #42802)
Стенды: kworkstation (p10) regular kde (Sisyphus) Шаги для воспроизведения: 1) Запустить appinstall из меню приложений или с помощью krunner (Alt+F2) Фактический результат с версией appinstall-1.3.3-alt1.noarch: приложение очень долго запускается. Фактический результат с версией appinstall-1.4.1-alt1.noarch: приложение запускается в течении 10 секунд, но списка приложений нет долгое время. Ожидаемый результат: приложение запускается в течение десяти секунд и список приложений появляется сразу. Если запускать из krunner хитрым способом: appinstall </dev/null то обе версии appinstall отрабатывают нормально, идём править: /usr/share/applications/appinstall.desktop и добавляем костыль в строку Exec: Exec=appinstall </dev/null Результат: всё работает корректно Причина данного поведения на KDE связана с появлением несуществующей pipe в /stdin если мы запускаем приложение не из терминала в КДЕ, в следствии чего когда appinstall запускает epm play одно из условий определяет на входе pipe. Как вариант исправления данной ошибки, можно сделать, чтобы appinstall запускал внутри себя epm play c явным </dev/null Подтверждение, что проблема не в epm, а в КDE: создаем скрипт: #!/usr/bin/env bash ls -l /proc/self/fd/0 >> /tmp/script.log if [ -p /dev/stdin ] ; then echo "PIPE" else echo "NOPIPE" fi >> /tmp/script.log читаем что в /tmp/script.log tail -f /tmp/script.log запускаем тестовый скрипт из терминала: /tmp/script вывод: lrwx------ 1 fidel fidel 64 июн 6 12:26 /proc/self/fd/0 -> /dev/pts/2 NOPIPE запускаем тестовый скрипт из терминала но с pipe: test | /tmp/script lr-x------ 1 fidel fidel 64 июн 6 12:27 /proc/self/fd/0 -> pipe:[402571] PIPE Логика отрабатывает правильно до тех пор, пока мы не запустим скрипт без терминала, например из файлового менеджера двумя кликами по скрипту или с помощью krunner (Alt+F2): /tmp/script Вывод: lr-x------ 1 fidel fidel 64 июн 6 12:30 /proc/self/fd/0 -> pipe:[397973] PIPE Что не является правильным. Еще раз с помощью krunner (Alt+F2), но немного по-другому: /tmp/script </dev/null lr-x------ 1 fidel fidel 64 июн 6 12:33 /proc/self/fd/0 -> /dev/null NOPIPE а это уже как вариант использования для исправления данной баги. (Но думаю что надо создать еще и для kde.)
(Ответ для Sergey V Turchin на комментарий #2) > (Ответ для Ivan Alekseev на комментарий #1) > > Из терминала приложение запускается с нормальной скоростью: > > $ appinstall > Он зачем-то запускает > epm installed > для каждого из поддерживаемых им приложений. А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe на stdin?
Created attachment 13457 [details] Патч исправляющий долгий запуск из меню в KDE Явное указание stdin=subprocess.DEVNULL исправило ситуацию с долгим запуском appinstall из меню в KDE. Патч прилагаю.
(Ответ для Vitaly Lipatov на комментарий #6) > А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe > на stdin? Смысл такого поведения рабочего окружения KDE на данный момент мне не понятен.
(Ответ для Mikhail Tergoev на комментарий #8) > (Ответ для Vitaly Lipatov на комментарий #6) > > А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe > > на stdin? > > Смысл такого поведения рабочего окружения KDE на данный момент мне не > понятен. Это поведение излишне умного epm, который сильно завязан на окружение терминала и рассчитан на терминал. Спасибо за патч.
appinstall-1.4.2-alt1 -> sisyphus: Tue Jun 13 2023 Andrey Cherepanov <cas@altlinux> 1.4.2-alt1 - Used /dev/null as stdin for prevent epm hang (thanks Mikhail Tergoev) (ALT #43747).