Lib, lib32, lib64, libx32 और libexec के बीच अंतर


41

मेरे 64 बिट Ubuntu 13.04 सिस्टम में निम्नलिखित निर्देशिकाएं हैं /:

lib
lib32
lib64
libx32
libexec

में /usrनिर्देशिका है:

lib
lib32
libx32
libexec

ऐसा लग रहा था कि किसी खोज के साथ आसानी से उत्तर दिया जा सकता है, लेकिन मुझे ऑनलाइन कुछ भी नहीं मिला, इसके अलावा इन निर्देशिकाओं ने साझा पुस्तकालयों (लिबेक्सेक को छोड़कर) को संग्रहीत किया। लेकिन कौन सी साझा लाइब्रेरी किस फ़ोल्डर में जाती है (3232 से अधिक लीबी 32 और 64 बिट लिबेल 64 में)? क्या कोई इन सभी निर्देशिकाओं के बीच का अंतर समझा सकता है?


और बीएसडी, फेडोरा, एआईएक्स और सोलारिस की निर्देशिका संरचनाओं के लिए अपने स्वयं के मोड़ हैं।

जवाबों:


39

यदि आपने किसी भी लम्बाई के लिए यूनिक्स से निपटा है, तो हाँ यह एक बहुत ही भ्रमित करने वाला हिस्सा है। एक मानक है जो ज्यादातर यूनिक्स FHS - फाइलसिस्टम पदानुक्रम मानक का पालन करने की "कोशिश" करता है ।

यह देखते हुए कि मैं मुख्य रूप से Red Hat आधारित डिस्ट्रोस का उपयोग करता हूँ, मैं फेडोरा, CentOS और RHEL Linux डिस्ट्रोस के लिए FHS पर उनके ले जाने से सबसे अधिक परिचित हूँ । लेकिन मैंने डेबियन और बीएसडी आधारित डिस्ट्रोस का उपयोग किया है और वे सभी अलग नहीं हैं जहां चीजें रखी जाती हैं, फाइलसिस्टम वार।

अब आपके प्रश्नों के लिए। मैं एफएचएस दस्तावेज़ पर एक नज़र डालूंगा , जो इन निर्देशिका संरचनाओं को शिथिल रूप से नियंत्रित करता है। सामान्य रूप में:

निर्देशिका - /lib

आवश्यक साझा पुस्तकालय और कर्नेल मॉड्यूल शामिल हैं।

उद्देश्य: / कार्यकारी निर्देशिका में सिस्टम साझा करने और रूट फाइल सिस्टम में कमांड चलाने के लिए आवश्यक साझा लाइब्रेरी चित्र हैं, अर्थात। बायनेरिज़ द्वारा / बिन और / साइबिन में।

नोट 1: साझा लाइब्रेरी जो केवल बायनेरिज़ के लिए आवश्यक हैं / usr (जैसे कि कोई एक्स विंडो बायनेरिज़) / परिवाद में नहीं होना चाहिए। केवल बायनेरिज़ को / bin और / sbin में चलाने के लिए आवश्यक साझा लाइब्रेरी यहाँ हो सकती हैं।

Note2: / 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

यहाँ मेरे / lib से फाइलों का नमूना लिया गया है

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

वैकल्पिक प्रारूप आवश्यक साझा पुस्तकालय (वैकल्पिक)। ये निर्देशिका / lib32, / lib64 आदि होंगे।

उद्देश्य: प्रणालियों पर एक या एक से अधिक संस्करण हो सकते हैं / अलग-अलग पुस्तकालयों की आवश्यकता वाले एक से अधिक द्विआधारी प्रारूप का समर्थन करने वाली प्रणालियों पर काम करते हैं। यह आमतौर पर 64-बिट या 32-बिट सिस्टम के लिए उपयोग किया जाता है जो कई द्विआधारी स्वरूपों का समर्थन करता है, लेकिन एक ही नाम के पुस्तकालयों की आवश्यकता होती है।

नोट: इस मामले में, / lib32 और / lib64 लाइब्रेरी निर्देशिका हो सकते हैं, और उनमें से किसी एक के लिए एक सहानुभूति का परिवाद कर सकते हैं।

निर्देशिका - /usr/lib

प्रोग्रामिंग और पैकेज के लिए पुस्तकालय।

उद्देश्य: / usr / lib में ऑब्जेक्ट फ़ाइलें, लाइब्रेरीज़ और आंतरिक बायनेरीज़ शामिल हैं, जिन्हें उपयोगकर्ताओं या शेल स्क्रिप्ट द्वारा सीधे निष्पादित करने का इरादा नहीं है।

Note1: विविध वास्तुकला-स्वतंत्र अनुप्रयोग-विशिष्ट स्थिर फ़ाइलों और उपनिर्देशिकाओं को / usr / शेयर में रखा जाना चाहिए।

अनुप्रयोग एकल उपनिर्देशिका / usr / lib के तहत उपयोग कर सकते हैं। यदि कोई एप्लिकेशन उपनिर्देशिका का उपयोग करता है, तो अनुप्रयोग द्वारा विशेष रूप से उपयोग किए जाने वाले सभी आर्किटेक्चर-निर्भर डेटा को उस उपनिर्देशिका के भीतर रखा जाना चाहिए।

नोट 2: उदाहरण के लिए, पर्ल 5 मॉड्यूल और लाइब्रेरी के लिए perl5 उपनिर्देशिका।

निर्देशिका - /usr/lib<qual>

वैकल्पिक प्रारूप पुस्तकालय (वैकल्पिक)।

उद्देश्य: /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 / libexec में जाते हैं।


धन्यवाद। क्या आप स्पष्ट कर सकते हैं कि जब एक पुस्तकालय जो कि 32 बिट या 64 बिट है, उसे उसी लिबास <क्वालीफाइड फोल्डर के विपरीत परिवाद में रखा जाएगा? मुझे आपका स्पष्टीकरण नहीं मिला।
gsingh2011

/ Lib का प्राथमिक उद्देश्य उन उपकरणों के लिए पुस्तकालयों को शामिल करना है जो / bin और / sbin में हैं। यह देखते हुए कि / lib में 32-बिट और 64-बिट लाइब्रेरी दोनों का मिश्रण हो सकता है। मैं इस टिप्पणी के जवाब के रूप में अच्छी तरह से जोड़ देंगे!
SLM

हो सकता है कि TLDR अनुभाग को सबसे ऊपर रखा जाए?
केविनर्पपे नोव

1
Lib32 और libx32 में क्या अंतर है?
मिकीको रैंटलैनेन

2
libx32 x32 के लिए हैfileअंतर देखने के लिए आप इन निर्देशिकाओं में पुस्तकालयों के साथ उपयोगिता का उपयोग कर सकते हैं ।
एलिचा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.