मैं एक ELPA सर्वर कैसे सेट कर सकता हूं?


15

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

हम पैकेज स्थापना और रखरखाव को यथासंभव आसान बनाना चाहते हैं और हमें लगता है कि इसका मतलब एकीकरण है package.el। ऐसे उपयोग के लिए भंडार स्थापित करने के लिए हमें क्या करने की आवश्यकता है?


मैं MELPA कांटा और अपने पैकेज के लिए व्यंजनों लिखना होगा! वैकल्पिक रूप से, केवल व्यंजनों को प्रदान करें और अपने सहकर्मियों को QUELPA पर इंगित करें।
चंद्र

जवाबों:


18

मैंने package.elपहले दो निर्देशिकाओं का उपयोग करके एक स्थानीय पैकेज संग्रह (एमएसीएस 24.5) स्थापित किया, pkgsऔर local। (नाम कोई मायने नहीं रखते।) आपके पैकेज वाली फाइलें अंदर चली जाती हैं pkgs, और localआपके संग्रह को रोककर रख देंगी। यदि आप दूसरों के लिए एक संग्रह उपलब्ध कराना चाहते हैं, तो आप localएक वेब सर्वर का उपयोग कर सकते हैं , लेकिन प्रक्रिया स्थानीय संग्रह के निर्माण के समान है।

मैंने अपनी init.elफ़ाइल में निम्नलिखित डाला :

(require 'package)
(setq package-enable-at-startup nil)

(require 'package-x)
(defvar local-archive
  (expand-file-name "local/" user-emacs-directory)
  "Location of the package archive.")
(setq package-archive-upload-base local-archive)
(add-to-list 'package-archives `("local" . ,local-archive) t)

(package-initialize)

मैं अपने में अपने संग्रह डाल .emacs.dनिर्देशिका (इसलिए user-emacs-directoryमें expand-file-nameफार्म) लेकिन आप इसे कहीं भी आप की तरह रख सकते हैं।

एक बार इसका मूल्यांकन हो जाने के बाद, M-x package-upload-fileअपने पैकेज के फ़ाइल नाम को निष्पादित करें और प्रविष्ट करें। यह एक नया पैकेज जनरेट करेगा local। तुम वहाँ में तीन नए फ़ाइलों को देखने, होगा archive-contents, yourpackagename-version.elऔर yourpackagename-readme.txt। अब आपको M-x package-list-packagesअपने पैकेज को सूचीबद्ध करने और देखने में सक्षम होना चाहिए । भाग्य के साथ, वे "नए" चिह्नित शीर्ष पर होंगे। आप हमेशा की तरह पैकेज को स्थापित कर सकते हैं, और आप इसे .emacs.d/elpaकिसी अन्य पैकेज की तरह अपनी निर्देशिका में दिखा सकते हैं ।

यह Emacs 24 के लिए बॉक्स से बाहर काम करना चाहिए। मुझे पहले के संस्करणों के बारे में निश्चित नहीं है। आपके उपयोगकर्ता आपके पैकेज को सामान्य तरीके से शामिल करके एक्सेस कर सकते हैं

(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives 
  '("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)

उनकी init.elफ़ाइल में।

पैकेज लिखने के तरीके के बारे में जानकारी के लिए , GNU Emacs Lisp मैनुअल में वितरण के लिए लिस्प कोड तैयार करना देखें ।


धन्यवाद! यह एक बहुत ही अच्छा जवाब है और इसने मेरे लिए अच्छा काम किया है। मेरा बस एक ही सवाल है .. जब मैं करता हूं M-x package-update-file, तो यह .elसीधे फाइल को local/डाइर के नीचे रख देता है । वहाँ इतना है कि हम अंत प्रत्येक पैकेज के लिए उप-निर्देशिका बनाने के लिए एक रास्ता है local/pkg1/pkg1.el, local/pkg2/pkg2.el...?
कौशल मोदी

मेरी जानकारी मे नहीं। elpaनिर्देशिका जिस तरह से आप का वर्णन की स्थापना की है। मैं वास्तव में नहीं जानता कि क्यों localनहीं है। ध्यान रखें कि ये फाइलें अपने आप उत्पन्न हो जाती हैं, इसलिए किसी को भी वास्तव में इनकी ओर देखना नहीं पड़ता है। मैं अपनी फ़ाइलों को git के साथ संस्करण नियंत्रण में रखता हूं, और उस कारण से अपनी localनिर्देशिका रखता हूं .gitignore। मैं अपनी pkgsनिर्देशिका को अच्छी तरह से व्यवस्थित रखता हूं , और संस्करण नियंत्रण के तहत, लेकिन localयह क्या है।
रॉडने की कीमत

धन्यवाद। तो पुष्टि करने के लिए, सभी फाइलें आपके एक फ्लैट पदानुक्रम में local/भी डंप हो जाती हैं? मैं पदानुक्रमित व्यवस्था चाहता था ताकि मैं पैकेज के URL मेटा डेटा को ;; URL: http://yourdomain.com/path-to-local-dir/pkg1और विभिन्न पैकेजों के लिए निर्दिष्ट कर सकूं। लेकिन यह कोई बड़ी बात नहीं है। मैं अपने पैकेज को स्थानीय इलापा में प्रकाशित करने के लिए अधिक रोमांचित हूं। :)
कौशल मोदी

1
मेरा भी फ्लैट है। मैं localवैसे भी आपके उपयोगकर्ताओं को उस निर्देशिका में इंगित नहीं करूंगा । इसके बजाय उन्हें मूल स्रोत पर इंगित करें।
रोडनी प्राइस

यह भी खूब रही! लेकिन जब मैं इसे विंडोज़ पर टार फ़ाइलों के साथ उपयोग करता हूं, तो एक टूटा हुआ टार अपलोड हो जाता है और मुझे इसे फिर से कॉपी करना पड़ता है। Emacs में बग? 24.5
फेमिल

1

यदि आप MELPA जैसी किसी चीज़ की मेजबानी करना चाहते हैं, तो आप MELPA के विकि पर निर्देश प्राप्त कर सकते हैं कि कैसे अपने स्वयं के MPAPA उदाहरण की मेजबानी करें:

https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive

अनिवार्य रूप से, यह नीचे उबालता है:

  1. फोर्क / क्लोन MELPA GitHub रिपॉजिटरी
  2. recipes/निर्देशिका से सभी मौजूदा व्यंजनों को हटा दें
  3. अपने स्वयं के व्यंजनों को जोड़ें
  4. भागो make
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.