Это всегда смущало меня, так как люди говорят, что у MELPA действительно есть более новые версии пакетов, но не совсем понятно, является ли GNU ELPA просто подмножеством MELPA, или мне нужны оба варианта?
Причина, по которой я спрашиваю, состоит в том, что я много экспериментирую со своими пакетами, и это package-list-packages
занимает довольно много времени. Я знаю package-list-packages-no-fetch
, но чаще всего я хотел бы получить самый последний список пакетов.
Итак, вопрос в том, могу ли я просто использовать MELPA и получать такие же (и, возможно, более новые версии) пакеты, как если бы я использовал и MELPA, и GNU ELPA?
package
package-repositories
Якуб Арнольд
источник
источник
Ответы:
Прежде всего, 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 года добавлено не было.
источник
package-archives
соответственно и обновите индекс, как с помощьюM-x package-refresh-contents
.M-x list-packages
должен отображать другой список, чем раньше.Нет, вам может не понадобиться 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,
Эти пакеты размещены в моем,
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
Например.источник