क्या एक ही समय में MELPA और MELPA- स्थिर दोनों का उपयोग करना संभव है?


29

मैं एक अतिरिक्त पैकेज रिपॉजिटरी के रूप में मेल्पा-स्थिर का उपयोग करता हूं, लेकिन उन पैकेजों में से एक जो मुझे उपयोग करना पसंद है (आइकल्स) मेलपा-स्थिर पर उपलब्ध नहीं है। क्या पैकेज को कॉन्फ़िगर करने का कोई तरीका है। सामान्य रूप से मेलपा-स्थिर का उपयोग करने के लिए, लेकिन पैकेज के एक विशिष्ट सबसेट के लिए मेलपा का उपयोग करें?


1
24.4; emacs अपग्रेड करने के लिए ;-)
मालाबार

@ मलबारबा, कि कार्ड पर निश्चित रूप से है ...
टिमो Geusch

मैं iciclesया तो melpa पर नहीं मिल सकता है ।
user650654

जवाबों:


34

उस विकल्प का उपयोग करें package-archive-prioritiesजो इस उद्देश्य के लिए बनाया गया था। MELPA पर MELPA स्थिर पसंद करने के लिए, अपनी init फ़ाइल में निम्नलिखित जोड़ें:

(setq package-archives
      '(("GNU ELPA"     . "https://elpa.gnu.org/packages/")
        ("MELPA Stable" . "https://stable.melpa.org/packages/")
        ("MELPA"        . "https://melpa.org/packages/"))
      package-archive-priorities
      '(("MELPA Stable" . 10)
        ("GNU ELPA"     . 5)
        ("MELPA"        . 0)))

संख्या जितनी अधिक होगी, पैकेज संग्रह की प्राथमिकता उतनी ही अधिक होगी। कई अभिलेखागार में मौजूद किसी भी पैकेज के लिए Emacs के पैकेज प्रबंधक संग्रह को उच्चतम प्राथमिकता के साथ पैकेज से उठाता है, और अन्य संग्रह में पैकेजों की उपेक्षा करता है, भले ही संस्करण संख्या अधिक हो। यदि पैकेज एक ही प्राथमिकता के दो अभिलेखागार में मौजूद है, तो उच्च संस्करण संख्या जीत जाती है, और अंत में मुझे लगता है कि आदेश में है package-archives

मैं स्पष्ट रूप से सभी अभिलेखागार को प्राथमिकता देने की सलाह देता हूं, जिसमें किसी भी अस्पष्टता से बचने के लिए डिफ़ॉल्ट GNU ELPA संग्रह भी शामिल है। यद्यपि अभिलेखागार package-archive-prioritiesमें 0 की डिफ़ॉल्ट प्राथमिकता नहीं है , लेकिन यह सब भूल जाना बहुत आसान है।

package-archive-priorities Emacs 25.1 में पेश किया गया था, पहले रिलीज के लिए नीचे दिए गए पुराने उत्तर देखें:


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

हालाँकि, Emacs 24.4 के रूप में नया विकल्प package-pinned-packagesआपको अभिलेखागार में अलग-अलग पैकेजों को पिन करने की अनुमति देता है, लेकिन यह आपको केवल अपनी आवश्यकता के व्युत्क्रम को लागू करने देता है: MELPA के लिए डिफ़ॉल्ट, और विशिष्ट पैकेजों के लिए MELPA स्थिर का उपयोग करें।

इसलिए, वर्तमान में आपका एकमात्र विकल्प उन package-pinned-packagesसभी पैकेजों को भरना है, जिनका आप उपयोग करना चाहते हैं, या तो मैन्युअल रूप से या Emacs Lisp कोड के कुछ टुकड़े के साथ। ध्यान दें कि कॉल package-pinned-packagesकरने से पहले सेट किया जाना चाहिए package-refresh-contentsक्योंकि पैकेज इंडेक्स का निर्माण करते समय पिनिंग का मूल्यांकन किया जाता है , और पैकेज स्थापित करते समय नहीं।

एक लंबी अवधि के समाधान के M-x report-emacs-bugलिए Emacs डेवलपर्स को "डिफ़ॉल्ट संग्रह" सुविधा को लागू करने के लिए या आइकनों के अनुरक्षक से उचित टैग जारी करने के लिए कहने के लिए कहा जाएगा ताकि MELPA स्थिर इसके लिए स्थिर पैकेज बना सके। न तो यह आसान हो सकता है, हालांकि, चूंकि पूर्व में package.el को बड़े बदलावों की आवश्यकता है, और बाद वाले को इकासविकि से कुछ उचित वीसीएस रिपॉजिटरी में टैग के साथ ले जाया जाता है, जिसे मैं मानता हूं कि इसके अनुरक्षक इसके लिए तैयार नहीं हैं, क्योंकि अगर वे होते तो बहुत पहले ही कर लेते।


0

यहां आपको समानांतर में दोनों रिपॉजिटरी का उपयोग करने के बारे में चर्चा है, इसलिए यह 24.4 के साथ संभव होना चाहिए; क्या आपने उदाहरण के लिए रेपो की सूची को अद्यतन करने की कोशिश की है, फिर विरोधाभास की आवश्यकता है , और अंत में मूल रेपो सूची में वापस आ रहे हैं?

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