विभिन्न Emacs पैकेज रिपोजिटरी के बीच व्यावहारिक अंतर क्या हैं?


124

मैंने देखा कि कई अलग-अलग रिपॉजिटरी हैं जिनमें अक्सर एक ही सॉफ्टवेयर होता है। मैं क्यों पसंद करना चाहूंगा:

  • GNU ELPA
  • मुरब्बा
  • Melpa

दूसरों पर? चूँकि किसी भी एक रिपॉजिटरी में वे सभी पैकेज नहीं होते हैं जो मुझे चाहिए, क्या यह एक अच्छा विचार है कि इन रिपॉजिटरी को एक साथ सक्षम किया जाए?

जवाबों:


82

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

MELPA और Marmalade दोनों थर्ड-पार्टी पैकेज रिपॉजिटरी हैं। वे आधिकारिक तौर पर GNU द्वारा समर्थित नहीं हैं, लेकिन पैकेज के बहुत बड़े चयन भी हैं। पैकेज की गुणवत्ता थोड़ी अधिक परिवर्तनशील है, लेकिन आप जो कुछ भी ढूंढ रहे हैं, उसे खोजने की अधिक संभावना है, खासकर यदि यह थोड़ा अस्पष्ट है।

मुरब्बा और एमईएलपीए के पैकेज अपलोडर के लिए थोड़ा अलग मॉडल हैं। मेरी समझ यह है कि MELPA एक संस्करण नियंत्रण रिपॉजिटरी को सीधे ट्रैक करता है (यानी GitHub के माध्यम से), पैकेज लेखकों को संकुल को केवल एक शाखा में भेजने से धक्का देकर अद्यतन करता है। दूसरी ओर, मुरब्बा, लोगों के पास भंडार को स्पष्ट रूप से पैकेज अपलोड करता है।

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

दोनों रिपॉजिटरी को सक्षम करने के साथ एक संभावित चिंता (जो मैंने खुद नहीं चलाई है), जिसे मैंने खुद नहीं चलाया है, दोनों अलग-अलग संस्करणों में उपलब्ध हैं। डिफ़ॉल्ट रूप से, पैकेज प्रबंधक ( package.el) के पास इस तरह संघर्ष को हल करने का कोई तरीका नहीं है; हालाँकि, आप melpaपैकेज को स्थापित करके इसे हल कर सकते हैं जो आपको अनुकूलित करता है कि कौन से पैकेज प्रदान किए गए हैं या किस रिपॉजिटरी से बाहर रखे गए हैं। आप यहाँ या melpaपैकेज के लिए प्रलेखन से अधिक विवरण देख सकते हैं ।

जैसा कि @Malabarba ने मदद की, यह समस्या Emacs 24.4 में हल हो गई है।

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


13
नया पैकेज .el जो emacs 24.4 में आता है, वर्जन संख्याओं को इनायत से बदल देता है। यदि दो रेपो में अलग-अलग संस्करण के साथ एक ही पैकेज है, तो आपको दोनों की पेशकश की जाती है, और एक अपडेट के दौरान कभी भी दूसरे को ओवरराइड नहीं करेगा।
मालाबार

1
@ मलबारबा: वाह, यह सुनने के लिए बहुत अच्छा है!
तिखन जेल्विस

14
यह एक अच्छा उत्तर है, लेकिन शायद MELPA स्थिर ( melpa-stable.milkbox.net ) का भी उल्लेख करना चाहिए । MELPA स्वचालित रूप से एक रेपो मास्टर शाखा से नवीनतम संशोधन प्राप्त करेगा, जबकि MELPA स्थिर को नवीनतम टैग किए गए संशोधन मिलेगा।
शोस्ती

@shosti: ओह, मैं उस बारे में नहीं जानता था। यह वास्तव में अपने स्वयं के उत्तर के रूप में रखना अच्छा हो सकता है।
तिखन जेल्विस

7
मुरब्बा किसी को भी पैकेज अपलोड करने की अनुमति नहीं देता है। केवल पंजीकृत उपयोगकर्ता। मुझे अभी सभी अपलोडर पता हैं। तो कुछ प्रकार की सहकर्मी समीक्षा है।
निक फेरियर

44

जिस तरह से मैं इसके बारे में सोचता हूं, कुछ रिपॉज में दूसरों की तुलना में पैकेज जमा करने के साथ अधिक ओवरहेड शामिल है; अधिक ओवरहेड वाले रिपोज में कम पैकेज होते हैं। सबसे कम से कम ओवरहेड के क्रम में:

  1. GNU ELPA के लिए सभी कोड GPL'd होने चाहिए और कॉपीराइट FSF को सौंपा जाएगा। कोर Emacs टीम द्वारा ELPA कोड अनिवार्य रूप से "स्वामित्व" है, इसलिए अन्य रेपो के साथ इसमें बहुत कम है। (org- मोड का अपना रेपो है, लेकिन इसमें ऑपरेशन का एक ही मोड है।)
  2. मुरब्बा को जीपीएल-संगत लाइसेंस के लिए सभी कोड की आवश्यकता होती है और सभी पैकेज मैन्युअल रूप से अपलोड किए जाते हैं। स्वामित्व थोड़ा अनिर्दिष्ट है, और स्वामित्व बदलने के लिए AFAIK की एक निर्धारित प्रक्रिया नहीं है।
  3. MELPA स्थिर , मुरब्बा के साथ सीधे प्रतिस्पर्धा में कम या ज्यादा है, इसके अलावा इसमें कोई लाइसेंस प्रतिबंध नहीं है और स्वचालित रूप से नवीनतम टैग किए गए संशोधन का उपयोग करके git repos से पैकेज बनाता है। स्वामित्व MELPA रेपो (स्वामित्व परिवर्तन पुल अनुरोध के माध्यम से होते हैं) के माध्यम से निर्धारित किया जाता है ।
  4. MELPA MELPA की तरह स्थिर है, सिवाय इसके कि यह हमेशा एक git रेपो की मास्टर ब्रांच पर नवीनतम संशोधन से खींचता है। पैकेज में "ब्लीडिंग-एज" होता है, और यह फ्री-फॉर-ऑल-स्टेबिलिटी-वार (जिसमें पेशेवरों और विपक्षों) का एक सा हो सकता है।

व्यक्तिगत रूप से मुझे लगता है कि या तो एमईएलपीए अस्तबल या मुरब्बा शायद अधिकांश उपयोगकर्ताओं के लिए लंबे समय तक जीत जाएगा - एमईएलपीए उचित बहुत अस्थिर है और ईएलपीए बहुत सारे पैकेजों के लिए वास्तव में स्केलेबल होने के लिए प्रतिबंधात्मक है। लेकिन यह सिर्फ एक राय है।


6
मुरब्बा में अब मालिकों को पैकेज में जोड़ने के लिए एपीआई है।
निक फेरियर

31

कई पैकेज रिपॉजिटरी उपलब्ध हैं।

आधिकारिक

GNU ELPA आधिकारिक पैकेज रेपो है। यह छोटा है, और इसमें योगदान करने के लिए एफएसएफ को कॉपीराइट असाइनमेंट (पैकेज के सभी लेखकों के) की आवश्यकता होती है।

जीएनयू ईएलपीए पर पैकेज वास्तव में सिर्फ गिट रेपो हैं । यहां होस्ट किए जाने का फायदा यह है कि कोर टीम पैकेज को अपडेट करने की कोशिश करती है, यदि Emacs खुद ही फीचर्स जोड़ता या डिपॉजिट करता है।

स्रोत से निर्मित

Melpa है सबसे बड़ा और सबसे तेजी से बढ़ते पैकेज रेपो। यह हर बार एक नया संस्करण जारी करता है जब एक नया संस्करण रेपो में धकेल दिया जाता है, या एक EmacsWiki पृष्ठ अपडेट किया जाता है।

यह खून बह रहा है बढ़त है, लेकिन यह व्यवहार में बहुत अच्छी तरह से काम करता है। MELPA डुप्लिकेट पैकेज से बचने के लिए क्यूरेट किया जाता है, और यह सुनिश्चित करने के लिए कि पैकेज का कैनोनिकल होम रिकॉर्ड किया जाता है (रैंडम फोर्क के बजाय)।

MELPA की समस्या यह है कि संस्करण केवल टाइमस्टैम्प हैं, उदाहरण के लिए my-package-20131231.2359। इसका मतलब अगर आप मेरे पैकेज पर निर्भर हैं:

;; Package-Requires: ((my-package "1.2.3"))

तब Emacs सोचेंगे कि MELPA पर कोई भी संस्करण काफी नया है।

MELPA स्थिर MELPA के समान है, लेकिन डेटास्टैम्प संस्करणों का उपयोग करने के बजाय, यह git टैग में संस्करणों का उपयोग करता है। यह बेहतर निर्भरता संकल्प के लिए अनुमति देता है, लेकिन विकी पैकेजों पर निर्भर करता है

उपयोगकर्ता अपलोड

मुरब्बा अन्य प्रोग्रामिंग भाषाओं के पारंपरिक भंडार की तरह है। पैकेज डेवलपर एक रिलीज होने पर पैकेज को मुरब्बा में अपलोड करता है।

सिद्धांत रूप में, यह पैकेजों को एक उचित रिलीज प्रक्रिया देता है (मुरब्बा MELPA को स्थिर बनाता है) और ऑटोजेनरेटेड संस्करण संख्या की समस्या से भी बचता है। हालाँकि, कोई पहचान सत्यापन नहीं है। कोई भी पैकेज अपलोड कर सकता है, भले ही उन्होंने इसे क्यों न लिखा हो। यह मुश्किल हो जाता है यदि अनुरक्षक यह my-packageपाता है कि किसी और ने अपलोड किया है my-packageऔर बाद में नए संस्करण अपलोड नहीं कर सकता है।

मार्मलेड एक नोड.जेएस ऐप हुआ करता था, और अब यह क्विक में लिखा गया है। दोनों संस्करणों में कभी-कभी अपटाइम की समस्या होती है।

परियोजना विशेष

ऑर्ग-मोड ELPA एक रेपो है जो केवल होस्ट करता है orgऔर org-plus-contrib। संगठन-मोड Emacs कोर का हिस्सा है, लेकिन यह बाहरी रूप से विकसित हुआ है और कोड केवल Emacs ट्रंक के साथ समन्वयित है। यह रेपो आपको ब्लीडिंग-एज ऑर्ग-मोड की सुविधा देता है।

User42 ELPA एक एकल पैकेज डेवलपर के लिए एक रेपो है, जिसने काफी हद तक Emacs पैकेज जारी किए हैं । यदि आप उसके किसी भी पैकेज को पसंद करते हैं, तो आप इस रेपो को जोड़ सकते हैं।

सूर्योदय कमांडर ELPA के लिए एक्सटेंशन के लिए रेपो है सूर्योदय कमांडर (फ़ाइल ब्राउज़िंग के लिए एक Emacs पैकेज, आधी रात कमांडर से प्रेरित)।

सेवेन िवरित

ट्रोमी का ईएलपीए पहला रेपो सेट था। इसे आधिकारिक तौर पर GNU ELPA के साथ बदल दिया गया है, लेकिन इसमें समान कॉपीराइट असाइनमेंट की आवश्यकता नहीं थी। 2010 तक, यह अब अद्यतन नहीं है।

एल्पी पैकेज संग्रह में 'एल्पी, द एमैक्स पाइथन डेवलपमेंट एनवायरनमेंट' के लिए जोर्गेन शेफर द्वारा विकसित विभिन्न पैकेज शामिल थे , लेकिन यह MELPA स्टेबल में स्थानांतरित हो गया है।


4
मुरब्बा निश्चित रूप से अपटाइम की समस्या है ... मेरा मानना ​​है कि मैंने उन्हें nic.ferrier.me.uk/blog/2014_08/deploying-blue-green-with-docker के साथ हल किया है - किसी ने गीथब का उपयोग करने में शामिल जोखिमों का उल्लेख नहीं किया है , बैकएंड के रूप में वेब आधारित सॉफ्टवेयर का एक वाणिज्यिक प्रदाता; मेरा मानना ​​है कि यह एक जोखिम है। मुरब्बा मुफ्त सॉफ्टवेयर है और यहां तक ​​कि निर्मित चीज किसी और द्वारा स्थापित करने योग्य है।
निक फेरियर

no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend: लेकिन मुझे यकीन है कि उन चिंताओं को अब गायब हो जाएगा कि यह Microsoft GitHub है ;-)
TomRoche

13

कुछ अतिरिक्त जानकारी, यहाँ अन्य उत्तरों के पूरक के लिए।

  1. MELPA और MELPA के बारे में कुछ जानकारी "स्थिर" -

    StackOverflow से इस सुंदर-बहुत डुप्लिकेट प्रश्न को देखकर शुरू करें , जिसमें प्रश्न के लिए टिप्पणियां भी शामिल हैं। विशेष रूप से, यह टिप्पणी जो मैंने पोस्ट की, डोनाल्ड कर्टिस के साथ ईमेल का आदान-प्रदान करने के बाद (एमईएलपीए और एमईएलए स्थिर के अनुरक्षक):

    उनके दृष्टिकोण से [डोनाल्ड कर्टिस, और जैसा कि मैं उनके लिए मेरे संचार को समझता हूं], "स्थिर" MELPA साइट केवल रखरखाव मोड में है । और केवल यही कारण है कि मेरा जैसा कोड नहीं है, यह है कि "स्थिर" साइट के लिए किसी ने विकि [Emacs Wiki] से अपलोडिंग को लागू नहीं किया है । इसके अलावा, किसी के द्वारा कोई "क्यूरेटिंग" नहीं किया जाता है - यह निर्धारित करने के लिए कोई फ़िल्टरिंग नहीं है कि क्या पैकेज स्थिर, जोखिम भरा है आदि। दो साइटों के अस्तित्व का अनुरोध कुछ पैकेज डेवलपर्स द्वारा किया गया था जो अपने पैकेज के देव संस्करणों को पुराने से अलग करना चाहते थे ("स्थिर") ”) संस्करण।

    संक्षेप में, "MELPA स्थिर" पर सामग्री के बारे में स्वाभाविक रूप से अधिक "स्थिर" कुछ भी नहीं है । संस्करण क्रमांकन और फ़ीड विधि भिन्न हो सकती है; बस इतना ही। और यदि एक विशेष पैकेज अनुचर "विकास" संस्करणों से "स्थिर" को अलग करना चाहता है, और ऐसा करना चाहता है कि उन्हें दो अलग-अलग साइटों पर अपलोड कर रहा है, तो वह प्रभाव है - उस पैकेज के लिए

  2. एमईएलपीए और मार्मलेड (और जीएनयू ईएलपीए) के बीच एक अंतर यह है कि यह आवश्यक नहीं है कि एमईएलपीए में योगदान करने वाले कोड को गिट रिपॉजिटरी से प्राप्त किया जाए। विशेष रूप से, यह Emacs Wiki के Elisp क्षेत्र से स्वचालित रूप से खींचा जा सकता है ।

    क्या इसका मतलब है, जैसा कि कुछ ने कहा है, कि कोई भी कुछ भी अपलोड कर सकता है, और आपके पास यह जानने का कोई तरीका नहीं है कि क्या कोड वास्तव में दावा किए गए लेखक द्वारा है, आदि? हां और ना। सामान्य तौर पर, हाँ: कोई भी Emacs Wiki को Elisp कोड अपलोड करने के लिए स्वतंत्र है। जैसा कि एलिस्प-एरिया पृष्ठ के शीर्ष पर लिखा है:

    यह EmacsWiki elisp क्षेत्र है, जहां हम EmacsLisp फाइलें एकत्र करते हैं। कोई लॉगिन आवश्यक नहीं, कोई संस्करण नियंत्रण की आवश्यकता नहीं, कोई ftp की आवश्यकता नहीं, कोई पासवर्ड की आवश्यकता नहीं। यह विकि के समान ही सरल है। इसका मतलब यह भी है कि कोई भी इन EmacsLisp फ़ाइलों में दुर्भावनापूर्ण कोड रख सकता है। यदि संदेह है, तो उनका उपयोग न करें।

    हालाँकि, बस इतना पता है कि, मैं विकि का प्रशासक हूँ, और विकि लिस्प में मेरे अपने लिस्प पुस्तकालयों में पेज बंद हैं। इसका मतलब है कि केवल एक विकि व्यवस्थापक ही उन्हें अपलोड कर सकता है। तो इस मामले में, आप पूरी तरह से आश्वस्त हो सकते हैं कि आपके द्वारा MELPA या Emacs Wiki से डाउनलोड किए जाने वाले पुस्तकालयों को मेरे द्वारा अपलोड किया गया था। इंटरनेट पर सब कुछ के साथ के रूप में, हालांकि, वहाँ कोई इस्त्री की गारंटी नहीं है, बस कोड के साथ कोई गारंटी नहीं है। जैसा कि हर GPL लाइब्रेरी में GPL ब्लर कहता है:

    यह कार्यक्रम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन किसी भी वारंटी के बिना; बिना किसी पक्षपात के लिए योग्यता या योग्यता के निहित वारंटी के बिना। अधिक विवरण के लिए जीएनयू जनरल पब्लिक लाइसेंस देखें।

HTH। हैप्पी हैकिंग।


मुझे यकीन है कि बहुत आश्वस्त हूं।
निक फेरियर 22

1
मुझे आपकी MELPA राय से असहमत होने दें। पैकेज लेखक MELPA को कुछ भी जारी नहीं करता है। वह या वह सिर्फ अपने ही रेपो के लिए प्रतिबद्ध है, और MELPA इसे उठाता है। अंतर यह है कि एमईएलपीए कुछ भी चुनता है, जबकि एमईएलपीए स्थिर पिक टैग जारी करता है। यह वास्तव में प्राथमिकता का विषय है। कुछ लोग हमेशा सुविधा शाखा बनाना पसंद करते हैं, ट्रंक को पवित्र मानते हैं, और संकेत देते हैं कि ट्रंक में विलय करके परिवर्तन तैयार है। दूसरों को ट्रंक पर विकसित करने के लिए होता है लेकिन स्पष्ट टैगिंग द्वारा तैयार रिलीज को चिह्नित करें। दोनों दृष्टिकोण समझदार हैं ...
मेक जूल

1
… पर्सनैलिटी मैं टैगिंग की तरफ हूं क्योंकि यह मुझे सही और स्पष्ट करता है कि मैं कब और क्यों रिलीज करता हूं (और ट्रंक पर प्रारंभिक संस्करणों को प्रकाशित करने की अनुमति देता है, और छोटे कोड परिवर्तन के लिए फीचर शाखाएं बनाने की आवश्यकता से बचता है, और मुझे संस्करण संख्याओं का उपयोग करने की अनुमति देता है। यह संकेत कि परिवर्तन कितने बड़े हैं, और मुझे मानव-अनुकूल संस्करण संख्याओं का उपयोग करने की अनुमति देते हैं)। नीचे पंक्ति: जब तक कि वहाँ के लेखक जो टैगिंग रिलीज़ को पसंद करते हैं, मेलपा स्थिर है, यह योग्यता है - और मैं कहूंगा कि लेखक में कुछ भी गलत नहीं है, जो टैगिंग द्वारा रिलीज का प्रबंधन करता है, इसके विपरीत, इसका मतलब है कि वह कब और क्या सोचना चाहिए जारी किया।
मेक जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.