/ Etc और usr / local / etc के बीच क्या अंतर है


24

मैं एक डेमॉन विकसित कर रहा हूं जिसमें बहुत सारे एप्लिकेशन डेटा संग्रहीत करने की आवश्यकता है, और मैंने देखा कि मेरे सिस्टम (फेडोरा 15) पर, एक /usr/local/etcनिर्देशिका है।

मैंने अपने डेमॉन को स्थापित करने का निर्णय लिया है /usr/local/bin, और मुझे अपनी कॉन्फिग फाइलों के लिए जगह चाहिए।

मैंने इसे विकिपीडिया पर नहीं देखा । क्या यह गैर-मानक है या क्या यह वास्तव में /usr/local/binकॉन्फ़िगर फ़ाइलों को संग्रहीत करने के लिए स्थापित कार्यक्रमों के लिए मानक स्थान है ?

कारण यह है, मैं इसे साइ-एडिंस के लिए बाजार में लाना चाहता हूं, और इस तरह से कुछ गलत हो जाना एक महान बिक्री-बिंदु नहीं है ...


2
किसी भी कारण से इसे सीधे नहीं रखा जाए /etc/myapp? यदि मैं एक विन्यास बदलना चाह रहा था, तो यह पहली जगह होगी जो मैं देखूंगा।
new123456

@ new123456- मुझे व्यक्तिगत रूप से कॉन्फ़िगर फ़ाइलों को बाइनरी के पास रखने का विचार पसंद है (जैसे /usr/local/bin-> /usr/local/etc), लेकिन इस मामले में सम्मेलनों की जीत होती है।
बीटगैमिट

जवाबों:


24

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

यह बाकी वितरण से अलग होने की अनुमति देता है।

आप दूसरों के लिए सॉफ्टवेयर का एक टुकड़ा विकसित कर रहे हैं, तो आप यह इतना है कि यह कहीं भी लोग चाहते हैं स्थापित किया जा सकता डिजाइन करना चाहिए, लेकिन यह नियमित रूप से करने के लिए डिफ़ॉल्ट होना चाहिए FHS निर्दिष्ट सिस्टम निर्देशिका जब वे उपसर्ग निर्दिष्ट होना करने के लिए /usr( /etc, /usr/binआदि)

यानी /usr/localआपके व्यक्तिगत उपयोग के लिए है, यह आपके सॉफ़्टवेयर को स्थापित करने के लिए एकमात्र स्थान नहीं होना चाहिए।

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


हाँ, मुझे लगता है कि अनुकूलन की अनुमति अच्छी है, लेकिन मैं सोच रहा था कि क्या /usr/local/etcउन प्रकार के कार्यक्रमों के लिए विन्यास फाइल के लिए मानक है।
बीटगैमिट

/ usr / स्थानीय / आदि कुछ ऐसा है जिसे मैं चुन सकता हूं यदि मैंने आपके डेमन को स्रोत से बनाया है, लेकिन / आदि वह स्थान है जिसे कोई चुनेगा यदि वे डेबियन या उबंटू के साथ आपके डेमॉन को पैक करते हैं।
आठबेटटोनी

4
वास्तव में जीएनयू मानक पैकेज को स्थानीय पथ पर डिफ़ॉल्ट करने के लिए कहते हैं क्योंकि लोग इसे स्रोत से बनाते हैं जहां आमतौर पर निर्दिष्ट नहीं होता है। जब वे पैकेज बनाते / बनाते हैं, तो वितरण इसे गैर स्थानीय पथ में बदल देगा।
१४

@ psusi- अच्छा बिंदु, मैं यह तय कर दूँगा कि डिफ़ॉल्ट। शायद मैं यह पता लगाऊंगा कि जब मेरा मेक इनस्टॉल रूट या रेगुलर यूजर के रूप में चलता है। यदि मूल है, तो मैं उपयोगकर्ता होम निर्देशिका के लिए / usr / स्थानीय, यदि उपयोगकर्ता, डिफ़ॉल्ट हूँ। मैं कॉन्फ़िगरेशन सेटिंग्स भी जोड़ूंगा।
२६:११

@ EightBitTony- क्या कोई अन्य प्लेटफ़ॉर्म हैं जिनके अलग-अलग सम्मेलन हैं? मैं पहले से ही विभिन्न प्लेटफार्मों (अपस्टार्ट, सिस्टमड, इनिट) के लिए अलग-अलग स्टार्ट-अप स्क्रिप्ट बना रहा हूं।
बीटगैमिट

7

बहुत छोटा जवाब

/ etc का उपयोग आपके OS द्वारा इसकी विन्यास फाइल के लिए किया जाता है

/ usr / लोकल / आदि का उपयोग आपके द्वारा आपके और आपके एडिट किए गए सॉफ़्टवेयर के लिए कॉन्फ़िगर फ़ाइलों के लिए किया जा सकता है


4

/usr/local/etcलिनक्स दुनिया में शायद ही कभी इस्तेमाल किया जाता है। लेकिन यह निर्णय कि क्या कॉन्फ़िगरेशन फ़ाइलों को स्टोर करना है /etc, /usr/local/etcया किसी अन्य स्थान को आम तौर पर संकलन समय पर बनाया गया है (और अक्सर कमांड लाइन विकल्प या पर्यावरण चर के माध्यम से ओवरराइड किया जा सकता है)। यह वास्तव में कोई फर्क नहीं पड़ता कि संकलन करते समय डिफ़ॉल्ट क्या है, बस यह सुनिश्चित करें कि इसे सेट करना आसान है (आमतौर पर --sysconfdirऑटोकॉन के बाद एक विकल्प )। यदि आपके डेमॉन को वितरण के लिए पैक किया जाता है, तो निष्पादन योग्य में चला जाएगा /usr/sbin(स्रोत से निर्माण करते समय डिफ़ॉल्ट होना चाहिए /usr/local/sbin) और इसके तहत कॉन्फ़िगरेशन /etc

ध्यान दें कि /etc"बहुत सारे एप्लिकेशन डेटा" के लिए जगह नहीं है। में चला जाता है /var। स्रोत से निर्माण करते समय डिफ़ॉल्ट /var/local/mydaemonया हो सकता है /var/lib/mydaemon; स्रोत से निर्माण के दौरान फिर से डिफ़ॉल्ट के लिए कोई मजबूत सम्मेलन नहीं है। संकलन-समय डिफ़ॉल्ट (आमतौर पर configure --localstatedir) और रन-टाइम डिफ़ॉल्ट (कॉन्फ़िगरेशन फ़ाइल में सेटिंग के साथ, संभवतः कमांड लाइन विकल्प या पर्यावरण चर के साथ ) दोनों को बदलने का एक तरीका होना चाहिए ।


वहाँ एक कारण है कि /usr/local/etcबहुत बार इस्तेमाल नहीं किया जाता है? मुझे फाइल सिस्टम के समान स्तर पर बाइनरी के रूप में कॉन्फिग फाइलों को रखने का विचार पसंद है।
२६:११

1
@tjameson मुझे नहीं पता कि क्या कोई व्यापक कारण है। बीएसडी इस तरह से करता है। एक व्यवस्थापक के रूप में, मुझे यह पसंद है कि सभी कॉन्फ़िगरेशन फ़ाइलें (जिसमें बैकअप होना चाहिए और परिवर्तन-नियंत्रित होना चाहिए, सामान के विपरीत binऔर libजिस पर फिर से इंस्टॉल किया जा सकता है) उसी स्थान पर रहते हैं।
गाइल्स का SO- बुराई पर रोक '

1

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

डेबियन भी / usr / स्थानीय कुछ भी स्थापित करने के बजाय स्रोत के पैकेज के निर्माण के विचार को पसंद करने लगता है, इसलिए उपयोगिताएँ जैसे चेक स्थापना ।

जिस स्रोत को आप स्थापित करना चाहते हैं उसका एक पैकेज बनाना एक अच्छा तरीका होगा जहां फाइलों का ट्रैक रखना है और सुनिश्चित करें कि उनमें से कुछ असंगत रूप से किसी अन्य पैकेज या "स्थापित करें" द्वारा अधिलेखित हैं। "स्थापना रद्द करें" के साथ स्थापना रद्द करना एक अच्छा समाधान नहीं है। कौन सा संस्करण स्थापित है, इसके बारे में जानकारी एक और बात है कि आधुनिक पैकेज प्रबंधक ट्रैक का ध्यान रखने में अच्छे हैं।

मैं पूरी तरह से अग्रगामी / usr / स्थानीय होगा। यह कुछ भी डालने के लिए एक अच्छी जगह नहीं है, पैकेज स्थापित करने के लिए नहीं (सिस्टम-वाइड निर्देशिका अधिक उपयुक्त हैं) और उपयोगकर्ताओं के लिए नहीं।

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