एक स्थानीय निष्पादन योग्य कहां रखा जाना चाहिए?


62

मेरे पास पेरफ़ॉर्म संस्करण नियंत्रण क्लाइंट ( p4) के लिए एक निष्पादन योग्य है । मैं इसे नहीं रख सकता /opt/localक्योंकि मेरे पास रूट विशेषाधिकार नहीं हैं। क्या कोई मानक स्थान है, जहां इसे रखा जाना चाहिए $HOME?

क्या फ़ाइल सिस्टम पदानुक्रम में एक कन्वेंशन है जो कहता है कि स्थानीय निष्पादक / बायनेरिज़ को इसमें रखा जाना चाहिए $HOME/bin?

मुझे FHS के लिए विकिपीडिया लेख पर उल्लिखित इस तरह का सम्मेलन नहीं मिला ।

इसके अलावा, अगर वास्तव में एक कन्वेंशन है, तो क्या मुझे स्पष्ट रूप से $HOME/binनिर्देशिका के लिए रास्ता शामिल करना होगा या निर्देशिका का स्थान जो भी हो bin?

जवाबों:


64

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

यदि आप बाइनरी के एकमात्र उपयोगकर्ता हैं, तो इंस्टॉल $HOME/binकरना उपयुक्त स्थान है क्योंकि आप इसे स्वयं स्थापित कर सकते हैं और आप एकमात्र उपभोक्ता होंगे। यदि आप स्रोत से सॉफ़्टवेयर पैकेज संकलित करते हैं, तो यह आपकी $HOMEनिर्देशिका में एक आंशिक या पूर्ण स्थानीय पदानुक्रम बनाने के लिए भी उपयुक्त है । पूरा स्थानीय पदानुक्रम इस तरह दिखेगा।

  • $HOME/bin स्थानीय बायनेरिज़
  • $HOME/etc स्थानीय बायनेरिज़ के लिए होस्ट-विशिष्ट सिस्टम कॉन्फ़िगरेशन
  • $HOME/games स्थानीय खेल बायनेरिज़
  • $HOME/include स्थानीय C शीर्ष लेख फ़ाइलें
  • $HOME/lib स्थानीय पुस्तकालय
  • $HOME/lib64 स्थानीय 64-बिट लाइब्रेरी
  • $HOME/man स्थानीय ऑनलाइन मैनुअल
  • $HOME/sbin स्थानीय प्रणाली बायनेरिज़
  • $HOME/share स्थानीय वास्तुकला-स्वतंत्र पदानुक्रम
  • $HOME/src स्थानीय स्रोत कोड

जब चल रहा हो configure, तो आपको $HOMEस्थापना चूक के लिए उपसर्ग के रूप में निर्दिष्ट करके स्थापना के लिए अपने स्थानीय पदानुक्रम को परिभाषित करना चाहिए ।

./configure --prefix=$HOME

अब जब make && make installचलाया जाता है, तो संकलित बायनेरिज़, पैकेज, मैन पेज और लाइब्रेरी आपके $HOMEस्थानीय पदानुक्रम में स्थापित किए जाएंगे । यदि आपने मैन्युअल रूप से $HOMEस्थानीय पदानुक्रम नहीं बनाया है , make installतो सॉफ़्टवेयर पैकेज द्वारा आवश्यक निर्देशिकाएं बनाएंगे।

एक बार में स्थापित $HOME/bin, आप या तो जोड़ सकते हैं $HOME/binकरने के लिए अपने $PATHया बाइनरी पूर्ण का उपयोग कर फोन $PATH। कुछ वितरण डिफ़ॉल्ट रूप से $HOME/binआपके में शामिल होंगे $PATH। आप इसका परीक्षण कर सकते हैं echo $PATHऔर देख सकते हैं कि क्या $HOME/binहै, या बाइनरी को अंदर $HOME/binऔर निष्पादित कर रहा है which binaryname। यदि यह वापस आता है $HOME/bin/binaryname, तो यह डिफ़ॉल्ट रूप से आपके $ पेट में है।


5
जब तक $ HOME एक noexec माउंटेड फाइल सिस्टम पर नहीं है। / tmp / आमतौर पर noexec भी माउंट किया जाता है।
ईवानमॉ।

3
यह सही है, इसका हिस्सा फाइलसिस्टम पदानुक्रम मानक (FHS) है। pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALALHIERARCHY
पैट्रिक

29
मैं उपयोग करने की सलाह नहीं दूंगा $HOME। यह आपके घर निर्देशिका को कई निर्देशिकाओं के साथ भर देता है जिनकी आपको बिल्कुल भी दिलचस्पी नहीं है। कौन है चाहता है man, libलोगों को घर निर्देशिका में, आदि? मैं नहीं बल्कि नीचे पदानुक्रम बनाना होगा $HOME/binया $HOME/local। यह आपके घर dir में केवल दस के बजाय एक उपनिर्देशिका जोड़ता है। PATHआसानी से शामिल करने के लिए अनुकूलित किया जा सकता $HOME/bin/binया $HOME/local/bin
मार्को

18
एक विकल्प $ HOME / .local / {bin, lib, etc।} का उपयोग करना है, जैसे कि XDG बेस्ड स्पेक ( standard.freedesktop.org/basedir-spec/basedir-spec-lecest.html ) और python ( जैसे ) python.org/dev/peps/pep-0370 )
janneb

4
@ जन्नब एक्सडीजी बेस डायरेक्टरी स्पेसिफिकेशन का उल्लेख आप केवल उल्लेख के लिए करते हैं $HOME/.local/share(संस्करण 0.7, 24 नवंबर 2010)।
पायोटर डोब्रोगोस्ट

27

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

इसके पीछे विचार यह है कि वितरित सॉफ्टवेयर (जैसे कि rpmऔर debपैकेज) के साथ टकराव से बचा जाए और व्यवस्थापक को "स्थानीय" उपसर्ग पर पूर्ण शासनकाल दें।

इसका मतलब है कि एक व्यवस्थापन कस्टम संकलित सॉफ़्टवेयर को स्थापित कर सकता है, जबकि एक डिब्रो जैसे डिस्ट्रो का उपयोग करते हुए।

एफएचएस से

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

उपयोगकर्ता-विशिष्ट सॉफ़्टवेयर स्थापित करते समय, uther$HOME उपसर्ग के रूप में उपयोग करने का सुझाव देता है क्योंकि यह सुनिश्चित करता है कि आपके पास लेखन अनुमति है। व्यक्तिगत रूप से, मुझे लगता है $HOME/.localकि यह एक और अधिक सुंदर समाधान का उपयोग कर रहा है , क्योंकि यह आपके (उम्मीद) अच्छे और स्पष्ट घर निर्देशिका को अव्यवस्थित करता है!

$HOME/.local/shareपहले से ही freedesktop.org XDG बेस डायरेक्टरी स्पेसिफिकेशन में उपयोग किया जाता है , इसलिए जब आप इस पर होते हैं , तो यह $HOME/.local/binआपके लिए एक जोड़ने $PATHऔर $HOME/.local/libइत्यादि बनाने के लिए बहुत कुछ नहीं करता है।

यदि आप वास्तव में नहीं चाहते हैं कि आपका उपसर्ग एक छिपी निर्देशिका हो, तो आप आसानी से इसके लिए एक प्रतीकात्मक लिंक बना सकते हैं, जैसे:

ln -s .local ~/local

पक्षीय लेख

यह ध्यान देने योग्य है कि .config( विशिष्ट) उपयोगकर्ता विशिष्ट कॉन्फ़िगरेशन फ़ाइलों के .local/etcलिए $XDG_CONFIG_HOMEउपयोग किया जाने वाला डिफ़ॉल्ट मान है । मुझे यह भी इंगित करना चाहिए कि दुर्भाग्य से, सॉफ्टवेयर का एक बड़ा हिस्सा एक्सडीजी को अनदेखा करता है और जहां भी उन्हें पसंद होता है (आमतौर पर रूट में $HOME) उन फाइलों को कॉन्फ़िगर करता है । यह भी ध्यान दें कि $XDG_CONFIG_HOMEयदि डिफ़ॉल्ट $HOME/.configवांछित है तो परेशान हो सकते हैं ।

अजीब तरह से, डिस्ट्रीब्यूशन की डिफॉल्ट कॉन्फिग फाइलों के लिए कोई निर्देशिका आरक्षित नहीं है, इसलिए यह जानने का कोई तरीका नहीं /etcहै कि डिस्ट्रो द्वारा फाइल की गई थी या सिस्टम एडमिनिस्ट्रेटर द्वारा एडिट की गई थी।



@DanielSerodio यह XDG निर्देशिका विनिर्देश में, एक नया मानक है जो इसे प्रमुखता प्राप्त कर रहा है। देखें unix.stackexchange.com/questions/316765/… और superuser.com/questions/1170793/…
ivan_pozdeev

उस साइड-नोट के बारे में /etcहै जो वास्तव में कष्टप्रद है जब एक सर्वर को कई व्यवस्थापक के साथ प्रबंधित किया जाता है - फाइलों को भ्रमित करने के लिए कस्टम संपादन का ट्रैक रखना काफी कठिन है।
n
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.