Grundsätzlich gilt, dass alles, was in /usr
oder /lib
nur als schreibgeschützt gilt, und insbesondere alles, was von einem Paket installiert wurde. (Es gibt seltene unglückliche Ausnahmen.) Wenn eine Datei nicht speziell im Paket markiert wurde, wird sie durch Upgrades einfach überschrieben.
Die empfohlene Methode zum Ändern verschiedener systemd-Dateien ist das Kopieren in /etc
. Beispielsweise /etc/systemd/system/nginx.service
überschreibt die Unit-Datei die Datei in / usr / lib. (Es werden sogar die automatisch generierten init.d-Serviceeinheiten überschrieben.) Verwenden Sie das Tool systemd-delta
, um die Unterschiede aller überschriebenen Einheiten anzuzeigen.
Nun, ich sage "empfohlen", weil es auch mit udev-Regeln und so funktioniert ... Aber eine noch bessere Methode ist es, nur Teile einer Einheit mit "Drop-In" -Dateien zu überschreiben /etc/systemd/system/nginx.service.d/foobar.conf
- dies erfordert nur zwei Zeilen, den Abschnitt Name [Unit]
und Ihre neue Description=
Einstellung; Der Rest wird von / usr / lib vererbt.
In beiden Fällen können Sie systemctl edit [--full]
einfach einen Editor öffnen und Ihre Änderungen vornehmen.
Schließlich besteht die generische Debian-Option darin, dem Verpackungssystem (dpkg) mitzuteilen, dass es nicht erforderlich ist, eine bestimmte Datei zu aktualisieren, unabhängig davon, wo sie sich befindet. Sie können die echte Datei mit "anderswo" umleiten dpkg-divert
. Andere Distributionen haben ähnliche Funktionen, z. B. verwendet Pac's NoExtract=
und NoUpgrade=
.