Используйте опцию, package-archive-priorities
которая была сделана для этой цели. Чтобы предпочесть MELPA Stable, а не MELPA, добавьте в файл инициализации следующее:
(setq package-archives
'(("GNU ELPA" . "https://elpa.gnu.org/packages/")
("MELPA Stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/"))
package-archive-priorities
'(("MELPA Stable" . 10)
("GNU ELPA" . 5)
("MELPA" . 0)))
Чем выше число, тем выше приоритет архива пакета. Для любого пакета, который существует в нескольких архивах, менеджер пакетов Emacs выбирает пакет из архива с самым высоким приоритетом и игнорирует пакеты в других архивах, даже если номер версии выше. Если пакет существует в двух архивах с одинаковым приоритетом, побеждает более высокий номер версии, и в конечном итоге я думаю, что порядок в package-archives
.
Я рекомендую явно назначать приоритет всем архивам, включая архив GNU ELPA по умолчанию, чтобы избежать двусмысленности. Хотя архивы, для которых нет, package-archive-priorities
имеют приоритет по умолчанию 0, слишком легко забыть об этом.
package-archive-priorities
была введена в Emacs 25.1, для более ранних выпусков смотрите старый ответ ниже:
В Emacs 24 невозможно по умолчанию использовать MELPA Stable и использовать MELPA только для определенных пакетов. Без какой-либо настройки package.el по умолчанию использует архив с самой высокой версией , а именно MELPA. Нет интерфейса, чтобы изменить это.
Тем не менее, начиная с Emacs 24.4, новая опция package-pinned-packages
позволяет вам прикреплять отдельные пакеты к архивам, но это только позволяет вам реализовать обратную задачу: по умолчанию использовать MELPA и использовать MELPA Stable для определенных пакетов.
Следовательно, в настоящее время ваш единственный вариант - заполнить package-pinned-packages
все пакеты, которые вы хотели бы использовать, либо вручную, либо с помощью некоторого фрагмента кода Emacs Lisp. Обратите внимание, что это package-pinned-packages
должно быть установлено перед вызовом, package-refresh-contents
потому что закрепление оценивается при построении индекса пакета , а не при установке пакетов.
Долгосрочным решением было бы M-x report-emacs-bug
попросить разработчиков Emacs реализовать какую-то функцию «архива по умолчанию» или попросить сопровождающего сословия сделать выпуски с соответствующей маркировкой, чтобы MELPA Stable могла создавать стабильные пакеты для него. Однако ни то, ни другое может оказаться непростым делом, поскольку первое требует больших изменений в package.el, а второе - сосульки перемещаются из EmacsWiki в какой-то правильный репозиторий VCS с тегами, что, как я полагаю, его сопровождающий не желает делать, для если бы они были, они бы сделали это давно.