सवाल क्या मुझे लिनक्स अनुप्रयोगों को / var या / opt में इंस्टॉल करना चाहिए?


मैं जावा और टोमकैट सहित कई खुले स्रोत अनुप्रयोग चलाता हूं। ऐसा लगता है कि मेरे निर्देशों से अधिकांश निर्देश चल रहे हैं /var निर्देशिका। लेकिन हर बार एक बार में, मैं भी देखता हूं /opt निर्देशिका। जबकि मैं इसमें हूं, मैं भी देखता हूं /usr/local/ और भी /etc भी।

मुझे एक फ़ोल्डर या दूसरे में एप्लिकेशन कब इंस्टॉल करना चाहिए? क्या हर किसी के पेशेवर और विपक्ष हैं? क्या इसे स्वाद इतिहास (सोलारिस बनाम लिनक्स या रेड हैट बनाम उबंटू) के साथ करना है?


72
2017-12-21 18:58


मूल


/ आदि अनुप्रयोगों को छोड़ने के लिए एक अजीब और अनुचित जगह है ... - user5336
मैंने लोगों को पर्ल मॉड्यूल की तरह / आदि में सामान डाल दिया है। यह अजीब है, लेकिन ऐसा होता है ... - ℝaphink
हर बेतुकापन के लिए, इसकी रक्षा करने के लिए एक चैंपियन है। - womble♦


जवाब:


इन मुद्दों के लिए मानक है फ़ाइल पदानुक्रम मानक। यह एक बड़ा दस्तावेज़ है। असल में (और बहुत मोटे तौर पर), लिनक्स पर मानक पथ हैं:

  • /bin और /sbin ओएस के लिए महत्वपूर्ण कार्यक्रमों के लिए हैं, sbin केवल प्रशासकों के लिए है;
  • /usr/bin और /usr/sbin महत्वपूर्ण कार्यक्रमों के लिए नहीं हैं, प्रशासक केवल प्रशासकों के लिए हैं;
  • /var कार्यक्रमों के लिए जीवित डेटा के लिए है। यह कैश डेटा, स्पूल डेटा, अस्थायी डेटा हो सकता है (जब तक यह अंदर न हो /tmp, जो प्रत्येक रीबूट पर मिटा दिया जाता है), आदि;
  • /usr/local स्थानीय रूप से स्थापित कार्यक्रमों के लिए है। आम तौर पर, यह उन कार्यक्रमों को होस्ट करता है जो मानकों का पालन करते हैं लेकिन ओएस के लिए पैक नहीं किए गए थे, बल्कि व्यवस्थापक द्वारा मैन्युअल रूप से स्थापित किए गए थे (उदाहरण के लिए ./configure && make && make install) साथ ही व्यवस्थापक स्क्रिप्ट;
  • /opt उन कार्यक्रमों के लिए है जो पैक नहीं किए जाते हैं और मानकों का पालन नहीं करते हैं। आप प्रोग्राम के साथ सभी पुस्तकालयों को एक साथ रखेंगे। यह अक्सर एक त्वरित और गंदे समाधान होता है, लेकिन इसका उपयोग उन कार्यक्रमों के लिए भी किया जा सकता है जो आपके द्वारा बनाए गए हैं और जिसके लिए आप एक विशिष्ट पथ चाहते हैं। आप अपना रास्ता बना सकते हैं (उदा। /opt/yourcompany) इसके भीतर, और इस मामले में आपको इसे मानक पथ के हिस्से के रूप में पंजीकृत करने के लिए प्रोत्साहित किया जाता है;
  • /etc कार्यक्रम नहीं होना चाहिए, बल्कि विन्यास।

यदि आपके कार्यक्रम सेवा द्वारा प्रदान की जाने वाली सेवाओं के लिए विशिष्ट हैं, /srv उनके लिए भी एक अच्छा स्थान हो सकता है। उदाहरण के लिए, मैं उपयोग करना पसंद करता हूं /srv/www बजाय वेबसाइटों के लिए /var/www यह सुनिश्चित करने के लिए कि निर्देशिका में केवल वह डेटा होगा जो मैंने स्वयं जोड़ा है, और सॉफ्टवेयर पैकेज से कुछ भी नहीं आता है।

वितरण के बीच कुछ अंतर हैं। उदाहरण के लिए, रेडहाट सिस्टम का उपयोग करें libexec निर्देशिका जब डेबियन / उबंटू सिस्टम नहीं करते हैं।

एफएचएस ज्यादातर लिनक्स वितरण द्वारा उपयोग किया जाता है (मैं वास्तव में किसी भी अन्य ओएस को नहीं जानता जो वास्तव में इसका पालन करता है)। अन्य यूनिक्स सिस्टम इसका पालन नहीं करते हैं। उदाहरण के लिए, बीएसडी सिस्टम का उपयोग करते हैं /usr/local पैकेज किए गए कार्यक्रमों के लिए, जो लिनक्स के मामले में नहीं है। सोलारिस के पास मानक मानक बहुत अलग हैं।

यदि आप इस बारे में और जानना चाहते हैं तो मैं आपको ऊपर से जुड़े एफएचएस दस्तावेज़ को पढ़ने के लिए प्रोत्साहित करता हूं।


126
2017-12-21 19:06



कुछ बुलेट सूचियों में से एक मैं धोखा शीट के रूप में प्रिंट करना पसंद कर सकता हूं ... - stimpy77
के लिए +1 /srv। मैं अपने गिट भंडारों के लिए एक जगह की तलाश में था और मेरी अपाचे सामग्री को पसंद नहीं आया /var/www। /srv सही जगह की तरह लगता है। - Mr. Hedgehog
@ ℝaphink, तो इसे क्यों कहा जाता है var के बजाय data? - Pacerier
@ श्री हेजहोग, "पसंद नहीं" से आपका क्या मतलब है? समझाने की परवाह? - Pacerier


opt वैकल्पिक सॉफ्टवेयर के लिए खड़ा है। var परिवर्तनीय सिस्टम फ़ाइलों के लिए खड़ा है। इसलिए आपके आवेदनों पर जाना चाहिए /opt


3
2017-12-21 19:07



/var के लिए है अलग-अलग सिस्टम फाइलें, "विभिन्न" नहीं। - womble♦
/ var "चर डेटा डेटा" के लिए है। यह कहकर "विभिन्न सिस्टम फाइलों" के लिए संदिग्ध और संभावित रूप से भ्रामक है। o_O हालांकि आप "ऑप्ट" के बारे में सही हैं। - phoenix8
@Eduard, फिर / opt / var के बारे में क्या? और </ usr / var>, </ usr / local / var> ... - Pacerier


यह इस बात पर निर्भर करता है कि आपका स्थानीय मानक क्या है।

व्यक्तिगत रूप से, मैं किसी भी अच्छे कारण के बिना / var में कुछ भी इंस्टॉल नहीं करता हूं। मेरा / usr / local लगभग हमेशा एक एनएफएस नेटवर्क से माउंट होता है, इसलिए पैक किया गया कोई भी चीज़ / opt में इंस्टॉल हो जाता है।


2
2017-12-21 19:14



डेटा को छोड़कर, आप वैसे भी क्या करेंगे? - ℝaphink
आमतौर पर कार्यक्रम / var में अपनी सामग्री चिपके रहेंगे। ज्यादातर विक्रेता-आपूर्ति - लॉग, कुछ पुस्तकालय, नियंत्रण फाइलें, .pid फ़ाइलें, उस तरह की चीज़। - David Mackintosh
मैं काफी सहमत नहीं हूँ। पुस्तकालय, यदि वे स्थैतिक हैं, तो अंदर जाना चाहिए /usr। गतिशील रूप से जेनरेट की गई libs में समाप्त हो सकता है /var/lib कभी-कभी, लेकिन मुझे नहीं लगता कि आप वास्तव में क्या करेंगे इंस्टॉल करें में /var, एक व्यवस्थापक दृष्टिकोण से। कार्यक्रम इसे बड़े पैमाने पर उपयोग कर सकता है, लेकिन इसे प्रोग्राम लॉन्च करने से पहले यह काफी खाली होना चाहिए। - ℝaphink
अभी एकमात्र चीज जिसे मैंने जानबूझकर / var में स्थापित किया है nfsen / nfdump है, और ऐसा इसलिए है क्योंकि एप्लिकेशन का पदचिह्न सभी nfdump फ़ाइलों को जमा करता है। (और क्योंकि यह एक परीक्षण स्थापित है जिसे किसी भी तरह से इसे उत्पादन में बनाया गया है। इसलिए - "उपयोग के लिए कोई अच्छा कारण नहीं है।) लेकिन यह काफी है। बेशक जब से मैं अपनी हार्ड डिस्क को विभाजित नहीं करता, / var, / opt और / usr सभी एक ही फाइल सिस्टम पर हैं। - David Mackintosh
Qmail / var में स्थापित करता है। यह इसके खिलाफ कई आलोचनाओं में से एक है। - staticsan