GNU ELPA является официальным репозиторием пакетов GNU Emacs. Это единственный, включенный по умолчанию, что означает, что он имеет наибольшую досягаемость. В то же время при отправке пакета возникает некоторая хлопотная ситуация, требующая присвоения FSF авторских прав, а это означает, что выбор пакетов относительно ограничен.
MELPA и Marmalade являются сторонними хранилищами пакетов. Они официально не поддерживаются GNU, но также имеют гораздо больший выбор пакетов. Качество упаковки немного более изменчиво, но вы с большей вероятностью найдете то, что ищете, особенно если это немного неясно.
Marmalade и MELPA имеют несколько разные модели для загрузчиков пакетов. Насколько я понимаю, MELPA отслеживает хранилище управления версиями напрямую (например, через GitHub), позволяя авторам пакетов обновлять пакеты, просто отправляя коммиты в ветку. Мармелад, с другой стороны, заставляет людей явно загружать пакеты в хранилище.
На практике я не видел большой разницы между MELPA и Мармеладом. Нет большого недостатка в том, чтобы предоставить им обоим максимально широкий выбор устанавливаемых пакетов: я использовал оба (и GNU ELPA, конечно) какое-то время без особых проблем.
Одной из возможных проблем (с которой я не сталкивался) с включением обоих репозиториев, с которой я не сталкивался, является наличие пакетов, доступных в обеих версиях. По умолчанию менеджер пакетов ( package.el
) не имеет способа разрешить конфликт, подобный этому; однако, вы можете решить эту проблему, установив melpa
пакет, который позволяет вам настраивать, какие пакеты предоставляются или исключаются из каких репозиториев. Вы можете увидеть более подробную информацию здесь или из документации для melpa
пакета.
Как подсказал @Malabarba, эта проблема решена в Emacs 24.4.
Если вы действительно беспокоитесь о безопасности, вы можете избегать как MELPA, так и Marmalade, потому что они позволяют кому-либо загружать пакеты и, насколько я знаю, не имеют никаких активных мер безопасности. Хранилище GNU ELPA, с другой стороны, управляется FSF и имеет подписанные пакеты, которые должны помочь. Конечно, если безопасность действительно важна, вы можете просто просмотреть и установить пакеты elisp вручную вместо использования менеджера пакетов.
На мой взгляд, у некоторых репозиториев больше затрат на отправку пакетов, чем у других; в репо с большими накладными расходами, как правило, меньше пакетов. В порядке от большинства к минимуму накладных расходов:
Лично я думаю, что MELPA Stable или Marmalade, вероятно, выиграют в долгосрочной перспективе для большинства пользователей - собственно MELPA довольно нестабильна, а ELPA слишком ограничена, чтобы быть действительно масштабируемой для большого количества пакетов. Но это просто мнение.
источник
Доступно несколько репозиториев пакетов.
официальный
GNU ELPA является официальным пакетом репо. Он небольшой и требует передачи авторских прав (всех авторов пакета) в ФФС, чтобы способствовать этому.
Пакеты на GNU ELPA на самом деле просто git-репо . Преимущество размещения здесь состоит в том, что основная команда пытается обновить пакеты, если Emacs сам добавляет или осуждает функции.
Построен из источника
MELPA является крупнейшим и наиболее быстро растущим репо-пакетом. Он выпускает новую версию каждый раз, когда новая версия помещается в репозиторий или обновляется страница EmacsWiki.
Это кровоточит, но на практике работает очень хорошо. MELPA курируется, чтобы избежать дублирования пакетов и обеспечить запись канонического дома пакета (вместо случайного разветвления).
У MELPA действительно есть проблема, что версии - это просто временные метки, например
my-package-20131231.2359
. Это означает, что если вы зависите от my-package:тогда Emacs будет думать, что любая версия на MELPA достаточно новая.
MELPA Stable - это то же самое, что и MELPA, но вместо того, чтобы использовать версии с датой, он использует версии в тегах git. Это позволяет лучше разрешать зависимости, но имеет проблемы с зависимостью от пакетов вики .
Пользователь загружает
Мармелад гораздо больше похож на традиционный репозиторий из других языков программирования. Разработчик пакета загружает пакет в Marmalade, когда они делают релиз.
В принципе, это дает пакетам надлежащий процесс выпуска (Marmalade предшествует стабильной версии MELPA), а также позволяет избежать проблемы с автоматически генерируемым номером версии. Тем не менее, нет подтверждения личности. Любой может загрузить пакет, даже если он его не написал. Это становится трудным, если сопровождающий
my-package
обнаруживает, что кто-то еще загрузил его,my-package
и не может впоследствии загрузить новые версии.Marmalade раньше был приложением node.js, и теперь оно написано на elisp. Обе версии иногда имели проблемы с работоспособностью.
Проект конкретных
Орг-режим ELPA - это репозиторий , в котором только хосты
org
иorg-plus-contrib
. Режим Org является частью ядра Emacs, но он разрабатывается извне, и код периодически синхронизируется с транком Emacs. Этот репо позволяет вам использовать передовой режим орг.User42 ELPA - это репозиторий для разработчика одного пакета, который выпустил целый ряд пакетов Emacs . Если вам нравится какой-либо из его пакетов, вы можете добавить этот репозиторий.
Sunrise Commander ELPA - это репозиторий для расширений для Sunrise Commander (пакет Emacs для просмотра файлов, созданный по мотивам Midnight Commander ).
На пенсии
ELPA Тромея был первым репо. Он официально заменен GNU ELPA, но у него не было тех же требований по передаче авторских прав. По состоянию на 2010 он больше не обновляется.
Архив пакетов Elpy содержал различные пакеты, разработанные Йоргеном Шефером для «Elpy, среды разработки Emacs Python» , но переведенные в MELPA Stable.
источник
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
: но я уверен, что эти проблемы исчезнут теперь, когда это Microsoft GitHub;-)
Некоторая дополнительная информация, чтобы дополнить другие ответы здесь.
Некоторая информация о MELPA и MELPA "стабильный" -
Начните с рассмотрения этого довольно повторяющегося вопроса от StackOverflow, включая комментарии к самому вопросу. В частности, этот комментарий, который я разместил после обмена электронной почтой с Дональдом Кертисом (сопровождающим MELPA и MELPA stable):
В целом, нет ничего более стабильного в содержании «MELPA stable» . Нумерация версий и метод подачи могут отличаться; вот и все. И если конкретный сопровождающий пакета хочет отличить «стабильные» от «разработанных» версий и хочет сделать это, загрузив их на два разных сайта, то это эффект - для этого пакета .
Одно из различий между MELPA и Marmalade (и GNU ELPA) заключается в том, что не требуется, чтобы код, внесенный в MELPA, был получен из репозитория git. В частности, его можно автоматически вытащить из области Elisp в Emacs Wiki .
Означает ли это, как говорили некоторые, что любой может загрузить что угодно, и у вас нет возможности узнать, действительно ли код принадлежит заявленному автору и т. Д.? И да и нет. В общем, да: любой может загрузить код Elisp в Emacs Wiki. В верхней части страницы Elisp-Area говорится:
Однако, как вы знаете, я администратор вики, и мои собственные библиотеки Lisp в вики Elisp Area являются заблокированными страницами. Это означает, что только администратор вики может загрузить их. Так что в этом случае вы можете быть совершенно уверены, что мои библиотеки, которые вы загружаете с MELPA или Emacs Wiki, были загружены мной. Однако, как и в случае со всем, что есть в Интернете, нет никакой железной гарантии, так же как и с самим кодом. Как говорит реклама GPL в каждой библиотеке GPL:
НТН. Счастливого взлома.
источник