Bug 53246

Summary: Не добавляет alias при установке пользовательского сервиса
Product: Sisyphus Reporter: Sergey V Turchin <zerg>
Component: systemdAssignee: Alexey Shabalin <shaba>
Status: REOPENED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aris, arseny, nbr, proskur, rider, shaba, zerg
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 42742, 46625, 53313, 53312    

Description Sergey V Turchin 2025-02-27 17:29:32 MSK
При установке пакета krdp не добавляет alias в имеющийся
/usr/lib/systemd/user/plasma-workspace@.target.d/
из пакета plasma-workspace.
Comment 1 Sergey V Turchin 2025-02-27 17:38:24 MSK
Без этого krdp не может запуститься.
Comment 2 Alexey Shabalin 2025-02-27 20:36:44 MSK
так добавьте, в чем проблема?
Comment 3 Sergey V Turchin 2025-02-28 10:05:01 MSK
(Ответ для Alexey Shabalin на комментарий #2)
> так добавьте, в чем проблема?
Проблема определиться. Сейчас попробую.

А автоматом он не должен сделаться? В unit-файлах секция Install должна обрабатываться при установке пакета или нет?
Comment 4 Sergey V Turchin 2025-02-28 16:03:00 MSK
?
Comment 5 Sergey V Turchin 2025-03-01 08:53:41 MSK
И пропал...
Comment 6 Sergey V Turchin 2025-03-03 10:19:31 MSK
В конкретном случае у меня зависит функциональность от этого алиаса.
Если придётся отслеживать это глобально во всех пакетах самостоятельно, это может быть проблемой.

Нужно хотя бы формально определить, кто этим будет официально заниматься, systemd или мантейнер конечного пакета?
Comment 7 Arseny Maslennikov 2025-03-19 15:33:52 MSK
Когда говорят о юнитах systemd, alias означает символьную ссылку на какой-то юнит.

Если некоторому юниту типа target дописать в [Install] директиву Alias= в *.target.d, то на этот таргет будут созданы симлинки. Зачем десятки симлинков на plasma-workspace@.target? Особенно тем, кто не использует KDE.
Comment 8 nbr 2025-03-19 16:22:17 MSK
>Без этого krdp не может запуститься.

C каким сообщением?
Comment 9 Антон Мидюков 2025-03-19 16:23:26 MSK
Почему нельзя прописать в /usr/lib/systemd/user/plasma-workspace@.target
Wants=сервис1 сервис2 ... сервисN
?
Comment 10 Sergey V Turchin 2025-03-20 13:21:51 MSK
(Ответ для Arseny Maslennikov на комментарий #7)
> Если некоторому юниту типа target дописать в [Install] директиву Alias= в
> *.target.d, то на этот таргет будут созданы симлинки
Не будут. Об этом баг.
Comment 11 Sergey V Turchin 2025-03-20 13:23:53 MSK
(Ответ для Антон Мидюков на комментарий #9)
> Почему нельзя прописать
Прописано, но безрезультатно. krdp-6.3.2-alt1 из-за бага не запускается.
Comment 12 Sergey V Turchin 2025-03-20 13:24:53 MSK
(Ответ для nbr на комментарий #8)
> >Без этого krdp не может запуститься.
> C каким сообщением?
"хрен тебе, а не запускаемый сервис".
Comment 13 Sergey V Turchin 2025-03-20 13:27:57 MSK
(Ответ для Sergey V Turchin на комментарий #11)
> (Ответ для Антон Мидюков на комментарий #9)
> > Почему нельзя прописать
> Прописано, но безрезультатно. krdp-6.3.2-alt1 из-за бага не запускается.
По имени alias-а, а именно его пытается запустить программа.
Comment 14 Alexey Shabalin 2025-04-10 17:57:11 MSK
Мне кажется, вы все напутали с alias.
За создание симлинка в
/usr/lib/systemd/user/plasma-workspace@.target.d/
отвечает WantedBy в [Install].
А там прописано
WantedBy=plasma-workspace.target
Заметьте, без "@". Поэтому непонятно, почему симлинк ищете в другом месте.
Насколько понимаю, plasma-workspace@.target Ваша придумка, и как с этим жить придумывать вам.
Comment 15 Sergey V Turchin 2025-04-11 09:37:12 MSK
(Ответ для Alexey Shabalin на комментарий #14)
> Насколько понимаю, plasma-workspace@.target Ваша придумка
Нет, апстримная.
Comment 16 Sergey V Turchin 2025-04-11 09:45:17 MSK
(Ответ для Alexey Shabalin на комментарий #14)
> А там прописано
> WantedBy=plasma-workspace.target
> Заметьте, без "@". Поэтому непонятно, почему симлинк ищете в другом месте.
Т.е. симлинк должен создаться в /usr/lib/systemd/user/plasma-workspace.target.d/ ?
Comment 17 Sergey V Turchin 2025-04-11 09:55:17 MSK
(Ответ для Sergey V Turchin на комментарий #16)
> Т.е. симлинк должен создаться в /usr/lib/systemd/user/plasma-workspace.target.d/ ?
Там он тоже не создаётся.
Comment 18 Sergey V Turchin 2025-04-11 10:01:22 MSK
(Ответ для Антон Мидюков на комментарий #9)
> Почему нельзя прописать в /usr/lib/systemd/user/plasma-workspace@.target
> Wants=сервис1 сервис2 ... сервисN
> ?
Огласите весь список, пожалуйста. ;-)
Comment 19 Sergey V Turchin 2025-04-11 10:09:40 MSK
(Ответ для Alexey Shabalin на комментарий #14)
> Насколько понимаю, plasma-workspace@.target Ваша придумка
У меня такого нет.
Конкретно "plasma-workspace@.target.d/" слямзил у Fedora
https://src.fedoraproject.org/rpms/plasma-workspace/blob/rawhide/f/plasma-workspace.spec#_480
Comment 20 Arseny Maslennikov 2025-04-11 12:40:45 MSK
Кажется, я начинаю понимать.

Автор нижеследующего патча на plasma-workspace ненавидит дислексиков.

> % git show --stat 39ecc45e5bdf8cf167b7b128e2c3473069bd5119
> commit 39ecc45e5bdf8cf167b7b128e2c3473069bd5119
> Author: David Edmundson <kde@davidedmundson.co.uk>
> Date:   Tue Jan 25 22:29:31 2022 +0000
> 
>     [systemd] Fix logout issues
>     
>     It is important that we end plasma-core.target plasma-workspace.target
>     and graphical-session.target when we log out. graphical-session in turn
>     closes all other apps and daemons and prevents restarts.
>     Handling it in systemd gives the least racey option.
>     
>     graphical-session used to be hanlded in the plasma-ksmserver service
>     file, but this was removed in 5.24 in a refactor where it caused issues
>     for Xwayland restarting.
>     
>     This patch reintroduces the sentinel programs to close down our target,
>     which in turn take down the other targets. It also removes a complicated
>     use of templates that in hindsight didn't really solve anything.
>     
>     BUG: 448492
>     
>     Testing done:
>     - logout of wayland shows all targets as inactive, logging in
>     repeatedly works smoothly
>      - logout of X11 behaves the same.
>     - calling systemctl --user stop plasma-kwin_wayland.service closes the
>     session
>      - killing ksmserver on wayland does not close the session
>      - killing ksmserver on X does
> 
>  startkde/startplasma.cpp                         | 4 ++--
>  startkde/systemd/CMakeLists.txt                  | 4 +++-
>  startkde/systemd/plasma-core.target              | 1 +
>  startkde/systemd/plasma-workspace-wayland.target | 4 ++++
>  startkde/systemd/plasma-workspace-x11.target     | 4 ++++
>  startkde/systemd/plasma-workspace.target         | 8 ++++++++
>  startkde/systemd/plasma-workspace@.target        | 6 ------
>  7 files changed, 22 insertions(+), 9 deletions(-)

После этого коммита вместо
  plasma-workspace@x11.target
они кладут
  plasma-workspace-x11.target
и об этом нигде не написали, и в т. ч. startkde/systemd/README.md не обновили, чтобы никто не догадался.
И, вероятно, авторам krdp не рассказали.
Comment 21 Arseny Maslennikov 2025-04-11 12:48:46 MSK
(In reply to Arseny Maslennikov from comment #20)
> После этого коммита вместо
>   plasma-workspace@x11.target
> они кладут
>   plasma-workspace-x11.target
> и об этом нигде не написали, и в т. ч. startkde/systemd/README.md не
> обновили, чтобы никто не догадался.
> И, вероятно, авторам krdp не рассказали.
Короче:
1) Надо выяснить, как в нашей плазме называется её target, по буквам.
2) Узнав имя target, надо вернуться к оригинальному вопросу — что должно находиться в [Install] у krdp.
3) Разобравшись с krdp, стоит тогда определить, кто кому должен при встрече говорить Q ^W^W^W^W прописывать Wants=/WantedBy=.
   IMHO, здесь существует иерархия более базовых (чаще переиспользуемых) служб и менее базовых, более прикладных (реже переиспользуемых). Соответственно, информацию о зависимости более-базового и менее-базового стоит хранить вместе с менее-базовым.
   Например, из тройки pipewire, plasma-workspace и krdp самым базовым будет pipewire, а самым прикладным — krdp. Соответственно, стоит в krdp написать
  [Install]WantedBy=(plasma-workspace)
, а в plasma-workspace (усл.) написать
  [Install]WantedBy=(pipewire)
, где в скобках стоят правильные юниты или их совокупности.
Comment 22 Sergey V Turchin 2025-04-11 13:31:57 MSK
А давайте без условностей, более просто и конкретно, чтобы понятно было.

В текущем виде для
/usr/lib/systemd/user/plasma-kcminit.service
из пакета plasma-workspace должен создаваться симлинк на Alias?
Comment 23 Alexey Shabalin 2025-04-11 14:51:04 MSK
Разбирайтесь в этом в рамках бага на krdp.
systemd все делает, о чем ему говорят.
Comment 24 Sergey V Turchin 2025-04-11 15:05:31 MSK
kdrp тут нипричем.

Прошу отвтеить: в текущем виде для
/usr/lib/systemd/user/plasma-kcminit.service
из пакета plasma-workspace должен создаваться симлинк на Alias?
Comment 25 Alexey Shabalin 2025-04-11 16:47:36 MSK
Если сделаешь systemctl enable, то для Alias сделаются симлинки.
Ищи их в /etc. В /lib или /usr/lib их конечно никто делать не будет, эти каталоги для дистрибутивов, для админов /etc.
Comment 26 Arseny Maslennikov 2025-04-11 19:38:40 MSK
(In reply to Alexey Shabalin from comment #23)
(In reply to Sergey V Turchin from comment #24)
(вздыхая) кот из дому — мыши в пляс.

(In reply to Sergey V Turchin from comment #22)
> А давайте без условностей, более просто и конкретно, чтобы понятно было.
> 
> В текущем виде для
> /usr/lib/systemd/user/plasma-kcminit.service
> из пакета plasma-workspace должен создаваться симлинк на Alias?
Извините, но "должен создаваться симлинк на Alias" — это _не_ конкретно и _не_ понятно — а значит, и не просто. В общем-то, именно из-за того, что здесь звучит слишком много непонятных словосочетаний, мы с вами и мусолим эту багу неделями. :(

Судя по https://invent.kde.org/plasma/plasma-workspace :
  plasma-workspace-wayland.target
  └─R: plasma-workspace.target
    └─R: plasma-core.target
      └─W: plasma-kcminit.service
см. startkde/systemd/*.
Старт plasma-workspace.target уже притягивает plasma-kcminit.service, не требуя для этого никаких симлинков.
Стало ли так понятнее? Годится ли ответ? Если нет, тогда лучше перефразируйте вопрос. :)
Comment 27 Arseny Maslennikov 2025-04-11 19:40:33 MSK
(In reply to Alexey Shabalin from comment #25)
> Если сделаешь systemctl enable

Кстати, https://systemd.io/DESKTOP_ENVIRONMENTS/ подкрался незаметно. Как мы в свете Sisyphus default disable preset вообще добиваемся того, чтобы такие лаунчеры для DE работали?
У гномеров ж то же самое.
Comment 28 Yuri N. Sedunov 2025-04-11 19:58:51 MSK
(Ответ для Arseny Maslennikov на комментарий #27)
> (In reply to Alexey Shabalin from comment #25)
> > Если сделаешь systemctl enable
> 
> Кстати, https://systemd.io/DESKTOP_ENVIRONMENTS/ подкрался незаметно. Как мы
> в свете Sisyphus default disable preset вообще добиваемся того, чтобы такие
> лаунчеры для DE работали?
> У гномеров ж то же самое.

Поподробнее, пожалуйста. Что у гномеров не должно работать.

Я пока заметил, что после обновления systemd отвалился suspend:

$ SS suspend
Operation inhibited by "aris" (PID 2486 "gnome-session-b", user aris), reason is "user session inhibited".
User aris is logged in on tty2.
Please retry operation after closing inhibitors and logging out other users.
'systemd-inhibit' can be used to list active inhibitors.
Alternatively, ignore inhibitors and users with 'systemctl suspend -i'.

То есть я из гнома не могу заснуть слегка, потому что я в гноме.