LINUX.ORG.RU

как автоматически активизировать systemd unit-файл при установке RPM

 , , ,


0

1

Приветствую,

Создал свой rpm, в состав которой также входит unit-файл описывающий systemd сервис. При установке rpm, данный файл копируется в /usr/lib/systemd/system, однако чтобы активировать сервис, все равно нужно сделать systemctl enable my_service.

Хочу исправить свой my_package.spec файл так, чтобы сервис активировался автоматически. Погуглив, добавил:

%post
%systemd_post my_service.service

Но это не помогает. Что еще нужно сделать или %systemd_post неверный подход?

Спасибо!

★★
Ответ на: комментарий от amm

Не советуют активировать сервисы при установке, но если очень хочется, то можно сделать через preset файлы

Почитал, добавил /usr/lib/systemd/system-preset/99-default-myapp.preset, где прописал:

enable myapp.service

После рестарта:

% systemctl status myapp.service
... vendor preset: disabled ...

Судя по man systemd.preset, мой preset-файл будет прочитан и применен самым последним, но очевидно это не происходит.

В /usr/lib/systemd/system-preset есть еще:

85-display-manager.preset

90-default.preset

90-epel.preset

90-systemd.preset

99-default-disable.preset

99-default-myapp.preset

Что еще я забыл?

cruz7 ★★
() автор топика

В Ubuntu любят так делать. Как же мешает иногда.

kerneliq ★★★★★
()
Ответ на: комментарий от amm

Активировать сервис руками после установки и настройки.

:-) Жаль что предмет «Логика» исключен из школьной программы. Цель моего вопроса как раз в том, чтобы не делать «ручных» манипуляций по активизации сервиса.

cruz7 ★★
() автор топика

Если ты посмотришь определение макроса systemd_post с помощью rpm --eval '%{systemd_post}', то увидишь, что он раскрывается в вызов systemctl preset. Чтобы preset активировал сервис, в юнит файле надо указать

[Install]
WantedBy=multi-user.target
iliyap ★★★★★
()
Ответ на: комментарий от iliyap

WantedBy у меня было в unit-файле изначально.

cruz7 ★★
() автор топика
Ответ на: комментарий от amm

Если твой файл лежит после 99-default-disable.preset, то почему ты ожидаешь, что он сработает?

https://www.freedesktop.org/software/systemd/man/systemd.preset.html говорит что

All preset files are sorted by their filename in lexicographic order …

т.е. логично предположить что мой файл 99-default-myapp.preset будучи лексикографически самым последним в приоритете 99, будет обработан самым последним для данного приоритета.

Не прав?

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Прав. И это значит, что твой файл будет обработан после 99-default-disable.preset. Посмотри примеры 1 и 4 в мане.

amm ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.