Чи потрібно мені GNU ELPA, якщо у мене є MELPA?


31

Це завжди мене бентежить, оскільки люди говорять, що у MELPA є новіші версії пакетів, але це не зовсім зрозуміло, чи GNU ELPA - лише підмножина MELPA, чи мені це потрібно обоє?

Причина, чому я прошу, полягає в тому, що я багато експериментую зі своїми пакунками і package-list-packagesзаймає досить багато часу. Я знаю package-list-packages-no-fetch, але найчастіше я хотів би отримати останній список пакунків.

Отже, питання полягає в тому, чи можу я просто використовувати MELPA і отримувати ті самі (і, можливо, новіші версії) пакунків, як якщо б я використовував і MELPA, і GNU ELPA?


5
Так, вам завжди потрібна GNU Elpa.
Малабарба

Відповіді:


45

Перш за все, ELPA - назва специфікації, Архів пакетів Emacs Lisp. Існує три широко відомі реалізації цієї специфікації: GNU ELPA, Marmalade та MELPA.

GNU ELPA - це офіційний архів GNU Emacs, включений у вікно для достатньо нових установок Emacs. Він порівняно невеликий, його внесок вимагає присвоєння авторських прав та співпраці з офіційним списком розсилки. Це найближче, що ми маємо для перевірки, порівнянного з архівом пакету дистрибутивів Linux.

Marmalade - це неофіційний архів із великою кількістю перероблених пакунків. Автори та технічні працівники повинні завантажувати свої випуски вручну. Проведення перевірок проводиться один раз для кожного нового члена перед тим, як дозволити їм мати обліковий запис користувача, після цього вони можуть звільнитись за бажанням.

MELPA - ще один неофіційний архів із найбільшою кількістю пакетів. Кожен пакет коротко ознайомлюється зі стилем коду з його запитом на включення, після чого пакунки автоматично будуються з джерел (зазвичай VCS). Перебудови можуть відбуватися щогодини. Також є стабільна система MELPA, яка створює лише теговані випуски, але має набагато менше пакетів, менше рівних, ніж Marmalade.

Що стосується перекриття, то практично немає перекриття між GNU ELPA та Marmalade, і аналогічно для GNU ELPA та MELPA. Мармелад та MELPA, однак, перекривають неабияку суму. Я вважаю, що більша частина Мармеладу - це підмножина MELPA. Ось чому ви можете піти з MELPA для більшості пакетів і, можливо, GNU ELPA для кількох відсутніх.

Оновлення : За статистикою пакету Malabarba, MELPA Stable перевершив Marmalade за кількістю доступних пакетів. Я б зараз забрав його над Мармеладом.

Оновлення : Мармелад по суті мертвий. Термін дії сертифікату закінчився, і нових пакетів майже не завантажено. Це пов’язано з його досить незвичним процесом, його потрібно вручну додати до користувачів його власником, і оскільки він зник безвісти, з 2016 року або більше нових користувачів не додано.


Звучить як Мельпа + Гну Ельпа, а не використання мармеладу - це шлях. Будь-який простий спосіб конвертувати?
justingordon

Просто налаштуйте package-archivesвідповідним чином і оновіть індекс, як, наприклад, використовуючи M-x package-refresh-contents. M-x list-packagesповинен відображати інший список, ніж раніше.
wasamasa

Здається, статистика пакету маларбаби застрягла в грудні 2015 року ...
ЖанП'єр

Я додав ще одне оновлення, коли Мармелад мертвий
wasamasa

-5

Ні, можливо, вам не знадобиться GNU ELPA або будь-яка ELPA.

Практична причина не використовувати GNU ELPA або будь-яке сторонне сховище - це захист мого Emacs від відключення 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 athttps://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, rainbow-mode тощо. Тому я навряд чи заперечую, що це застаріло, а не що його значення зростає, оскільки все більше людей вступає в розвиток Emacs і бажає їх пакети, які будуть легко доступними для всіх.
wasamasa

Я трохи оновив свою відповідь на це питання.
Чень бен

@wasamasa, чи можете ви поясніть, чому саме мені потрібна gnu elpa для таких пакунків, як auctex?
toogley

1
@toogley Оскільки він доступний лише в GNU ELPA, саме тому.
wasamasa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.