Могу ли я безопасно редактировать файл модуля Nginx Systemd (/lib/systemd/system/nginx.service), предоставленный пакетом nginx?

398
amn

Я установил Nginx apt install nginxна хосте Debian 9.2. Это прекрасно работает, но, глядя в журнал Systemd journalctl -u nginx, я получаю смешное:

Запущен Высокопроизводительный веб-сервер и обратный прокси-сервер.

Оказывается, Systemd повторно использует поле «Описание» в разделе «[Unit]» файла модуля, и достаточно уверенно, что /lib/systemd/system/nginx.serviceоно говорит:

Описание = высокопроизводительный веб-сервер и обратный прокси-сервер

Это шутка тех, кто поддерживает Debian Nginx или кого-то еще? Даже в документации Systemd по адресу https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Description= говорится:

Плохие примеры: «высокопроизводительный легкий HTTP-сервер» (слишком общий)

Поэтому я думаю отредактировать поле «Описание», чтобы придать ему более описательное значение, но я не уверен, как это будет работать, когда я буду обновлять пакет nginx как часть обновления или обновления системы - буду ли я предупрежден конфликта, если установлена ​​другая версия nginx.service? Я знаю, что это относится к файлам конфигурации пакета, это также относится к файлам других типов из пакета?

0

1 ответ на вопрос

1
grawity

Как правило, все, что в /usrили /libдолжно рассматриваться только для чтения, и особенно все, что было установлено пакетом. (Есть редкие неудачные исключения.) Если файл не был специально отмечен в пакете, обновления просто перезапишут его.

Рекомендуемый способ изменения различных системных файлов - скопировать их в /etc. Например, файл модуля /etc/systemd/system/nginx.serviceбудет заменять файл в / usr / lib. (Он даже переопределит автоматически сгенерированные сервисные единицы init.d.) Используйте инструмент, systemd-deltaчтобы увидеть различия всех переопределенных юнитов.

Ну, я говорю «рекомендуется», потому что он также работает с такими вещами, как правила udev и тому подобное ... Но еще лучший способ - переопределить только части блока с помощью «вставляемых» файлов /etc/systemd/system/nginx.service.d/foobar.conf- для этого нужны только две строки, раздел имя [Unit]и ваш новый Description=параметр; остальное будет унаследовано от / usr / lib.

В обоих случаях вы можете systemctl edit [--full]просто открыть редактор и внести свои изменения.

Наконец, общая опция Debian - указать системе упаковки (dpkg) избегать обновления определенного файла, где бы он ни находился. Вы можете «перенаправить» настоящий файл в другое место, используя dpkg-divert. Другие дистрибутивы имеют схожие черты, например, pacman Arch использует NoExtract=и NoUpgrade=.

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