ฉันยังต้องใช้ GNU ELPA หรือไม่ถ้าฉันมี MELPA


31

สิ่งนี้ทำให้ฉันสับสนอยู่เสมอเนื่องจากมีคนบอกว่า MELPA มีแพ็คเกจรุ่นใหม่กว่า แต่ก็ไม่ชัดเจนถ้า GNU ELPA เป็นเพียงส่วนหนึ่งของ MELPA หรือถ้าฉันต้องการทั้งสองอย่าง?

เหตุผลที่ฉันถามคือฉันกำลังทดลองกับแพ็คเกจของฉันมากและpackage-list-packagesใช้เวลาพอสมควร ฉันรับรู้package-list-packages-no-fetchแต่บ่อยกว่าที่ฉันไม่ต้องการรับรายการแพ็คเกจล่าสุด

ดังนั้นคำถามคือฉันสามารถใช้ MELPA และรับแพ็คเกจ (และรุ่นที่ใหม่กว่า) ได้เหมือนกันถ้าฉันใช้ทั้ง MELPA และ GNU ELPA


5
ใช่คุณต้องมี GNU Elpa เสมอ
Malabarba

ที่เกี่ยวข้อง: emacs.stackexchange.com/q/268/115
Kaushal Modi

คำตอบ:


45

ก่อนอื่นELPAเป็นชื่อของสเปคนั่นคือ Emacs Lisp Package Archive มีการใช้งานข้อกำหนดสามอย่างที่รู้จักกันอย่างแพร่หลาย GNU ELPA, Marmalade และ MELPA

GNU ELPAเป็นไฟล์เก็บถาวร GNU Emacs อย่างเป็นทางการซึ่งเปิดใช้งานนอกกรอบสำหรับการติดตั้ง Emacs ใหม่ที่เพียงพอ มันมีขนาดค่อนข้างเล็กทำให้ต้องมีการกำหนดลิขสิทธิ์และให้ความร่วมมือกับรายชื่อผู้รับจดหมายอย่างเป็นทางการ มันเป็นสิ่งที่ใกล้เคียงที่สุดที่เราต้องทำการเปรียบเทียบเทียบกับไฟล์เก็บถาวรของแพ็คเกจการแจกจ่าย Linux

Marmaladeเป็นไฟล์เก็บถาวรที่ไม่เป็นทางการพร้อมกับแพ็คเกจจำนวนมาก ผู้เขียนและผู้บำรุงรักษาจำเป็นต้องอัปโหลดการเผยแพร่ด้วยตนเอง การทำ Vetting จะกระทำครั้งเดียวสำหรับสมาชิกใหม่ทุกคนก่อนที่จะอนุญาตให้พวกเขามีบัญชีผู้ใช้หลังจากนั้นพวกเขาก็มีอิสระที่จะปล่อยตามที่พวกเขาต้องการ

MELPAเป็นคลังข้อมูลที่ไม่เป็นทางการอีกหนึ่งแพคเกจที่ใหญ่ที่สุด แต่ละแพ็กเกจได้รับการตรวจสอบสั้น ๆ สำหรับสไตล์ของโค้ดโดยมีการร้องขอแบบดึงเพื่อรวมหลังจากนั้นแพ็กเกจจะถูกสร้างขึ้นโดยอัตโนมัติจากแหล่งที่มา (โดยปกติคือ VCS) การสร้างใหม่สามารถเกิดขึ้นได้ทุกชั่วโมง นอกจากนี้ยังมีเสถียรภาพของ MELPAซึ่งสร้างแท็กเผยแพร่เท่านั้น แต่มีแพ็คเกจน้อยกว่าน้อยกว่า Marmalade

สำหรับการทับซ้อนนั้นไม่มีการซ้อนทับกันระหว่าง GNU ELPA และ Marmalade และในทำนองเดียวกันสำหรับ GNU ELPA และ MELPA Marmalade และ MELPA ซ้อนทับกันในปริมาณที่พอใช้ ฉันคาดว่า Marmalade ส่วนใหญ่จะเป็นเซตย่อยของ MELPA นั่นเป็นเหตุผลที่คุณสามารถไปกับ MELPA สำหรับแพ็คเกจส่วนใหญ่และบางที GNU ELPA สำหรับบางสิ่งที่ขาดหายไป

อัปเดต : ตามสถิติแพคเกจของ Malabarba MELPA Stable มีมากกว่า Marmalade ในจำนวนแพ็คเกจที่มี ตอนนี้ฉันจะไปรับที่ Marmalade

ปรับปรุง : Marmalade เป็นหลักตาย ใบรับรองหมดอายุและมีแพ็คเกจใหม่ใด ๆ ที่อัปโหลดแทบจะไม่ นี่เป็นเพราะกระบวนการค่อนข้างผิดปกติคุณจะต้องเพิ่มเจ้าของโดยผู้ใช้ด้วยตนเองและเมื่อเขาหายไปจะไม่มีการเพิ่มผู้ใช้ใหม่ตั้งแต่ 2559 หรือมากกว่านั้น


เสียงเหมือน Melpa + Gnu Elpa และไม่ใช้ Marmalade เป็นวิธีที่จะไป มีวิธีง่าย ๆ ในการแปลง?
justingordon

เพียงแค่ปรับแต่งตามและปรับปรุงดัชนีเช่นโดยการใช้package-archives ควรแสดงรายการที่แตกต่างกว่าเดิม M-x package-refresh-contentsM-x list-packages
wasamasa

ดูเหมือนว่าสถิติแพคเกจของ malarbaba ติดอยู่ในเดือนธันวาคม 2558 ...
JeanPierre

ฉันได้เพิ่มการอัปเดตอีกหนึ่งรายการเมื่อ Marmalade นั้นตายแล้ว
wasamasa

-5

ไม่คุณอาจไม่ต้องการ GNU ELPA หรือ ELPA ใด ๆ

เหตุผลในทางปฏิบัติที่จะไม่ใช้ GNU ELPA หรือที่เก็บของบุคคลที่สามใด ๆ คือการปกป้อง Emac ของฉันจากการปิด ELPA การปิดระบบเกิดขึ้นเป็นครั้งคราว (ดูhttps://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 )

แพ็คเกจส่วนใหญ่ของฉันถูกดาวน์โหลดจาก https // melpa.org ฉันสามารถหลีกเลี่ยง GNU ELPA โดยสร้างมิเรอร์แพ็คเกจเล็ก ๆ ของแพ็คเกจ GNU ELPA ที่เลือก

ตรวจสอบการตั้งค่าของฉันที่https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.elไม่ใช้ GNU ELPA

ถ้าผมต้องใช้บางส่วนแพคเกจ GNU ELPA เท่านั้นฉันอยากจะสร้าง ELPA ในท้องถิ่นของตัวเองแทน (มันเป็นง่ายๆเป็นสร้างไฟล์ข้อความarchive-contents), ~/.emacs.d/localelpaตรวจสอบของฉัน

เช่นseq-2.20.tarมีอยู่ที่ GNU ELPA เท่านั้นและฉันต้องการสิ่งนี้ ดังนั้นฉันจึงเพิ่มแพ็กเกจนี้ลงใน elpa ท้องถิ่นของฉันที่https://github.com/redguardtoo/emacs.d/tree/master/localelpa

ปัจจุบันฉันใช้แพ็คเกจสี่ชุดจาก GNU ELPA เท่านั้น

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

แพ็คเกจเหล่านี้อยู่ในของฉันlocalelpaดังนั้นฉันจึงไม่จำเป็นต้องเข้าถึง GNU ELPA

คุณสามารถตรวจสอบแพ็คเกจของฉันได้ที่https://github.com/redguardtoo/elpa-mirrorซึ่งสร้างที่เก็บข้อมูลในเครื่องจากแพ็คเกจที่ติดตั้ง ดังนั้นแม้แต่พื้นที่เก็บข้อมูลระยะไกล (GNU ELPA, MELPA) ก็เป็นทางเลือกในขณะนี้

คุณยังสามารถใช้แหล่งข้อมูลแทนแพ็คเกจที่ดาวน์โหลด กรุณาตรวจสอบhttps://github.com/redguardtoo/emacs.d/tree/master/site-lisp rainbow-modeคุณต้องเข้าใจว่ามีอะไรload-path( http://emacswiki.org/emacs/LoadPath ) หากคุณใช้แหล่งที่มา

คุณสามารถpackage--add-to-archive-contentsให้คำแนะนำในการปรับแต่งแพ็กเกจก่อนที่จะแสดงในตัวจัดการแพ็คเกจ นี่เป็นแฮ็คที่ไม่มีเอกสาร มันทำงานได้จาก Emacs 23.4 ถึง Emacs 27 ดูinit-elpa.elตัวอย่าง


7
คุณต้องใช้ GNU ELPA สำหรับแพ็คเกจเช่น Auctex, seq.el, let-alist, โหมดสายรุ้ง ฯลฯ ดังนั้นฉันแทบจะเถียงว่ามันล้าสมัย แต่ความสำคัญของมันก็เพิ่มขึ้นเมื่อผู้คนจำนวนมากเข้าสู่การพัฒนา Emacs และต้องการให้พวกเขา แพคเกจที่จะสามารถใช้ได้อย่างง่ายดายสำหรับทุกคน
wasamasa

ฉันอัปเดตคำตอบของฉันเล็กน้อยในเรื่องนี้
เฉินถัง

@wasamasa คุณช่วยอธิบายได้มั้ยว่าทำไมฉันถึงต้องใช้ gnu elpa สำหรับแพ็คเกจเช่น auctex?
toogley

1
@toogley เนื่องจากมีเฉพาะใน GNU ELPA นั่นเป็นเหตุผล
วาซามาซา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.