Verwenden Sie die dafür vorgesehene Option package-archive-priorities
. Um MELPA Stable gegenüber MELPA zu bevorzugen, fügen Sie Ihrer Init-Datei Folgendes hinzu:
(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)))
Je höher die Zahl, desto höher ist die Priorität eines Paketarchivs. Für jedes Paket, das in mehreren Archiven vorhanden ist, wählt der Paketmanager von Emacs das Paket mit der höchsten Priorität aus dem Archiv aus und ignoriert Pakete in anderen Archiven, auch wenn die Versionsnummer höher ist. Wenn das Paket in zwei Archiven mit der gleichen Priorität vorhanden ist, gewinnt die höhere Versionsnummer, und letztendlich denke ich, die Reihenfolge in package-archives
.
Ich empfehle, allen Archiven, einschließlich des Standard-GNU-ELPA-Archivs, explizit eine Priorität zuzuweisen, um Unklarheiten zu vermeiden. Obwohl Archive, die nicht in package-archive-priorities
sind, eine Standardpriorität von 0 haben, ist es allzu leicht, das zu vergessen.
package-archive-priorities
wurde in Emacs 25.1 eingeführt. Frühere Versionen finden Sie in der alten Antwort unten:
In Emacs 24 ist es nicht möglich, standardmäßig MELPA Stable zu verwenden und MELPA generell nur für bestimmte Pakete zu verwenden. Ohne Anpassungspaket.el wird standardmäßig das Archiv verwendet, das die höchste Version bereitstellt , nämlich MELPA. Es gibt keine Schnittstelle, um das zu ändern.
package-pinned-packages
Ab Emacs 24.4 können Sie mit der neuen Option einzelne Pakete an Archive anheften. Damit können Sie jedoch nur das Gegenteil Ihrer Anforderung implementieren: Standardmäßig MELPA und MELPA Stable für bestimmte Pakete verwenden.
Daher besteht Ihre einzige Option derzeit darin, package-pinned-packages
alle Pakete, die Sie verwenden möchten, entweder manuell oder mit einem Teil des Emacs-Lisp-Codes auszufüllen . Beachten Sie, dass package-pinned-packages
festgelegt werden muss , bevor aufrufen , package-refresh-contents
weil das Pinning ausgewertet wird , während der Paketindex Aufbau , und nicht , wenn Pakete zu installieren.
Eine langfristige Lösung wäre M-x report-emacs-bug
, die Emacs-Entwickler aufzufordern, eine Art "Standardarchiv" -Funktion zu implementieren, oder den Betreuer von Eiszapfen aufzufordern, ordnungsgemäß gekennzeichnete Releases zu erstellen, damit MELPA Stable stabile Pakete dafür erstellen kann. Beides dürfte sich jedoch nicht als einfach herausstellen, da bei ersteren größere Änderungen an package.el erforderlich sind und bei letzteren Eiszapfen von EmacsWiki in ein geeignetes VCS-Repository mit Tags verschoben werden, wozu der Betreuer vermutlich nicht bereit ist, z Wenn sie es wären, hätten sie es vor langer Zeit getan.