Created attachment 10116 [details] пример уведомления Стенды для тестирования: * alt-education-10-kde-i586 * alt-education-10-kde-x86-64 * alt-kworkstation-10-x86-64 Версия пакета: plasma5-discover-packagekit-5.23.5-alt1 Шаги, воспроизводящие ошибку: 1) установить plasma5-discover и plasma5-discover-packagekit 2) запустить plasma5-discover 3) перейти во вкладку установленные и открыть страницу любого установленного приложения (к примеру virtualbox) 4) сверху справа нажать кнопку запустить Результат Приложения из alt-репозитория (sisyphus, p10 и т.д.) не запускается через discover, в самом discover внизу появляется уведомление: "GetFiles not supported by backend" Если запустить discover в терминале, то в терминале отобразится: Transaction error: "GetFiles not supported by backend" PackageKit::Transaction(0x55956dfa69f0) Ожидаемый результат: Приложения из alt-репозиториев можно запустить из discover
plasma5-discover для запуска приложений ищет в файлах пакета desktop-файлы и исполняемые файлы. Для этого используется функция GetFiles из packagekit: https://git.altlinux.org/gears/p/plasma5-discover.git?p=plasma5-discover.git;a=blob;f=discover/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp;h=c4a4396786cb8d85433e02df004671b1a50cb363;hb=0c57b82284df0d327b44538d4d9528b85faf61aa#l199 У packagekit ранее реализация GetFiles была, но она была удалена из-за требования отвязаться от приватных интерфейсов apt: https://git.altlinux.org/gears/p/packagekit.git?p=packagekit.git;a=commitdiff;h=6db26c8e5c168af20a5307ce953ed9ef1a2ca6ca Теперь для реализации GetFiles в packagekit нужны интерфейсы в apt для получения списка файлов в пакете. В связи с этим перевешиваю баг на мэйнтейнеров apt.
насколько я помню (но могу ошибаться) наш apt ничего не знает про desktop файлы в пакете. Нельзя ли packagekit научить получать списки файлов установленного пакета из librpm ?
(Ответ для Anton Farygin на комментарий #2) > насколько я помню (но могу ошибаться) наш apt ничего не знает про desktop > файлы в пакете. > apt знает про все файлы в пакете. Зная все файлы, найти из них с определённым суффиксом - элементарно. Вот этого списка всех файлов в пакете и не хватает. > Нельзя ли packagekit научить получать списки файлов установленного пакета из > librpm ? Можно. Но придётся тащить и копировать всю логику по поиску базы данных rpm и работе с ней через librpm из apt ещё и в packagekit. Неразумно такое делать когда в apt готово почти всё.
в хешах apt нет информации обо всех файлах, иначе бы работал фокус с apt-get install <файл> Он работает только для бинарей.
@imz, @ldv - прошу принять решение о том, будем ли мы делать нужный для packagekit интерфейс в apt или выкручиваться каким-то другим способом через librpm ?
В pkglist есть все файлы, только если он bloat, иначе в нём только такие файлы, которые участвуют в зависимостях. Все файлы есть только в rpm headers, которые ещё скачать надо.
Apt позволяет через приватные API получить список файлов установленного пакета.
(In reply to Aleksei Nikiforov from comment #7) > Apt позволяет через приватные API получить список файлов установленного > пакета. А вы хотите ограничиться только установленными пакетами?
Эта функция используется в plasma5-discover только для запуска приложений из установленных пакетов, поэтому работы этой функции только для установленных пакетов - достаточно.
(In reply to Dmitry V. Levin from comment #8) > (In reply to Aleksei Nikiforov from comment #7) > > Apt позволяет через приватные API получить список файлов установленного > > пакета. > > А вы хотите ограничиться только установленными пакетами? Раз речь только про установленные, то несложно вытащить упомянутый приватный API наружу, в rpm-независимом виде. В прошлый раз, когда в итоге было решено выкинуть эту поддержку из packagekit, мы не сообразили, что архитектура для этого в libapt есть. (И, возможно, уже аналогичный публичный API есть в проектах apt-rpm или Debian. В Debian вроде нет, раз там какие-то пляски через вызов dpkg.) Т.е. как не сообразили: я с этим аспектом libapt был плохо знаком, а никто больше альтернативную реализацию не предложил. Теперь я вижу два уровня, напрмиер, DepsList() vs PRCO() (provides-requires-conflicts-obsoletes, переименовал его в последнем релизе для большей похожести на другие проекты, а именно apt-rpm). Подумаю и над списком файлов.
Ваня, спасибо. У нас тут сроки горят и было бы неплохо эти изменения притащить побыстрее.
Для справки, в версии plasma5-discover 5.23.5-alt2 и новее кнопка запуска была временно убрана: https://git.altlinux.org/gears/p/plasma5-discover.git?p=plasma5-discover.git;a=commit;h=8306e9945d3b23ab045d29be927f1ac523f87b6d