XML / JSON का उपयोग / etc / fstab क्यों नहीं करता है?


22

यह सामान्य लिनक्स / प्रोग्रामिंग प्रश्न की तरह अधिक है, लेकिन मैं थोड़ी देर के लिए प्रोग्रामिंग कर रहा हूं, और मुझे किसी भी फाइल पर XML या JSON जैसे प्रारूप का उपयोग करने के लिए उपयोग किया जाता है जो कॉन्फ़िगरेशन उद्देश्यों के लिए उपयोग किया जाता है।

लिनक्स के लिए नया होने के नाते, मैंने महसूस किया कि पहली कॉन्फ़िगरेशन फ़ाइल जिसे मैंने टकराया ( /etc/fstab) कुछ प्रकार के टेबल प्रारूप का उपयोग करता है। तो XML या JSON क्यों नहीं?


7
अगर, कहते हैं, हम में पुस्तकालय XML पार्स था, तो क्या होगा /usr/lib/libxml.soऔर /usrअलग विभाजन पर? आदेश में पार्स /etc/fstabसिस्टम को माउंट करने के लिए कौन सी फाइलसिस्टम पता करने के लिए /usrz in order to load libxml , but to do so it would have to parse / etc / fstab` को माउंट करना होगा। इससे बचने के लिए, XML पार्सर शायद कर्नेल का हिस्सा होगा जो शानदार विचार की तरह नहीं लगता है।
el.pescado

4
@ V0R73X, अगर आपको लगता है कि यह सवाल एक अधिक सामान्य लिनक्स प्रश्न है, तो एक और स्टैक साइट है UNIX & Linux Stack Exchange, जिसे unix.stackexchange.com कहा जाता है । दोनों शायद ठीक होंगे, और यहां पहले से ही उत्तर हैं, लेकिन बस इसे भविष्य के लिए बाहर फेंक रहे हैं।
trysis

8
XML और पसंद हमेशा बेहतर प्रारूप नहीं होता है। एक तालिका एक तालिका है और इसे इस तरह संग्रहीत किया जाना चाहिए। वास्तव में कुछ लोगों को लगता है कि एक्सएमएल कुछ भी अच्छा नहीं है plus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC

2
JSON को कॉन्फ़िगरेशन फ़ाइलों के लिए उपयोग नहीं किया जाना चाहिए। यह टिप्पणियों का समर्थन नहीं करता है, जो कॉन्फ़िगरेशन विकल्पों की व्याख्या करने के लिए आवश्यक हैं, और कॉन्फ़िगरेशन के कुछ हिस्सों की टिप्पणी करके चीजों को आज़माने के लिए आवश्यक हैं।
आर्टब्रिस्टल

2
XML एक डॉक्यूमेंट ट्रांसपोर्ट फॉर्मेट है, कॉन्फिगरेशन फाइल फॉर्मेट नहीं।
मैथ्यू इफ

जवाबों:


82

/etc/fstab XML और JSON की तुलना में बहुत पुराना है, और जैसा कि बहुत सारे प्रोग्राम इसका उपयोग करते हैं, इसका स्वरूप बदलना एक बुरा सपना होगा।

इसके अलावा /etc/fstabएक कार्यात्मक प्रणाली होने से पहले इसे पार्स करने की आवश्यकता है क्योंकि इसका उपयोग सभी आवश्यक फाइल सिस्टम को माउंट करने के लिए किया जाता है। इसलिए प्रारूप /etc/fstabजितना संभव हो उतना सरल होना चाहिए क्योंकि पार्सर किसी भी बाहरी देयता पर निर्भर नहीं होना चाहिए।

XML को पार्स करना काफी कठिन है और आप वास्तव में इससे बचना चाहते हैं यदि आप बाहरी कामों पर ध्यान नहीं दे सकते। JSON थोड़ा आसान है लेकिन फिर भी काफी कठिन है।

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

व्हाइटस्पेस-अलग-अलग मूल्य उसके लिए काफी अच्छे हैं, और वे पार्स करना आसान है, भले ही आपके पास सभी सी मानक मानदंड हों।

इसलिए JSON, XML या कुछ समान उपयोग करने का कोई कारण नहीं है।


सफेद अलग-अलग फ़ील्ड पर्याप्त हैं जो fstab को करने की आवश्यकता है। केवल करने के लिए चीजों को और अधिक जटिल नहीं बनाना चाहते हैं।
माइकल मार्टिनेज

एक CSV और भी आसान और आसान होगा
Sled

3
@ArtB आपको क्यों लगता है कि सीमांकक बदलने से फ़ाइल पार्स करने की जटिलता बदल जाएगी?
डैन नीली

उद्धृत करने, भागने आदि के नियमों के आधार पर, CSV को पार्स करना थोड़ा आसान हो सकता है क्योंकि वर्तमान में उपयोग की जाने वाली चर लंबाई के परिसीमन के बजाय सीमांकक हमेशा एक चार होता है। लेकिन वर्तमान प्रारूप बेहतर मानव पठनीयता की अनुमति देता है, जो एक महत्वपूर्ण मूल्य भी है।
फ्लोरियन डिस्च

32

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

XML पर उसकी उपधारा से उद्धरण :

XML जटिल डेटा प्रारूपों (उन चीजों के प्रकार, जिनके लिए पुराने स्कूल की यूनिक्स परंपरा एक RFC-822-समान श्लोक प्रारूप का उपयोग करेगी) के लिए अच्छी तरह से अनुकूल है, हालांकि सरल लोगों के लिए ओवरकिल। यह उन प्रारूपों के लिए विशेष रूप से उपयुक्त है जिनके पास एक जटिल नेस्टेड या सॉर्टर्स की पुनरावर्ती संरचना है जो आरएफसी 822 मेटाफॉर्मैट अच्छी तरह से संभाल नहीं करता है।

और नीचे:

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

यूनिक्स दर्शन जहाँ संभव हो वहां विन्यास को आसानी से स्क्रिप्ट और मानव पठनीय बनाना है। आपको awk, grep, sed, tr, और cut जैसे टूल्स के साथ कॉन्फिग फाइल को प्रोसेस करने में सक्षम होना चाहिए, और आसानी से उन्हें भारी लाइब्रेरी के बिना स्क्रिप्टिंग भाषाओं में पार्स करना चाहिए। यूनिक्स की सफलता के पीछे यह एक बहुत बड़ा कारण है और इसे कम करके नहीं आंका जाना चाहिए।

यद्यपि एरिक रेमंड अपनी जटिल क्षमता से संपन्न या पुनरावर्ती संरचना वाले "स्वरूपों को संभालने की क्षमता के लिए एक्सएमएल की प्रशंसा करता है," /etc/fstabनिश्चित रूप से उन लोगों की कोई आवश्यकता नहीं है, और इसलिए संभव सबसे सरल फ़ाइल प्रारूप को इसके लिए चुना गया था।

हालांकि, हालांकि XML के निश्चित रूप से इसके उपयोग हैं, आप यह विचार करना चाह सकते हैं कि ग्रह पर सबसे चतुर प्रोग्रामर जिन्होंने क्षेत्र का बीड़ा उठाया है, वे जानते होंगे कि वे क्या कर रहे थे। शायद XML हमेशा अपनी कॉन्फ़िगरेशन फ़ाइलों के लिए सबसे उपयुक्त नहीं है।


18

मुख्य कारण जिस पर अब मैं सोच सकता हूं:


4
यह उत्तर वास्तव में नहीं दिखाता है कि fstabफ़ाइल / प्रारूप उतना ही पुराना है mount, जितना कि आप केवल इम्प्लीमेंट लगते हैं। के अनुसार man fstab, " इस fstab फ़ाइल स्वरूप के पूर्वज 4.0BSD में दिखाई दिए। " (BSDs वाक्यांश ने इसे " fstab फ़ाइल स्वरूप 4.0BSD में दिखाई दिया। ")। 1980 में 4.0BSD जारी किया गया था
डैनियल बेक

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