apt-get के माध्यम से स्थापित करते समय postgresql का डिफ़ॉल्ट स्थान


15

जब आप 14.04 पर postgresql स्थापित करते हैं, तो यह मुख्य सर्वर प्रोग्राम को पोस्टग्रेज करता है:

/usr/lib/postgresql/9.3/bin/postgres

डेटा निर्देशिका जहां सभी डेटाबेस क्लस्टर में संग्रहीत किया जाएगा:

/var/lib/postgresql/9.3/main

और कॉन्फ़िगरेशन फ़ाइल यहां:

/etc/postgresql/9.3/main/postgresql.conf

अब मैं समझ सकता हूं कि postgresql.conf और अन्य कॉन्फ़िगरेशन फाइलें /etc/postgresql/9.3/main में क्यों संग्रहीत हैं। सब के बाद, / आदि है जहाँ विन्यास फाइल एक लिनक्स सिस्टम में संग्रहीत हैं।

हालाँकि, डेटाबेस स्टोरेज एरिया को / var / lib में क्यों रखें? मैं / var को समझ सकता हूं, क्योंकि यह नॉनस्टैटिक डेटा के लिए जगह है और डेटाबेस नॉनस्टैटिक हैं। लेकिन क्यों / var / lib विशेष रूप से?

इसके अलावा, मेरा मानना ​​है कि / बिन बूट के लिए आवश्यक कार्यक्रमों के लिए है। / usr / bin वितरण में शामिल कार्यक्रमों के लिए है। और / usr / स्थानीय / बिन वितरण में शामिल कार्यक्रमों के लिए नहीं बल्कि सिस्टम-वाइड उपयोग के लिए उपलब्ध होना चाहिए। और इस प्रकार चूंकि postgresql सिस्टम-वाइड उपयोग के लिए है, यह / usr / लोकल / बिन में उपलब्ध होना चाहिए। फिर भी, वे इसे / usr / lib में रखते हैं, जिसका मुझे कोई पता नहीं है।

मैं यह सवाल क्यों पूछूं? क्योंकि आदेश और संरचना के बिना, आपके द्वारा उपयोग किए जाने वाले कार्यक्रमों का स्थान याद रखना मुश्किल है।

जवाबों:


11

फाइलसिस्टम पदानुक्रम मानक में, `/ var / lib / के रूप में कहा गया है (इटैलिक में सबसे महत्वपूर्ण भाग):

5.8.1 उद्देश्य

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

राज्य की जानकारी आम तौर पर एक आवेदन की स्थिति (या अंतर-संबंधित अनुप्रयोगों के एक समूह) को एक ही आवेदन के विभिन्न उदाहरणों के बीच और बीच में संरक्षित करने के लिए उपयोग की जाती है। राज्य की जानकारी आम तौर पर रिबूट के बाद वैध होनी चाहिए, लॉगिंग आउटपुट नहीं होना चाहिए, और स्पूल किए गए डेटा नहीं होना चाहिए।

एक एप्लिकेशन (या अंतर-संबंधित एप्लिकेशन का एक समूह) को अपने डेटा के लिए एक उपनिर्देशिका / var / lib का उपयोग करना होगा। एक आवश्यक उपनिर्देशिका, / var / lib / misc है, जो राज्य फ़ाइलों के लिए अभिप्रेत है, जिन्हें एक उपनिर्देशिका की आवश्यकता नहीं है; अन्य उपनिर्देशिकाएं केवल मौजूद होनी चाहिए, यदि प्रश्न में आवेदन वितरण में शामिल है।

/ var / lib / वह स्थान है जिसका उपयोग सभी वितरण पैकेजिंग समर्थन के लिए किया जाना चाहिए। विभिन्न वितरण अलग-अलग नामों का उपयोग कर सकते हैं, निश्चित रूप से।

संक्षेप में: / var / lib / स्थानीय रूप से उपयोग किए जाने वाले डेटा के लिए है।

तो यह डेटाबेस के डेटा को / var / lib / {mysql | postgress} / निर्देशिका में डालने के लिए सही समझ में आता है, लेकिन ... FHS एक मानक है जिसे ज्यादातर वितरण द्वारा उपयोग के लिए बनाया गया है । एक उपयोगकर्ता के रूप में आप जहां चाहें अपना डेटा डालने के लिए स्वतंत्र हैं और यह ज्यादातर राय का विषय है।


आप "स्थानीय" शब्द को गलत समझ रहे हैं। / usr / लोकल / बिन / सिस्टम सॉफ्टवेयर के लिए नहीं है बल्कि आपके खुद के सॉफ्टवेयर के लिए है (मूल रूप से "लोकल" में कुछ भी सिस्टम द्वारा छुआ नहीं जाना चाहिए। जैसा कि FHS द्वारा समझाया गया है:

/ Usr / स्थानीय /

4.9.1 प्रयोजन

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

सिस्टम सॉफ़्टवेयर से स्थापित एक निष्पादन योग्य को कभी भी स्थानीय नहीं जाना चाहिए।


अब / usr / lib / के लिए

4.7.1 उद्देश्य

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

पोस्टग्रैक्कल शायद बूट पर शुरू किया गया एक डेमन है? यदि ऐसा है तो इसे यहाँ रखना समझदारी है। आप स्वयं आदेश का उपयोग करने के लिए नहीं मानते हैं, बल्कि एक सेवा शुरू करते हैं। / Usr / lib / में फ़ाइलों का अपना उपयोगकर्ता और समूह और / या एक डेमन है जो / var / lib (केवल mysqld तक पहुँच / var / lib / mysql / उपयोग कर सकता है) को प्रतिबंधित करता है; यह उसी के लिए समान होगा PostgresSQL)

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