क्या अन्य UNIX में स्नैप पोर्टेबल है (उदाहरण macOS)?


10

मुझे स्नैप के पीछे के विचार से प्यार है और इसके साथ उबंटू वीएम पर खेला है।

Snapcraft अवलोकन

Snapcraft एक बिल्ड और पैकेजिंग टूल है जो आपको अपने सॉफ़्टवेयर को एक स्नैप के रूप में पैकेज करने में मदद करता है। विभिन्न स्रोतों से घटकों को शामिल करना और प्रौद्योगिकियों या समाधानों का निर्माण करना आसान बनाता है। प्रमुख धारणाएँ

उबंटू कोर सिस्टम के लिए .snap पैकेज में इसकी सभी निर्भरताएं हैं। यह पारंपरिक डिबेट या आरपीएम आधारित निर्भरता से निपटने के कुछ फायदे हैं, सबसे महत्वपूर्ण यह है कि एक डेवलपर को हमेशा यह आश्वासन दिया जा सकता है कि उनके ऐप के नीचे सिस्टम में बदलाव से ट्रिगर नहीं हुए हैं।

Snapcraft इन निर्भरताओं को आसान बनाता है जिससे आप उन्हें Snapcraft.yaml फ़ाइल में "भागों" के रूप में निर्दिष्ट कर सकें। तेज़

स्नैपी उबंटू कोर, ट्रांजैक्शनल अपडेट के साथ उबंटू का एक नया प्रतिपादन है - आज के उबंटू के समान पुस्तकालयों के साथ एक न्यूनतम सर्वर छवि, लेकिन आवेदन एक सरल तंत्र के माध्यम से प्रदान किए जाते हैं।

तड़क-भड़क वाले ऐप और उबंटू कोर को जरूरत के हिसाब से एटोमिकली अपग्रेड किया जा सकता है। ऐप्स आपके डेटा और सिस्टम को सुरक्षित रखने के लिए कड़ाई से सीमित और सैंडबॉक्स किए गए हैं।

IoT ›ऐप्स बनाएं

स्नैप किस तकनीक पर आधारित है? वास्तुकला और टूलकिट कैसे दिखते हैं? क्या स्नैप लिनक्स कर्नेल सुविधाओं पर निर्भर करता है?

मैं पूछता हूं, क्योंकि मैं सोच रहा हूं कि क्या भविष्य में मैं उसी स्नैप पैकेज का भी मैकओएस पर उपयोग कर पाऊंगा?

स्पष्टीकरण, पहली टिप्पणी के बाद:

मुझे पता है कि macOS और उबंटू बाइनरी संगत नहीं हैं। एक recompile की जरूरत है। वहाँ के साथ MacOS के लिए पहले से ही लगभग किसी भी मुक्त स्रोत उपलब्ध है Homebrew । डेवलपर macOS पर विकसित हो सकता है और उबंटू पर तैनात हो सकता है जब macOS के लिए स्नैप उपलब्ध होगा (भविष्य में)।


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

तो क्या आप macOS पर snaps इंस्टॉल करना चाहते हैं या macOS पर स्नैप बनाना चाहते हैं? आपका प्रश्न शुरू में पूर्व की तरह लग रहा था, और अब यह बाद की तरह दिखता है।
मुरु

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

जवाबों:


20

हां, लिनक्स syscall इंटरफ़ेस की स्थिरता के लिए धन्यवाद, यह संभव है।

लिनक्स उपयोगकर्ताओं के लिए लिनस टोरवाल्ड्स की महान प्रतिबद्धताओं में से एक यह है कि कर्नेल द्वारा पेश किए गए इंटरफेस का सेट स्थिर है। बहुत से लोग इस मूल्य की सराहना नहीं करते हैं, या उस प्रतिबद्धता को प्राप्त करने के लिए एक खुली परियोजना के एक नेता के रूप में यह कितना चुनौतीपूर्ण है। उदाहरण के लिए विचार करें कि इसके विपरीत गनोम एपीआई में अप्रत्याशित परिवर्तन कैसे होते हैं! जब आप लिनुस को एक मेलिंग सूची में तीव्र होने के बारे में सुनते हैं, तो यह लगभग हमेशा होता है क्योंकि कर्नेल के लिए कुछ कमेंट ने इस तरह के एक इंटरफ़ेस को बदलने का फैसला किया 'क्योंकि उनके पास एक बेहतर विचार था'। लिनुस का कहना है कि आप कर्नेल में बेतहाशा नवाचार कर सकते हैं, लेकिन कृपया 'यूज़र्सस्पेस' ऐप को न तोड़ें जो मौजूदा syscalls पर निर्भर हैं।

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

इसका एक उदाहरण जॉयंट ट्राइटन परियोजना है, जो स्मार्टओएस (इलुमोस का एक वंशज, सोलारिस का एक वंशज) पर कंटेनरों में लिनक्स-संगत सिस्कोल्स की पेशकश करता है।

एक अधिक व्यापक रूप से ज्ञात उदाहरण विंडोज में नया लिनक्स सबसिस्टम है

बेशक, कितने syscalls की पेशकश की जाती है, और बग-बग के लिए वे कितने संगत हैं, असली सवाल है। कम से कम अभी के लिए, एक और वातावरण नहीं है जहां सभी आवश्यक सिसकल्स जगह में हैं, क्योंकि जो स्नैप्स उपयोग करते हैं वे अपेक्षाकृत नए और गहरे हैं जिस तरह से कर्नेल उन चीजों के बारे में सोचता है जो इसे प्रबंधित करता है।

लेकिन वे निश्चित रूप से समय में आएंगे, और मुझे लगता है कि इस प्रकार स्नैक्स एक विस्तृत श्रृंखला में उपयोग करने योग्य होगा।

जो बहुत अच्छा है, पैच का स्वागत है :)


11

जबकि मुझे macOS के बारे में कोई जानकारी नहीं मिल रही है, यह OMG! उबंटू लेख में मार्क शटलवर्थ का एक दिलचस्प उद्धरण है:

विंडोज 10 पर स्नैप्स चलाने के लिए? "यह बिल्कुल प्रशंसनीय है" शटलवर्थ ने कहा।

“स्नैप लिनक्स कर्नेल में आधुनिक सुविधाओं का उपयोग सुरक्षा कारावास, फ़ाइल सिस्टम एक्सेस, आदि की स्थापना के लिए कर रहे हैं, और इन सभी में कर्नेल में आधुनिक तंत्र का उपयोग करना शामिल है। और Canonical [इस काम] का बहुत नेतृत्व करते हैं। Microsoft को [इसमें हुक करने के लिए] आने में थोड़ा समय लगेगा। "

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


पर प्रलेखन स्नैप सुरक्षा नीति और सैंडबॉक्सिंग और snapd पर आर्क विकी प्रविष्टि जानकारीपूर्ण हैं:

आर्क विकी से:

ध्यान दें कि स्नैप-कॉन्फिन को -disable-confinement विकल्प के साथ बनाया गया है; पूर्ण कारावास AppArmor सक्षम कर्नेल और स्नैप के लिए संबंधित प्रोफ़ाइल पर निर्भर करता है।

नीति से:

हुड के तहत, लांचर:

  • विभिन्न पर्यावरण चर सेट करता है: […]
  • जब हार्डवेयर स्नैप को सौंपा जाता है, तो डिफ़ॉल्ट डिवाइस (उदाहरण के लिए, / dev / null, / dev / urandom, आदि) और इस स्नैप को असाइन किए गए किसी भी डिवाइस के साथ एक डिवाइस cgroup सेट करता है
  • प्रति-निजी निजी माउंट नेमस्पेस का उपयोग करके एक निजी / tmp को सेट करता है और प्रति-tmp पर प्रति-कमांड निर्देशिका को बढ़ाता है
  • एक प्रति-कमांड सेट करता है नई आवृत्ति
  • कमांड के लिए seccomp फ़िल्टर सेट करता है
  • डिफ़ॉल्ट रूप से अच्छे मान के तहत कमांड-विशिष्ट AppArmor प्रोफ़ाइल के तहत कमांड निष्पादित करता है

प्रतिबंधक AppArmor प्रोफाइल का यह संयोजन (जो फ़ाइल एक्सेस, एप्लिकेशन निष्पादन, लिनक्स क्षमताओं (7), माउंट, ptrace, IPC, सिग्नल, मोटे अनाज वाली नेटवर्किंग), स्पष्ट रूप से परिभाषित एप्लिकेशन-विशिष्ट फ़ाइल सिस्टम क्षेत्रों, व्हाईटसिस्ट syscall को seccomp के माध्यम से फ़िल्टर करना, निजी / tmp, नए उदाहरण devpts और डिवाइस cgroups मजबूत अनुप्रयोग कारावास और अलगाव के लिए प्रदान करता है।

जबकि AppArmor और seccomp केवल Linux हैं, ऐसा लगता है कि कारावास को वैकल्पिक बनाया जा सकता है, इसलिए हम इसे अनदेखा कर सकते हैं। फिर भक्ति, cgroups और माउंट नेमस्पेस का उपयोग होता है। अगर कोई रोक रहा है, तो मुझे लगता है कि यह उन लोगों के लिए होगा। मैं बीएसडी के साथ यह कहने के लिए पर्याप्त रूप से परिचित नहीं हूं कि समकक्ष क्या हैं।

snapdआवेदन ही जाओ में लिखा है, जो यह यथोचित पार मंच बनाना चाहिए। वास्तव में, कुछ फाइलों में बहुत ही दिलचस्प निर्माण लक्ष्य होते हैं :

osutil/group_other.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build !linux,!darwin,!freebsd

osutil/group_linux.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build darwin freebsd linux
// +build cgo

इसलिए ऐसा लग रहा है कि इसमें किसी की दिलचस्पी है।

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