РЕШЕНО: Вывод приложения за пределы системной иерархии

После одного из последних апдейтов отвалилась коллекция Amarok, и вообще этот плеер скорее мёртв, чем жив, но потеря всех рейтингов и статистики коллекции меня совсем не устраивает. Проблему с отвалом коллекции я починил, но задумался о перспективах.

Вот что я придумал и сделал: вынес Amarok и его главные зависимости в отдельный каталог в хомяке, написал скрипт, который должным образом формирует переменные PATH, LD_LIBRARY_PATH и XDG_DATA_DIRS, и запускает Amarok. Но он не запускается, вылетает ошибка:

Amarok could not find any plugins. This indicates an installation problem.

В терминале вот что:

amarok(1856): Couldn't start knotify from knotify4.desktop: "Could not find service 'knotify4.desktop'."

amarok(1856) KNotification::slotReceivedIdError: Error while contacting notify daemon "The name org.kde.knotify was not provided by any .service files"

При этом файл knotify4.desktop лежит в каталоге deps/kdebase-runtime-17.08.3-4/usr/share/kde4/services/, а каталог deps/kdebase-runtime-17.08.3-4/usr/share передаётся через export в переменную XDG_DATA_DIRS, но как видите этого недостаточно.

Посоветуйте, гуру Линуксов, что сделать с моим велосипедом, чтоб он поехал.
Покажите содержимое knotify4.desktop, судя по ошибке, должен быть запущен сервис org.kde.knotify, но он не запускается.
Вполне возможно и не запустится, потому как в KDE5 ушли от knotify к kdialog, а запуск одновременно двух демонов нотификации может привести к неожиданным проблемам.
Можно попробовать сделать chroot в каталог с deps/kdebase-runtime-17.08.3-4, но это уже пляски с бубном.
52th
Покажите содержимое knotify4.desktop

Если поскипать комменты и описания, то вот:

Exec=knotify4
X-DBUS-ServiceName=org.kde.knotify
X-DBUS-StartupType=Unique
X-KDE-StartupNotify=false

Проверил в виртуалке на Linux Mint, там да, запускается и работает процесс knotify4, и по-моему работал раньше на моей системе, когда я запускал Амарок (но это не точно).

У пакетов kdelibs и kdebase-runtime в каталогах etc/dbus-1/system.d есть текстовые конфиги. Я так думаю, надо их как-то задействовать, а как?
Так, всё фигня, проблема была в service-файлах. Я скопировал их из каталогов kderuntime-meta и amarok в ~/.kde4/share/kde4/services и servicetypes, и Амарок теперь запускается, ура! Но не играет. Нажимаю на play и ничего не происходит, даже кнопка не отжимается обратно. Ругань на Phonon:

$ Object::connect: No such signal QDBusAbstractInterface::DeviceAdded(QString)
Object::connect: No such signal QDBusAbstractInterface::DeviceRemoved(QString)
realPath called with a relative path '5.50.0-1/usr/share/mime/', please fix
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (0,-1) are not possible
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Could not parse stylesheet of widget 0x55685abdaab0
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Playlist dock/Playlist::Dock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
QWidget::setMinimumSize: (Media Sources dock/BrowserDock) Negative sizes (200,-1) are not possible
Calling appendChild() on a null node does nothing.
QTimeLine::setPaused: Not running
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
QTimeLine::setPaused: Not running
Теперь всё работает. Просто надо было ещё сделать export QT_PLUGIN_PATH с кучей каталогов.

Вот бы ещё избавиться от надобности копировать service-файлы в хомяк. Но судя по всему, у kde нет отдельной переменной для пути к этим файлам.
Единственная проблема - при попытке открыть окно диагностики Амарок падает. Наверное, не хватает каких-то частей kde4.
 
Зарегистрироваться или войдите чтобы оставить сообщение.