Qual è la differenza tra / usr / lib / systemd / system e / etc / systemd / system?


43

Prima che tutti i file di unità fossero presenti, /etc/systemd/system/ma ora alcuni vengono visualizzati in /usr/lib/systemd/system(<- su CentOS o /lib/systemd/system<- su Debian / Ubuntu), qual è la differenza tra queste cartelle?

Risposte:


38

Questa domanda ha già una risposta in man 7 file-hierarchycui viene fornito con systemd (esiste anche una versione online ):

        /etc
           System-specific configuration.
 (…)
 VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
       /usr
            Vendor-supplied operating system resources. 
            Usually read-only, but this is not required. Possibly 
            shared between multiple hosts. This directory should not
            be modified by the administrator, except when installing 
            or removing vendor-supplied packages.

Fondamentalmente, i file spediti in pacchetti scaricati dal repository di distribuzione vanno in /usr/lib/systemd/. Le modifiche apportate dall'amministratore di sistema (utente) entrano in /etc/systemd/system/.

Le unità specifiche del sistema sostituiscono le unità fornite dai fornitori. Utilizzando i drop-in, è possibile sovrascrivere solo parti specifiche dei file di unità, lasciando il resto al fornitore (i drop-in sono disponibili sin dall'inizio di systemd, ma sono stati correttamente documentati solo nella v219; vedere man systemd.unit).


20

sfondo

Se guardi la pagina man man systemd.unitha una tabella che spiega le differenze. Questo proviene da un sistema CentOS 7.x.

   UNIT LOAD PATH
          Unit files are loaded from a set of paths determined during 
          compilation, described in the two tables below. Unit files found 
          in directories listed earlier override files with the same name 
          in directories lower in the list.

           Table 1.  Load path when running in system mode (--system).
           ┌────────────────────────┬─────────────────────────────┐
           │Path                    │ Description                 │
           ├────────────────────────┼─────────────────────────────┤
           │/etc/systemd/system     │ Local configuration         │
           ├────────────────────────┼─────────────────────────────┤
           │/run/systemd/system     │ Runtime units               │
           ├────────────────────────┼─────────────────────────────┤
           │/usr/lib/systemd/system │ Units of installed packages │
           └────────────────────────┴─────────────────────────────┘

Quando dicono "pacchetti installati" si riferiscono a tutto ciò che è stato installato tramite un RPM. Lo stesso può essere assunto anche per Debian / Ubuntu dove un file DEB sarebbe il "pacchetto installato".

NOTA: la tabella sopra da un sistema Debian / Ubuntu è leggermente diversa.

 Table 1.  Load path when running in system mode (--system).
       ┌────────────────────┬─────────────────────────────┐
       │Path                │ Description                 │
       ├────────────────────┼─────────────────────────────┤
       │/etc/systemd/system │ Local configuration         │
       ├────────────────────┼─────────────────────────────┤
       │/run/systemd/system │ Runtime units               │
       ├────────────────────┼─────────────────────────────┤
       │/lib/systemd/system │ Units of installed packages │
       └────────────────────┴─────────────────────────────┘

Analizzando /usr/lib/systemd/system

Puoi dire quali pacchetti possiedono i file di unità in /usr/lib/systemd/systemquesto modo su un sistema CentOS / Fedora / RHEL:

$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64

Analizzando /etc/systemd/system

Se facciamo lo stesso contro /etc/systemd/system, non ci aspetteremmo di trovare file di proprietà di un RPM (che è il caso del mio sistema CentOS 7.x):

$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$

Valori anomali

Tieni presente che potresti trovare file randagi occasionali sotto /usr/lib/systemd/system, come con Virtualbox (vboxadd *):

$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package

Ce ne sono altri

conclusioni

L'aspettativa è che si /usr/lib/systemd/systemtratti di una directory che dovrebbe contenere solo file di unità di sistema che sono stati inseriti dal gestore pacchetti (YUM / DNF / RPM / APT / etc).

I file in /etc/systemd/systemvengono inseriti manualmente dall'operatore del sistema per le installazioni di software ad hoc che non sono in forma di pacchetto. Ciò include installazioni di software di tipo tarball o script sviluppati in casa.


3
Ero riluttante a fare clic su questo risultato google perché ero curioso di sapere /lib/systemd/system vs. /usr/lib/systemd/system. Sono contento di aver trovato questa risposta.
Bruno Bronosky,

1
Esecuzione di una definizione del servizio in /etc/systemd/systemgenera un errore se si mascherarlo: Failed to execute operation: Invalid argument; systemd tenta di sostituire il file con un collegamento simbolico a / dev / null. Non dire questa risposta non è corretta, solo qualcosa da ricordare.
Mrten,

@BrunoBronosky Debian attualmente utilizza entrambi /lib/systemd/system e /usr/lib/systemd/system , pertanto, ho posto la domanda separatamente unix.stackexchange.com/questions/550001/…
pevik
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.