Как правило, все, что в /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=
.