Яка різниця між / usr / lib / systemd / system та / etc / systemd / system?


43

Якщо раніше були всі файли файлів, /etc/systemd/system/але деякі з них відображаються в /usr/lib/systemd/system(<- на CentOS або /lib/systemd/system<- на Debian / Ubuntu), яка різниця між цими папками?

Відповіді:


38

На це питання вже дано відповідь, в man 7 file-hierarchyякому йде systemd (також є онлайн-версія ):

        /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.

В основному, файли, що надсилаються в пакети, завантажені з дистрибутиву дистрибутива /usr/lib/systemd/. Зміни, здійснені системним адміністратором (користувачем), входять /etc/systemd/system/.

Специфічні для системи блоки замінюють блоки, що постачаються постачальниками. Використовуючи вбудовані файли, ви можете замінити лише певні частини файлів одиниць, а решту залишити постачальнику (плагіни доступні з самого початку створення системи, але були належним чином задокументовані лише у v219; див. man systemd.unit).


20

Фон

Якщо ви подивитеся на сторінку чоловіка, у man systemd.unitнеї є таблиця, яка пояснює відмінності. Це з системи 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 │
           └────────────────────────┴─────────────────────────────┘

Коли вони кажуть "встановлені пакети", вони посилаються на все, що було встановлено через RPM. Те ж саме можна припустити і для Debian / Ubuntu, а також де DEB-файл буде "встановленим пакетом".

ПРИМІТКА: наведена вище таблиця в системі Debian / Ubuntu дещо відрізняється.

 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 │
       └────────────────────┴─────────────────────────────┘

Аналіз /usr/lib/systemd/system

Ви можете сказати, яким пакетам /usr/lib/systemd/systemналежить, у якому файлі одиниці є такий у системі 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

Аналіз /etc/systemd/system

Якщо ми зробимо те саме проти /etc/systemd/system, ми очікуємо, що ми не знайдемо файлів, що належать RPM (що насправді має місце в моїй системі CentOS 7.x.):

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

Випускники

Майте на увазі, що ви можете виявити випадкові файли бродячих файлів під /usr/lib/systemd/system, наприклад, з 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

Є й інші.

Висновки

Очікується, що /usr/lib/systemd/systemце каталог, який повинен містити лише файли системних одиниць, які були розміщені туди менеджером пакунків (YUM / DNF / RPM / APT / тощо).

Файли /etc/systemd/systemвкладаються сюди вручну оператором системи для спеціальних установок програмного забезпечення, які не є пакетом. Сюди можна віднести установки програмного забезпечення типу tarball або домашні сценарії.


3
Я не хотів , щоб натиснути цей результат Google , тому що мені було цікаво /lib/systemd/system VS. /usr/lib/systemd/system. Я радий, що знайшов цю відповідь.
Бруно Броноський

1
Розміщення визначення служби в /etc/systemd/systemгенерує помилку, якщо ви маскуєте її Failed to execute operation: Invalid argument:; systemd намагається замінити файл символьним посиланням на / dev / null. Не кажучи, що ця відповідь невірна, просто щось запам'ятати.
Mrten

@BrunoBronosky Debian фактично використовує і те /lib/systemd/system й інше, і/usr/lib/systemd/system тому я задав питання окремо unix.stackexchange.com/questions/550001/…
pevik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.