हाल ही में, मैंने खुद एक मूल्यांकन किया। मैं वास्तव में एक निक्स / निक्सोस योगदानकर्ता हूं, और तैनाती प्रौद्योगिकी में रुचि रखने वाले पूर्व शोधकर्ता।
मैंने खुद को यथासंभव तथ्यों से चिपके रहने की कोशिश की है, लेकिन पूरी तरह निष्पक्ष रहना असंभव है। मेरे निष्कर्षों को संक्षेप में प्रस्तुत करने के लिए:
दोनों में दुकान संकुल दृष्टिकोण अलगाव । Sppyppy निम्नलिखित नाम सम्मेलन का उपयोग करके फ़ोल्डरों में ऐप्स और फ्रेमवर्क को संग्रहीत /app/name/version.vendor
करता है : जबकि निक्स उपयोग करता है /nix/store/hash-name-version
।
निक्स का नामकरण सम्मेलन अधिक शक्तिशाली है, क्योंकि यह हैश उपसर्गों का उपयोग करता है जो सभी बिल्डटाइम निर्भरताओं से प्राप्त होते हैं । निक्स के साथ आप आसानी से पैकेज के किसी भी प्रकार के बीच अंतर कर सकते हैं और उन्हें एक दूसरे के बगल में स्टोर कर सकते हैं। कोई भी परिवर्तन (जैसे अलग-अलग निर्माण प्रक्रिया, लाइब्रेरी अपग्रेड, कंपाइलर अपग्रेड) एक नए हैश की उपज देता है जिससे एक दूसरे के बगल में किसी भी संभावित संस्करण को स्टोर करना संभव हो जाता है।
एक पैकेज अपनी निर्भरता को खोजने के लिए अनुमति देने के लिए, निक्स उन्हें बांधता स्थिर एक निष्पादन करने के लिए (संशोधित करके जैसे RPATH
एक ELF द्विआधारी के) या उन्हें स्क्रिप्ट को उचित वातावरण चर सेट (उदाहरण के लिए में लपेटकर CLASSPATH
, PYTHONPATH
, PERL5LIB
, आदि)।
स्नैपी कंटेनरों की रचना करता है , जिसमें निष्पादन योग्य अपने सामान्य एफएचएस स्थानों में अपनी निर्भरता पा सकते हैं, जैसे /lib
और/bin
हालांकि, निक्स भी स्नैपी के कंटेनर दृष्टिकोण का समर्थन करता है लेकिन यह केवल बहुत ही दुर्लभ मामलों में उपयोग किया जाता है। एक कंटेनरीकृत दृष्टिकोण का उपयोग करते हुए सबसे प्रमुख निक्स पैकेज निक्स में स्टीम है, क्योंकि स्टीम एक परिनियोजन उपकरण है जिसमें परस्पर विरोधी गुण हैं।
स्नैपी उबंटू कोर आधार प्रणाली को अपग्रेड (और रोल बैक) करने के लिए एक तथाकथित "ए / बी" विभाजन योजना का उपयोग करता है। यह उस समय सीमित संख्या में संस्करणों (आमतौर पर दो) का समर्थन करता है।
इसके विपरीत, निक्स (निक्स-आधारित लिनक्स डिस्ट्रो) निक्स स्टोर में निक्स पैकेजों के आधार सिस्टम को भी बनाता है और यह अधिक शक्तिशाली है। आप किसी भी पिछले कॉन्फ़िगरेशन में वापस आ सकते हैं जो अभी तक कचरा एकत्र नहीं किया गया है। इसके अलावा, पीढ़ियों के बीच समान सिस्टम पैकेज साझा किए जा सकते हैं।
दोनों उपकरण unprivileged उपयोगकर्ता प्रतिष्ठानों का समर्थन करते हैं । हालांकि, Snappy उपयोगकर्ता की होम निर्देशिका में सभी फ़ाइलों को संग्रहीत करता है। यदि दो उपयोगकर्ता एक ही पैकेज को स्थापित करने के लिए होते हैं तो वे सिस्टम पर दो बार स्थापित होते हैं।
इसके विपरीत, निक्स पैकेज सामान्य उपयोगकर्ताओं को केंद्रीय निक्स स्टोर में पैकेज स्थापित करने की अनुमति देते हैं ताकि उपयोगकर्ताओं के बीच समान पैकेज साझा किए जा सकें । आंशिक रूप से नामकरण सम्मेलन (हैशिंग का उपयोग करके) के कारण यह सुरक्षित तरीके से किया जा सकता है।
स्नेकी संकुल के रनटाइम व्यवहार को प्रतिबंधित करता है, जबकि निक्स नहीं करता है
स्रोत कोड से पैकेज बनाने के लिए स्नैपी उपयोगकर्ताओं की मदद करने में सक्षम नहीं लगता है । हालांकि निक्स में एक डीएसएल है जो लोगों को यह आसानी से करने की अनुमति देता है और ज़रूरत पड़ने पर सभी बिल्डटाइम निर्भरता (कंपाइलर, बिल्ड टूल, लाइब्रेरी आदि) को स्वचालित रूप से स्थापित करता है।
स्नैपी शायद ही मॉडर्नाइजेशन और पुन: उपयोग का समर्थन करता है । उदाहरण के पैकेज में, सभी पुस्तकालय निर्भरता को सांख्यिकीय रूप से बहुत अधिक डिस्कस्पेस और रैम की खपत होती है। इसके अलावा, प्रलेखन फ्रेमवर्क को छोड़कर कोई भी सुविधा प्रदान नहीं करता है। हालांकि, प्रलेखन के अनुसार पुन: उपयोग के लिए रूपरेखाएं नहीं हैं
निक्स मॉड्यूलर पैकेजिंग के साथ और निर्भरता को सुरक्षित रूप से प्रबंधित करना इसकी कुछ प्रमुख विशेषताएं हैं।
उम्मीद है कि आपको यह पढ़ने में दिलचस्प लगे और हो सकता है कि इसमें कुछ चीजें ऐसी हों जिनके बारे में आप सोचने लायक हों।