আহা হ্যাঁ এটি একটি খুব বিভ্রান্তিমূলক অংশ যদি আপনি কোনও সময়ের জন্য ইউনিক্সগুলি নিয়ে কাজ করেছেন। একটি মান রয়েছে যা বেশিরভাগ ইউনিক্স এফএইচএস অনুসরণ করতে "চেষ্টা" করে - ফাইলসাইম হায়ারার্কি স্ট্যান্ডার্ড ।
প্রদত্ত আমি প্রাথমিকভাবে রেড হ্যাট ভিত্তিক ডিস্ট্রোস ব্যবহার করি আমি ফেডোরা, সেন্টোস এবং আরএইচইএল লিনাক্স ডিগ্রোসের জন্য এফএইচএস গ্রহণের সাথে সর্বাধিক পরিচিত । তবে আমি ডেবিয়ান এবং বিএসডি ভিত্তিক ডিস্ট্রোসও ব্যবহার করেছি এবং ফাইল সিস্টেমের ভিত্তিতে জিনিসগুলি যেখানে রাখা হয়েছে তার দিক থেকে এগুলি আলাদা নয়।
এখন আপনার প্রশ্ন। আমি এফএইচএস নথিটি একবার দেখে নেব , যা এই ডিরেক্টরি কাঠামোগুলি আলগাভাবে পরিচালনা করে। সাধারণভাবে:
ডিরেক্টরি - /lib
প্রয়োজনীয় শেয়ার্ড লাইব্রেরি এবং কার্নেল মডিউল রয়েছে।
উদ্দেশ্য: / lib ডিরেক্টরিতে সিস্টেমটি বুট করার জন্য এবং রুট ফাইল সিস্টেমে কমান্ডগুলি চালনার জন্য প্রয়োজনীয় ভাগ করা লাইব্রেরি চিত্র রয়েছে। / বিন এবং / এসবিনে বাইনারি দ্বারা।
নোট 1: ভাগ করা লাইব্রেরিগুলি যেগুলি কেবলমাত্র / ইউএসআর বাইনারিগুলির জন্য প্রয়োজনীয় (যেমন কোনও এক্স উইন্ডো বাইনারি) অবশ্যই / লিবিলে থাকা উচিত নয়। / বিন এবং / এসবিনে বাইনারি চালানোর জন্য শুধুমাত্র ভাগ করা লাইব্রেরিগুলি এখানে থাকতে পারে।
দ্রষ্টব্য 2: / lib এর প্রাথমিক উদ্দেশ্যটি প্রদত্ত হ'ল ডিরেক্টরিগুলি / বিন এবং / sbinগুলিতে স্থাপন করা সরঞ্জামগুলির জন্য গ্রন্থাগারগুলি অন্তর্ভুক্ত করা উচিত, / lib এর লাইব্রেরিগুলি 32-বিট বা 64-বিট হতে পারে।
উদাহরণস্বরূপ (ফেডোরা 14 64-বিট সিস্টেম)
$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
আমার / লাইব থেকে ফাইলগুলির নমুনা এখানে দেওয়া
./libpam.so.0.82.2: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./libplc4.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./libidn.so.11.6.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./upstart/telinit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/runlevel: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/shutdown: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/reboot: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./libdb-4.8.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./firmware/mixart/miXart8.elf: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, not stripped
./libtinfo.so.5.7: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
ডিরেক্টরি - /lib<qual>
বিকল্প ফর্ম্যাট প্রয়োজনীয় শেয়ারড লাইব্রেরি (alচ্ছিক)। এগুলি ডিরেক্টরি / lib32, / lib64, ইত্যাদি হবে etc.
উদ্দেশ্য: সিস্টেমে / lib ডিরেক্টরিতে এক বা একাধিক বৈকল্পিক থাকতে পারে যা পৃথক গ্রন্থাগারগুলির জন্য একাধিক বাইনারি ফর্ম্যাট সমর্থন করে। এটি সাধারণত 64-বিট বা 32-বিট সমর্থনের জন্য এমন সিস্টেমে ব্যবহৃত হয় যা একাধিক বাইনারি ফর্ম্যাট সমর্থন করে তবে একই নামের লাইব্রেরিগুলির প্রয়োজন require
দ্রষ্টব্য: এই ক্ষেত্রে, / lib32 এবং / lib64 গ্রন্থাগার ডিরেক্টরি হতে পারে এবং / lib এর মধ্যে একটিতে একটি সিমিলিংক।
ডিরেক্টরি - /usr/lib
প্রোগ্রামিং এবং প্যাকেজগুলির জন্য গ্রন্থাগারসমূহ।
উদ্দেশ্য: / usr / lib এর মধ্যে অবজেক্ট ফাইল, গ্রন্থাগার এবং অভ্যন্তরীণ বাইনারি রয়েছে যা ব্যবহারকারী বা শেল স্ক্রিপ্ট দ্বারা সরাসরি সম্পাদন করার উদ্দেশ্যে নয়।
নোট 1: বিবিধ আর্কিটেকচার-স্বতন্ত্র অ্যাপ্লিকেশন-নির্দিষ্ট স্ট্যাটিক ফাইল এবং উপ-ডিরেক্টরিগুলি অবশ্যই / usr / শেয়ারে স্থাপন করতে হবে।
অ্যাপ্লিকেশনগুলি / usr / lib এর অধীনে একটি একক উপ-ডিরেক্টরি ব্যবহার করতে পারে। যদি কোনও অ্যাপ্লিকেশন একটি উপ-ডিরেক্টরি ব্যবহার করে তবে অ্যাপ্লিকেশন দ্বারা একচেটিয়াভাবে ব্যবহৃত সমস্ত আর্কিটেকচার নির্ভর ডেটা অবশ্যই সেই উপ-ডিরেক্টরিতে থাকা উচিত।
দ্রষ্টব্য 2: উদাহরণস্বরূপ, পার্ল 5 মডিউল এবং লাইব্রেরির জন্য পার্ল 5 উপ-ডিরেক্টরি।
ডিরেক্টরি - /usr/lib<qual>
বিকল্প ফর্ম্যাট লাইব্রেরি (alচ্ছিক)।
উদ্দেশ্য: /usr/lib<qual>
বিকল্প বাইনারি বিন্যাসের জন্য / usr / lib হিসাবে একই ভূমিকা পালন করে, প্রতীকী লিঙ্কগুলি ব্যতীত /usr/lib<qual>/sendmail
এবং /usr/lib<qual>/X11
প্রয়োজনীয় নয়।
দ্রষ্টব্য: যে ক্ষেত্রে / usr / lib /usr/lib<qual>
একই এবং এক ( অন্যটির প্রতীকী লিঙ্ক) এই ফাইলগুলি এবং প্রতি-অ্যাপ্লিকেশন সাব-ডিরেক্টরিগুলি বিদ্যমান থাকবে।
TLDR;
সাধারণভাবে:
যদি কোনও লাইব্রেরি থাকে যেগুলি / bin বা / sbin ডিরেক্টরিগুলির মধ্যে একটি এক্সিকিউটেবলের দ্বারা প্রয়োজনীয় হয়, সেই লাইব্রেরিগুলি / lib * ডিরেক্টরিতে থাকা উচিত।
যদি ব্যবহারের প্রোগ্রাম এবং প্যাকেজগুলির জন্য লাইব্রেরি থাকে তবে তারা / usr / lib / * এ যায়। যদি কোনও এক্সিকিউটেবল থাকে যা একটি নির্দিষ্ট গ্রন্থাগারের প্রয়োজন হয়, তবে এই এক্সিকিউটেবলগুলি ব্যবহারকারীরা সরাসরি বা মূল দ্বারা ডাকা হবে না বলে মনে করা হয়, তারা / usr / Libxec এ যায়।