Как правильно заменить файл служебной единицы пакета пользовательской версией?

echo $(grep -oP '^\s*JAVA_HOME=\K.*' /etc/Symantec.conf)"/java -version"
    /opt/symantec/java/jdk1.6.0_27/jre/bin/java -version
1
26.03.2020, 21:25
1 ответ

По умолчанию systemd будет использовать служебный файл из /usr/lib/systemd/system/daemon.service. Однако, если он находит служебную единицу в /etc/systemd/system/daemon.service, она автоматически использует эту единицу и игнорирует единицу по умолчанию.

В общем,

cp /usr/lib/systemd/system/daemon.service /etc/systemd/system/daemon.service

и внесите необходимые изменения в файл /etc/systemd/system/daemon.service.

Альтернативный подход:

Если вам это не нравится или нужны лишь небольшие правки, вы можете запустить systemctl edit daemon.serviceи внести изменения там. Эти изменения будут объединены со служебной единицей, которую systemd попытается запустить, независимо от того, находится ли единица в /usr/lib/...или /etc/....

Плюсы:

Если файл модуля, предоставленный пакетом -, будет обновлен, эти изменения будут автоматически объединены с вашими настройками.

Минусы:

Если файл модуля, предоставленный пакетом -, будет обновлен, эти изменения будут автоматически объединены с вашими настройками. (Без шуток. Иногда этого очень не хочется.)

Это некрасиво. -systemd создает каталог /etc/systemd/system/daemon.overrides.d/, в котором расположены ваши изменения. Это немного прикольно, и его легко пропустить, поэтому он может вас укусить в будущем.

Вы не можете заменить вещи таким образом, только добавить что-то новое, потому что переопределения объединяются в единицу. (Хотя я не уверен в этом, я в последний раз использовал это немного назад.)

3
19.03.2021, 02:32

Теги

Похожие вопросы