Нужна ли мне 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 Package Archive. Существует три широко известных реализации этой спецификации: 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 года добавлено не было.


Похоже, Melpa + Gnu Elpa, и не использовать мармелад, это путь. Любой простой способ конвертировать?
Джастингордон

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

Похоже, что статистические данные Маларбабы застряли в декабре 2015 года ...
JeanPierre

Я добавил еще одно обновление, так как Мармелад мертв
васамаса

-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 only, я бы лучше вместо этого создал свой собственный локальный 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, rainbow-mode и т. Д., Поэтому вряд ли можно утверждать, что он устарел, скорее его важность возрастает по мере того, как все больше людей вступают в разработку Emacs и желают их пакеты должны быть легко доступны для всех.
васамаса

Я немного обновил свой ответ по этому вопросу.
Чен Бен

@wasamasa Не могли бы вы объяснить, почему именно мне нужна GNU Elpa для таких пакетов, как Auctex?
toogley

1
@toogley Потому что он доступен только на GNU ELPA, вот почему.
Васамаса
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.