स्नैप पैकेज साझा निर्भरता को कैसे संभालते हैं?


30

स्नैप पैकेजिंग प्रारूप अंत में हमें निर्भरता नरक से मुक्त करता है, प्रत्येक पैकेज की अपनी निर्भरता की प्रति है। मैं तकनीकी विवरणों में रुचि रखता हूं कि यह कैसे करता है। कैसे संभालती है:

  • वर्तमान रिलीज़ के लिए पहले से ही एक पुस्तकालय के संस्करण के आधार पर डिबेट पैकेज के माध्यम से स्थापित किया गया है? क्या यह स्थापित पुस्तकालय की उपेक्षा करता है?
  • एक ही पुस्तकालय के एक ही संस्करण को निर्दिष्ट करने वाले विभिन्न स्नैप्स? क्या यह किसी तरह से समर्पण करता है?
  • कोर पुस्तकालयों के लिए अद्यतन जो कि बहुत सारे स्नैप द्वारा उपयोग किए जाने की संभावना है। ओपनएसएसएल एक विशाल दर्द बिंदु के रूप में दिमाग में आता है।

xdg-app में कुछ "रनटाइम" कहा जाता है :

Xdg-app में एक मूलभूत अवधारणा रनटाइम / एप्लिकेशन विभाजन है। हर ऐप एक रनटाइम पर निर्भर करता है, जो कोर पुस्तकालयों की आपूर्ति करता है जो ऐप पर निर्भर करता है। Runtimes आमतौर पर कई अनुप्रयोगों द्वारा साझा किए जाते हैं, लेकिन एक उपयोगकर्ता के एक ही समय में कई रनटाइम स्थापित हो सकते हैं।

ऐसा लगता है कि OpenSSL के मामले में, यह xdg-apps में रनटाइम का हिस्सा होगा, इसलिए OpenSSL के अपडेट को समान रनटाइम का उपयोग करके सभी xdg-apps को पारदर्शी रूप से प्रभावित करना चाहिए।

जवाबों:


9

पहले दो स्थितियों को एक चतुर तरीके से नियंत्रित किया जाता है।

दिलचस्प विशेषताओं में से एक स्नैप पैकेज के भीतर सामग्री के लिए समर्पण समर्थन है। स्नैप्स को स्वचालित रूप से उनकी फाइल हैश के आधार पर स्नैप्स के बीच साझा की गई सामान्य फ़ाइलों का घटाया जाएगा। फ़ाइल-सिस्टम लेयर पर डी-डुप्लीकेशन होगा, स्नैप डाउनलोड (सर्वर समर्थन के साथ) पर डी-डुप्लीकेशन, और शायद लिंकर से मैप किए गए पुस्तकालयों का डी-डुप्लीकेशन। Deduplication एक बड़ा कार्य आइटम है और पूरी तरह से लागू करने में कुछ समय लगेगा, लेकिन फिर भी यह एक दिलचस्प लक्ष्य है।

स्रोत: http://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-Snappy-Deduplication

तीसरी स्थिति के लिए, उनके पास आपके द्वारा बताए गए रनटाइम के समान कुछ हैं:

तीन परतें हैं जो एक तड़क-भड़क वाली मशीन बनाती हैं: सिस्टम लेयर, कैन्यनिकल द्वारा प्रदान की गई फ्रेमवर्क की एक परत, जो कैन्यन के साथ मिलकर विक्रेताओं द्वारा निर्मित बेस सिस्टम का विस्तार करती है, और स्नैपी एप्लिकेशन का एक सेट, जो सीधे विक्रेताओं द्वारा प्रदान किया जाता है। किसी भी टुकड़े को अपडेट करने का मतलब है केवल पढ़ने के लिए छवि के नए संस्करण का उपयोग करना। पिछले संस्करण में लौटना उतना ही आसान है।

स्रोत: http://www.ubuntu.com/cloud/snappy

फ्रेमवर्क का वर्णन करने के लिए अभी तक कोई अच्छा दस्तावेज नहीं है, मुख्य रूप से क्योंकि वे अभी भी लगता है कि एक रूपरेखा क्या है की सीमाओं से बाहर काम कर रहा है। यहाँ उनकी मेलिंग सूची से एक अंश है जो चीजों को स्पष्ट करने में मदद कर सकता है।

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

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

मुझे आईआरसी पर कहा गया था कि मैं फ्रेमवर्क अवधारणा का दुरुपयोग कर रहा हूं, लेकिन फिर भी ये दो मुद्दे अक्सर मेरे डेस्क पर आते हैं।

स्रोत: https://lists.ubuntu.com/archives/snappy-app-devel/2015-Nvent/000442.html


1
स्पष्ट करने के लिए, इनमें से कोई भी वास्तव में अब मौजूद नहीं है, है ना? ये योजनाएं हैं और आप शायद पहली पंक्ति में "संभाले" के बजाय "नियंत्रित किए जाएंगे" कहने के लिए हैं?
मुरु

तकनीकी रूप से, दोनों मौजूद हैं। मुझे पता है कि कम से कम एक डॉकटर फ्रेमवर्क पहले से ही है, और यह है कि ubuntu-core के साथ शामिल कुछ पुस्तकालयों के लिए पहले से ही लिंक हैं जो इंस्टॉल किए गए एप्लिकेशन का लाभ उठाते हैं। मुझे इस बात का कोई अंदाजा नहीं है कि दोनों में से कितनी दूर है; मैं केवल समाधानों के तकनीकी विवरण की व्याख्या कर रहा हूं।
निंदक

1
ये चतुराई से नियंत्रित तरीके नहीं हैं, केवल कथित रूप से चतुर विचार हैं। उदाहरण के लिए, अभी भी इस बारे में कोई आधिकारिक दस्तावेज नहीं है कि पहले एक को वास्तव में कैसे लागू किया जाता है, केवल एक Phoronix लेख जो एक बात की ओर इशारा करता है, जो एक मृत लिंक btw है।
ब्रिकेटर

3

मुझे नहीं लगता कि स्नैप्स यह जांचते हैं कि क्या निर्भरताएं पहले से स्थापित हैं। इसमें बस इसकी सभी निर्भरताएं और रनटाइम शामिल हैं (जो कि आंशिक रूप से लिबरऑफिस स्नैप 287 एमबी है और फ्लैटपैक लगभग 200 एमबी है)।

स्नैप्स में बहुत ज्यादा सब कुछ शामिल है जो सॉफ्टवेयर को चलाने की जरूरत है। मुझे नहीं लगता कि कुछ भी स्नैप के बीच साझा नहीं किया जाता है।

जब कोई स्नैप अपडेट करता है, तो यह केवल निर्भरता को डाउनलोड करेगा जो नए हैं, और पूरे स्नैप को नहीं।


2

अतिरिक्त निर्भरता क्रम में है जिस तरह से स्नैप पैकेजिंग साझा निर्भरता को संभालती है।

स्नैप्स में बहुत ज्यादा सब कुछ शामिल है जो सॉफ्टवेयर को चलाने की जरूरत है। मुझे नहीं लगता कि कुछ भी स्नैप के बीच साझा नहीं किया जाता है।

उत्तरों में से एक में यह कथन आंशिक रूप से सत्य है, हालांकि कोर स्नैप को छोड़कर सभी स्थापित स्नैप पैकेज दो पैकेजों पर निर्भर करते हैं, जिनमें से एक कोर स्नैप है।

  1. स्नैपड - जो कि डिफ़ॉल्ट रूप से 16.04 और उसके बाद स्थापित होता है और इसे 14.04 में भी इंस्टॉल किया जा सकता है।

  2. कोर    - (कोर स्नैप) जो पहले स्थापित स्नैप पैकेज स्थापित होने पर स्वचालित रूप से डाउनलोड और स्थापित होता है

कोर को छोड़कर सभी स्नैप पैकेज स्वयं कोर स्नैप पर निर्भर करते हैं। अगर कोर स्नैप के साथ कुछ भी गलत है, तो कुछ या सभी अन्य स्नैप काम नहीं करेंगे। कोर स्नैप के साथ एक समस्या निम्नलिखित दो तरीकों से तय की जा सकती है।

  1. कोर स्नैप अपडेट करें। यहां तक ​​कि अगर यह काम नहीं करता है, तो निम्नलिखित कमांड चलाने के परिणाम अतिरिक्त जानकारी प्रदान करेंगे जो समस्या को हल करने में मदद करेंगे।

    sudo snap refresh core  
    
  2. कोर स्नैप और सभी स्नैप पैकेज की स्थापना रद्द करें और फिर उन्हें पुनर्स्थापित करें।

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