/ Usr / lib / systemd / system এবং / etc / systemd / system এর মধ্যে পার্থক্য কী?


43

সমস্ত ইউনিটের ফাইলগুলি আগে ছিল /etc/systemd/system/কিন্তু এখন কিছু /usr/lib/systemd/system(<সেন্টোসে, বা /lib/systemd/system<- ডেবিয়ান / উবুন্টুতে) এ প্রদর্শিত হচ্ছে, এই ফোল্ডারগুলির মধ্যে পার্থক্য কী?

উত্তর:


38

এই প্রশ্নের উত্তর ইতিমধ্যে দেওয়া হয়েছে man 7 file-hierarchyযা সিস্টেমেড সহ আসে ( অনলাইনে সংস্করণটিও রয়েছে ):

        /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/। সিস্টেম অ্যাডমিনিস্ট্রেটর (ব্যবহারকারী) দ্বারা সম্পাদিত পরিবর্তনগুলি goুকে পড়ে /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 │
           └────────────────────────┴─────────────────────────────┘

যখন তারা "ইনস্টল করা প্যাকেজগুলি" বলছেন তারা আরপিএমের মাধ্যমে ইনস্টল করা যে কোনও কিছু উল্লেখ করছেন। একইভাবে ডেবিয়ান / উবুন্টুর জন্যও ধরে নেওয়া যেতে পারে যেখানে কোনও ডিইবি ফাইল হ'ল "ইনস্টলড প্যাকেজ"।

দ্রষ্টব্য: একটি ডেবিয়ান / উবুন্টু সিস্টেমের উপরের সারণীটি কিছুটা আলাদা।

 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সেন্টোস / ফেডোরা / আরএইচইএল সিস্টেমে কোন প্যাকেজের মালিকানাধীন কোন ইউনিট ফাইলগুলি তা বলতে পারেন :

$ 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আমরা আরপিএমের মালিকানাধীন কোনও ফাইল (যা সত্যই আমার সেন্টোস x.x সিস্টেমের ক্ষেত্রে দেখা যায় না) খুঁজে পেতে আশা করব:

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

outliers

মনে রাখবেন যে আপনি /usr/lib/systemd/systemভার্চুয়ালবক্স (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প্যাকেজের আকারে নয় এমন অ্যাড-হক সফ্টওয়্যার ইনস্টলেশনগুলির জন্য সিস্টেমগুলির অপারেটর দ্বারা ফাইলগুলি ম্যানুয়ালি এখানে স্থাপন করা হয়। এর মধ্যে টার্বল ধরণের সফ্টওয়্যার ইনস্টলেশন বা বাড়ির উত্থিত স্ক্রিপ্টগুলি অন্তর্ভুক্ত থাকবে।


3
আমি এই গুগল ফলাফলটি ক্লিক করতে নারাজ কারণ আমি /lib/systemd/system বনাম সম্পর্কে কৌতূহল ছিল /usr/lib/systemd/system। আমি খুশী আমি এই উত্তরটি পেয়েছি।
ব্রুনো ব্রোনসকি

1
একটি সেবা সংজ্ঞা স্থাপন /etc/systemd/systemকরার সময় একটি ত্রুটি উত্পন্ন যদি আপনি এটি মাস্ক: Failed to execute operation: Invalid argument; systemd ফাইলটিকে / dev / null এ একটি সিমিলিংক দিয়ে প্রতিস্থাপন করার চেষ্টা করে। এই উত্তরটি না বলা ভুল, শুধু মনে রাখার মতো কিছু।
শ্রীযুক্ত

@BrunoBronosky ডেবিয়ান আসলে উভয় ব্যবহার /lib/systemd/system এবং /usr/lib/systemd/system , তাই আমি প্রশ্ন জিজ্ঞাসা আলাদাভাবে unix.stackexchange.com/questions/550001/...
pevik
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.