क्या है / usr / स्थानीय / बिन?


85

आज से पहले, मैंने टर्मिनल का उपयोग एक सीमित सीमा तक निर्देशिकाओं में स्थानांतरित करने और touchकमांड का उपयोग करके फ़ाइलों की तारीखों को बदलने के लिए किया है । मैक पर एक मज़ेदार स्क्रिप्ट स्थापित करने और chmod 755बाद में इसे निष्पादन योग्य बनाने के लिए फ़ाइल होने के बाद मुझे टर्मिनल की पूर्ण सीमा का एहसास हुआ ।

मैं जानना चाहता हूं कि /usr/local/binहालांकि, क्या है। /usr/, मुझे लगता है, कंप्यूटर का उपयोगकर्ता है। मुझे यकीन नहीं है कि /local/वहाँ क्यों है, यद्यपि। यह स्पष्ट रूप से स्थानीय कंप्यूटर के लिए खड़ा है, लेकिन चूंकि यह कंप्यूटर (या एक सर्वर) पर है, क्या यह वास्तव में आवश्यक होगा? /usr/binठीक नहीं होगा ?

और क्या है /bin? इस क्षेत्र का उपयोग आमतौर पर टर्मिनल पर स्क्रिप्ट स्थापित करने के लिए क्यों किया जाता है?

जवाबों:


77

/usr/local/bin उन प्रोग्रामों के लिए है जो एक सामान्य उपयोगकर्ता चला सकता है।

  • /usr/localपदानुक्रम सिस्टम व्यवस्थापक जब सॉफ्टवेयर स्थानीय स्तर पर स्थापित करने के द्वारा उपयोग के लिए है।
  • सिस्टम सॉफ़्टवेयर अपडेट होने पर इसे अधिलेखित होने से सुरक्षित होना चाहिए।
  • इसका उपयोग उन कार्यक्रमों और डेटा के लिए किया जा सकता है जो होस्ट के समूह के बीच साझा करने योग्य हैं, लेकिन इसमें नहीं पाए जाते हैं /usr
  • स्थानीय रूप से स्थापित सॉफ़्टवेयर को /usr/local/ usr के बजाय भीतर रखा जाना चाहिए जब तक कि इसे सॉफ़्टवेयर को बदलने या अपग्रेड करने के लिए स्थापित नहीं किया जा रहा हो /usr

यह स्रोत एक गहरे स्तर पर फाइलसिस्टम पदानुक्रम मानक को समझाने में मदद करता है।

आपको यह लेख/usr/local/bin रोचक के उपयोग और दुरुपयोग पर भी मिल सकता है ।


जब तक इसे "usr" में सॉफ्टवेयर को बदलने या अपग्रेड करने के लिए स्थापित नहीं किया जा रहा है?
पचेरियर

63

/ usr /, मुझे लगता है कि कंप्यूटर का उपयोगकर्ता है।

बंद करे।

यूनिक्स एक बहु-उपयोगकर्ता ऑपरेटिंग सिस्टम के रूप में शुरू हुआ, इसलिए यह "उपयोगकर्ता," यह " उपयोगकर्ताओं ", बहुवचन नहीं है।

एटी एंड टी यूनिक्स सिस्टम वी रिलीज़ 4 (एसवीआर 4) से पहले 1988 में अपने उपयोगकर्ता प्रबंधन टूल के साथ उपयोगकर्ता घर निर्देशिकाओं को बनाने में चूक करने के साथ बाहर आया था /home, पारंपरिक स्थान था। /usrdirectory आपकी $HOMEनिर्देशिका सिस्टम III बॉक्स /usr/jfwपर हो सकती है ।

/usrयह भी तो अब के रूप में निहित,, /usr/bin, /usr/lib, आदि अनुभव से पता चला कि घर निर्देशिका अलग-अलग रखने अच्छा सिस्टम प्रबंधन अभ्यास था, इसलिए साथ /homeSVR4 में नीति परिवर्तन, यह सब कुछ पीछे छोड़ दिया अब हम में संबंधित के रूप में के बारे में सोच /usr

/usrअभी भी नाम पर पकड़ रखने का एक अच्छा कारण था: जो कुछ पीछे छूट गया था, वे फ़ाइलें थीं जिन्हें उपलब्ध होने की आवश्यकता नहीं थी जब तक कि सिस्टम सामान्य इंटरैक्टिव उपयोग का समर्थन करने के लिए पर्याप्त रूप से बूट नहीं किया गया था। कहने का तात्पर्य यह है कि जो पीछे रह गया था वह था OS का उपयोगकर्ता- समर्थित भाग। इसका मतलब यह था कि यह /usrएक अलग भौतिक मात्रा पर हो सकता है, जो कि 92 एमबी हार्ड डिस्क के दिनों में वाशिंग मशीन के आकार को वापस करना अच्छी बात थी ।

प्रारंभिक यूनिक्स सिस्टम कोर ओएस फाइलों को बाहर रखने के लिए सावधान थे /usrताकि आप अभी भी एकल-उपयोगकर्ता मोड में बूट कर सकें, भले ही /usrकिसी कारण के लिए वॉल्यूम अनमाउंट था। रूट वॉल्यूम में /usrवॉल्यूम को ऑनलाइन वापस लाने के लिए पर्याप्त टूल थे ।

कई यूनिक्स की झलक अब इस पुराने डिजाइन सिद्धांत की उपेक्षा के बाद से यहां तक कि छोटे एम्बेडेड सिस्टम दोनों पारंपरिक जड़ मात्रा फ़ाइलों के लिए पर्याप्त जगह और के सभी /usrएक भी volume.³ रेड हैट एंटरप्राइज लिनक्स, सोलारिस और Cygwin सिमलिंक पर /binकरने के लिए /usr/binऔर /libकरने के लिए /usr/libइतना है कि वहाँ कोई अब इन निर्देशिकाओं के बीच कोई अंतर नहीं है।

... / स्थानीय / ... स्पष्ट रूप से स्थानीय कंप्यूटर के लिए खड़ा है ...

हाँ। यह इस तथ्य को संदर्भित करता है कि जिन फाइलों के तहत /usr/localउस एकल प्रणाली को विशेष रूप से माना जाता है। फाइलें जो किसी भी तरह से जेनेरिक हैं, उन्हें कहीं और रहना चाहिए।

इसकी जड़ें भी हैं जिस तरह से यूनिक्स सिस्टम आमतौर पर दशकों पहले इस्तेमाल किया गया था जब यह सब मानकीकृत था। फिर, उस समय के हार्ड डिस्क भारी थे, वास्तव में महंगे थे, और आज के मानकों से बहुत कम संग्रहीत हैं। डिस्क पर पैसे और जगह बचाने के लिए, यूनिक्स बॉक्सों से भरी एक कंप्यूटर लैब अक्सर /usrएनएफएस या किसी अन्य नेटवर्क फाइल शेयरिंग प्रोटोकॉल में से अधिकांश को साझा करती है, इसलिए प्रत्येक बॉक्स की अपनी निरर्थक कॉपी नहीं होती थी। एक के लिए विशिष्ट फाइलें बॉक्स के नीचे जाना होगा /usr/local, जो से एक अलग वॉल्यूम होगा /usr

यह ऐतिहासिक धरोहर है कि /usr/localहाथ से इंस्टॉल किए जाने पर यह अभी भी अधिकांश तृतीय-पक्ष यूनिक्स सॉफ़्टवेयर के लिए डिफ़ॉल्ट है । इस तरह के अधिकांश सॉफ्टवेयर आपको पैकेज को कहीं और स्थापित करने की अनुमति देते हैं, लेकिन गैर-विकल्प बनाने से, आपको सुरक्षित डिफ़ॉल्ट मिल जाता है, जो अन्य सामान्य स्थापित स्थानों पर अधिक विशिष्ट उद्देश्यों के साथ हस्तक्षेप नहीं करता है।

इसके बजाय कहीं और सॉफ़्टवेयर स्थापित करने के अच्छे कारण हैं। GNU बैश सोर्स कोडbash से Apple के macOS टीम का निर्माण तब होता है, जब वे कहते हैं । वे स्थापना उपसर्ग के रूप में उपयोग करते हैं , डिफ़ॉल्ट को ओवरराइड करते हैं , ताकि बैश समाप्त हो जाए ।//usr/local/bin

एक अन्य उदाहरण है जिस तरह से पुराने Linux सिस्टम ने अपने GUI सॉफ्टवेयर को /usr/X11R6अलग किया, उसे पारंपरिक कमांड लाइन और cursesआधारित सॉफ्टवेयर से अलग रखने के लिए । यह केवल .⁵ के /usr/localसाथ डिफ़ॉल्ट उपसर्ग को ओवरराइड करके किया गया था/usr/X11R6

और / बिन क्या है?

यह "बाइनरी" के लिए छोटा है, जिसका इस संदर्भ में मतलब है "एक फाइल जो कि सादा पाठ नहीं है।" अधिकांश ऐसी फाइलें एक यूनिक्स बॉक्स पर निष्पादन योग्य होती हैं , इसलिए ये दो शब्द कुछ हलकों में पर्याय बन गए हैं। ("कृपया मुझे आरएचईएल 7, फ्रेड के लिए एक बाइनरी बनाएँ।")

एक यूनिक्स बॉक्स पर पाठ फ़ाइलें कहीं और रहते हैं: /etc, /usr/include, /usr/share, आदि

एक बार, यहां तक ​​कि शेल स्क्रिप्ट्स - जो कि सादे पाठ फाइलें हैं - को binनिर्देशिकाओं से बाहर रखा गया था , लेकिन यह रेखा भी धुंधली हो गई है। आज, binनिर्देशिका में आमतौर पर किसी भी तरह की निष्पादन योग्य फ़ाइल होती है, चाहे सख्ती से "बाइनरी" हो या नहीं


फ़ुटनोट्स और पाचन :

  1. SVR4 से पहले उपयोगकर्ता प्रबंधन उपकरणों की आदिम प्रकृति का मतलब था कि यह HOME=/usr/$NAMEयोजना केवल एक सम्मेलन के रूप में प्रलेखित थी, बजाय एक डिफ़ॉल्ट के रूप में सॉफ्टवेयर टूल द्वारा लागू किए जाने के।

    आप इसे " एटी एंड टी यूनिक्स सिस्टम वी रिलीज़ 3.2 सिस्टम एडमिनिस्ट्रेटर गाइड " के पेज 4-8 पर देख सकते हैं : यहां आप /usr/$NAMEएसवीआर 4 के बाहर आने से पहले यूनिक्स के आखिरी प्रमुख संस्करण में एटी एंड टी को पुरानी योजना की सिफारिश करते हुए देखते हैं ।

    सिस्टम प्रशासकों के लिए पुरानी यूनिक्स प्रणालियों में यह काफी आम था कि एक अलग योजना का चयन किया जाए जिससे उन्हें अधिक समझ में आए। लोग होने के नाते, इसका मतलब है कि बहुत सी विभिन्न योजनाओं का आविष्कार हुआ।

    /home/$NAMEमानक बनने से पहले मैंने एक योजना बनाई थी /u/$NAME

    एक अन्य प्रणाली मैं इस्तेमाल किया 1990 के दशक में इतने सारे उपयोगकर्ताओं है कि वे एक ही भौतिक वॉल्यूम पर सभी घर निर्देशिका फिट नहीं कर सकता था, इसलिए वे की तरह एक योजना के लिए इस्तेमाल किया /u1/$NAME, /u2/$NAME, और इतने पर, के रूप में मुझे याद है। आपके घर की निर्देशिका किस डिस्क पर समाप्त हुई थी, यह उस समय की बात है जब आपके खाते के निर्माण के समय उस पर जगह थी।

  2. जब आप बूट करते हैं तो आप मैक-बॉक्स को एकल-उपयोगकर्ता मोड में बूट कर सकते हैं Cmd-S। स्क्रीन काली हो जाने के बाद, आपको लाइट ग्रे टेक्स्ट दिखाई देता है। यह टर्मिनल के नीचे चलने जैसा है, लेकिन यह पूरी स्क्रीन पर काम करता है क्योंकि GUI अभी तक शुरू नहीं हुआ है।

    सावधान, आप के रूप में चल रहे हैं root

    सिंगल-यूज़र रूट प्रॉम्प्ट पर "एक्जिट" टाइप करें सिंगल-यूज़र मोड छोड़ने के लिए और मल्टी-यूज़र GUI मोड में बूट करना जारी रखें।

  3. यूनिक्स ओएस जो अभी भी महत्वपूर्ण एकल-उपयोगकर्ता मोड फ़ाइलों को रखने के लिए प्रकट होते/usr हैं, वास्तव में, इन दिनों ऐसा नहीं कर सकते हैं। मैंने एक बार /usrएक ZFS वॉल्यूम में स्थानांतरित करके एक FreeBSD 9 बॉक्स को अनबूट किया । मैं यह भूल गया कि ZFS-on-root सुविधाओं ने FreeBSD 10 तक लैंडिंग नहीं की, एक पकड़ 22 का निर्माण किया : OS /usrको माउंट करने के लिए फ़ाइलों की आवश्यकता थी /usr!

    यह काफी बुरा था, लेकिन अगर फ्रीबीएसडी 9 अभी भी अपने एकल-उपयोगकर्ता बूट सामान को बाहर रख /usrरहा था, तो मैं इसे जगह में तय कर सकता था। चूँकि यह /usrअविवेकी होने के साथ एकल-उपयोगकर्ता मोड में भी बूट नहीं होगा , स्पष्ट रूप से उस परंपरा का किसी भी तरह से उल्लंघन किया गया था। मुझे उस सिस्टम को फिर से वापस लाने के लिए एक बचाव सीडी से बूट करना पड़ा।

  4. यह वह जगह भी है जहां हम प्राप्त करते हैं /usr/share: यह उन फ़ाइलों को अलग करता है जिन्हें विभिन्न प्रोसेसर प्रकारों के साथ यूनिक्स बक्से के बीच भी साझा किया जा सकता है। आमतौर पर, टेक्स्ट फाइलें: मैन पेज, डिक्शनरी आदि।

  5. "X11R6" उस समय जब यह सम्मेलन प्रचलित था तब लिनक्स GUIs को कम करने वाले X विंडो सिस्टम के संस्करण को संदर्भित किया गया था। Linux सिस्टम आम तौर पर समय X11R6 से बदला गया के बारे में GUI सॉफ्टवेयर अलग-अलग रखने बंद कर दिया X.Org

  6. असली /etcयूनीक्स के साथ आने से बचने के लिए मूल यूनिक्स प्रणालियों ने अपनी मूल शेल स्क्रिप्ट को रखा /bin


3
वॉशिंग मशीन की वह तस्वीर पसंद आई!
asgs

@Warren, सिस्टम III से पहले उल्लेखनीय ओएस क्या हैं?
20

@Pacerier: UNIX संस्करण 1 7 के माध्यम से, UNIX / 32V, 1BSD 4BSD के माध्यम से जिसमें 4BSD के डॉट रिलीज़ शामिल नहीं हैं (4.1BSD AT & T Unix System III के साथ मोटे तौर पर समकालीन थे), और PWM Unix। स्रोत । आप क्यों पूछते हैं, और इसका इस सवाल से क्या लेना-देना है?
वॉरेन यंग

@Warren, ठीक है, वे किसी भी तरह
डिफैक्टो

@Pacerier: मैं अपने दावे के साथ खड़ा रहूंगा: सिस्टम V से पहले कोई "मानक" नहीं था, केवल सम्मेलनों और स्थानीय प्रथाओं।
वॉरेन यंग

9

मैं सामान्य रूप से संरचना संबंधी प्रश्नों के लिए विकिपीडिया का उल्लेख करने की सलाह दूंगा, यह मूल बातें कवर करेगा।

हालांकि, सीधे अपने प्रश्न का उत्तर देने के लिए:

  • / usr, शिथिल, गैर-महत्वपूर्ण प्रणाली पुस्तकालय और निष्पादनयोग्य है
  • / usr / स्थानीय, फिर से गैर-सिस्टम लाइब्रेरी और निष्पादन योग्य के लिए शिथिल है

यही कारण है कि आप दोनों के बीच समान संरचना पाते हैं; / Usr / {, स्थानीय /} {बिन, sbin, lib}। शेल के लिए नया होने के कारण, {} के शेल के साथ यह बिट शेल विस्तार है। निष्पादित करने का प्रयास करें

ls -ld /usr/{,local/}{bin,sbin,lib}

आपके स्थानीय शेल से यह देखने के लिए कि यह कैसे काम करता है।


9

/usr/local/bin नवीनतम Mac OS की UNIX-esque जड़ों को दिखाता है (इसके आधार पर BSD)।

  • "usr" यूनिक्स सिस्टम रिसोर्सेज के लिए है। यह वह स्थान है जहां सिस्टम प्रोग्राम और लाइब्रेरी संग्रहीत हैं।
  • "स्थानीय" उन संसाधनों का प्रतिनिधित्व करता है जिन्हें मानक वितरण के साथ नहीं भेजा गया था और आमतौर पर, प्रति साइट के आधार पर संकलित और बनाए रखा जाता है।
  • "बिन" द्विआधारी संकलित निष्पादनयोग्य का प्रतिनिधित्व करता है।

यह यूनिक्स से लिनक्स और बीएसडी के शुरुआती कार्यान्वयन के बाद से रूपांतरित हो गया है, लेकिन सम्मेलन रुक गया है। अब, /usr/bin"मुख्य" या मुख्य कार्यक्रमों और पुस्तकालयों के /usr/local/binलिए होगा जहां ऐड-ऑन और गैर-महत्वपूर्ण कार्यक्रमों और पुस्तकालयों के लिए होगा।


12
मैं बर्लिन की दीवार गिरने के तुरंत बाद से यूनिक्स का उपयोग कर रहा हूं, और मैंने आज तक "यूआरआर" के लिए "यूनिक्स सिस्टम रिसोर्स" विस्तार कभी नहीं सुना; यह एक बैक्रोनियम है। "usr" को इसका नाम मिला क्योंकि यह वह जगह है जहाँ उपयोगकर्ता होम निर्देशिका मूल रूप से स्थित थे। यही है, यदि आपके पास एक पुराने सिस्टम III बॉक्स पर लॉगिन था, तो आपकी प्रारंभिक कार्यशील निर्देशिका /usr/nzwulfinडिफ़ॉल्ट रूप से होगी। एक और आम योजना। SVR4 /homeस्कीम को संभालने से पहले, था /u। एक प्रणाली जिसका मैंने पहले इस्तेमाल किया था, उसमें बहुत सारे उपयोगकर्ता थे जिन्हें उपयोगकर्ता फ़ाइल भंडारण के लिए कई भौतिक डिस्क की आवश्यकता थी, इसलिए उनके पास कुछ चीजें थीं /u/d5/tangent
वॉरेन यंग

3
@Warren मैंने इसे या तो नहीं सुना था और थोड़ी देर के लिए Google के चारों ओर पोक किया; यह लग रहा है काफी कुछ backronyms देखते हैं जैसे
माइकल Mrozek

4

/usr/local/bin निष्पादन योग्य फ़ाइलों के लिए सबसे लोकप्रिय डिफ़ॉल्ट स्थान है, विशेष रूप से खुले स्रोत वाले।

हालांकि यह यकीनन एक खराब विकल्प है, जैसा कि यूनिक्स सिस्टम पर, /usrनब्बे के दशक के आरंभ में मानकीकृत किया गया था, जिसमें फाइलों का एक पदानुक्रम शामिल था जो ऑपरेटिंग सिस्टम से संबंधित हैं और इस प्रकार उस ओएस का उपयोग करके कई प्रणालियों द्वारा साझा किया जा सकता है।

चूंकि ये फ़ाइलें स्थिर हैं, /usrफ़ाइल सिस्टम को केवल पढ़ने के लिए माउंट किया जा सकता है। /usr/localइस मानक को पराजित कर रहा है क्योंकि यह डिज़ाइन स्थानीय द्वारा गैर-साझा है, इसलिए स्थानीय संकलन की अनुमति देने के लिए पढ़ने-लिखने की आवश्यकता है और यह ऑपरेटिंग सिस्टम का हिस्सा नहीं है। /opt/localइसके बजाय बहुत बुरा कुछ नहीं चुना गया था ...


1

मैं आपको /usr/localव्यावसायिक कार्यक्रमों के लिए उपयोग करने की सलाह देता हूं जिन्हें आप Mathematica के रूप में स्थापित कर सकते हैं। जब आप सेट करते हैं तो इसे अपने विभाजन में रखें। जब आप अपने OS को अपग्रेड करते हैं, तो यह विभाजन परेशान नहीं होगा और आपको इसकी सामग्री को फिर से स्थापित नहीं करना पड़ेगा। इसलिए इसका उपयोग उस सामान के लिए करें, जिसे आप OS अपग्रेड के बीच रखना चाहते हैं।

अलग से, सुनिश्चित करें कि आप /homeइस कारण से भी अपना विभाजन दें।


0

यह उत्तर सहायक भी हो सकता है।

/ Usr / स्थानीय

इसके पीछे मूल विचार यह /usr/localथा कि इसके अलावा हर मशीन पर एक अलग ('स्थानीय') / usr 'निर्देशिका /usrहो, जो कहीं और से सिर्फ पढ़ने के लिए ही मुहिम शुरू की जा सकती है। की संरचना की प्रतिलिपि बनाता है /usr

इन दिनों, /usr/localव्यापक रूप से एक अच्छी जगह के रूप में माना जाता है जिसमें स्व-संकलित या तीसरे पक्ष के कार्यक्रम रखे जाते हैं। /usr/localपदानुक्रम सिस्टम व्यवस्थापक जब सॉफ्टवेयर स्थानीय स्तर पर स्थापित करने के द्वारा उपयोग के लिए है। सिस्टम सॉफ़्टवेयर अपडेट होने पर इसे अधिलेखित होने से सुरक्षित होना चाहिए।

इसका उपयोग उन कार्यक्रमों और डेटा के लिए किया जा सकता है जो होस्ट के समूह के बीच साझा किए जाते हैं, लेकिन इसमें नहीं पाए जाते हैं /usr। स्थानीय स्तर पर स्थापित सॉफ्टवेयर के भीतर रखा जाना चाहिए /usr/localबजाय /usrजब तक यह बदलने के लिए या में सॉफ्टवेयर को अपग्रेड करने के लिए स्थापित किया जा रहा है /usr

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.