/ Usr / lib / systemd / sistem ve / etc / systemd / system arasındaki fark nedir?


43

Tüm birim dosyaları içeri girmeden önce /etc/systemd/system/fakat şimdi bazıları /usr/lib/systemd/system(CentOS'ta /lib/systemd/system< veya Debian / Ubuntu'da <) görünmüyor , bu klasörler arasındaki fark nedir?

Yanıtlar:


38

Bu soru zaten man 7 file-hierarchysystemd ile gelen cevaplanmıştır (ayrıca çevrimiçi versiyon da vardır ):

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

Temel olarak, dağıtım havuzundan indirilen paketlerde bulunan dosyalar içine girilir /usr/lib/systemd/. Sistem yöneticisi (kullanıcı) tarafından yapılan değişiklikler girilir /etc/systemd/system/.

Sisteme özgü birimler satıcılar tarafından sağlanan birimleri geçersiz kılar. Eklentileri kullanarak, birim dosyalarının yalnızca belirli bölümlerini geçersiz kılabilir, gerisini satıcıya bırakabilirsiniz (sisteme girmenin başlangıcından beri açılanlar mevcuttur, ancak yalnızca v219'da doğru bir şekilde belgelenmiştir; bkz. man systemd.unit).


20

Arka fon

Man sayfasına bakarsanız man systemd.unitaradaki farkları açıklayan bir tablo vardır. Bu bir CentOS 7.x sistemindendir.

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

"Kurulu paketler" deyince RPM aracılığıyla kurulmuş herhangi bir şeyden bahsediyorlar. Aynısı, DEB dosyasının "kurulu paket" olduğu Debian / Ubuntu için de varsayılabilir.

NOT: Yukarıdaki tablo Debian / Ubuntu sisteminden biraz farklıdır.

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

Analiz /usr/lib/systemd/system

/usr/lib/systemd/systemBir CentOS / Fedora / RHEL sisteminde hangi paketlerin hangi dosyalara sahip olduğunu kendiniz söyleyebilirsiniz :

$ 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

Analiz /etc/systemd/system

Aynı şeyi yaparsak, /etc/systemd/systembir RPM'ye ait hiçbir dosya bulamayacağımızı umarız (Aslında CentOS 7.x sistemimde geçerli olan budur.):

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

Aykırı

/usr/lib/systemd/systemVirtualbox (vboxadd *) ile olduğu gibi ara sıra başıboş dosyaları bulabileceğinizi unutmayın :

$ 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

Diğerleri var.

Sonuçlar

Beklenti, /usr/lib/systemd/systemyalnızca paket yöneticisinin (YUM / DNF / RPM / APT / etc) yerleştirdiği sistemd birim dosyalarını içermesi gereken bir dizin olmasıdır.

Dosyalar /etc/systemd/systemburada paket şeklinde olmayan geçici yazılım kurulumları için sistem operatörü tarafından elle yerleştirilir. Bu, tarball tipi yazılım kurulumlarını veya evde yetiştirilen komut dosyalarını içerir.


3
Ben merak ettim çünkü bu google sonucu tıklayın isteksiz olduğunu /lib/systemd/system vs. /usr/lib/systemd/system. Bu cevabı bulduğuma sevindim.
Bruno Bronosky

1
Bir servis tanımını yerleştirmek, /etc/systemd/systemmaskelerseniz bir hata oluşturur Failed to execute operation: Invalid argument:; systemd, dosyayı / dev / null dizinine bir link ile değiştirmeye çalışır. Bu cevabı yanlış söylememek, sadece hatırlanması gereken bir şey.
Mrten

@BrunoBronosky Debian aslında her ikisini de kullanıyor /lib/systemd/system ve /usr/lib/systemd/system bu yüzden soruyu ayrı ayrı sordum unix.stackexchange.com/questions/550001/…
pevik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.