Utilizzare l'opzione package-archive-priorities
creata proprio per questo scopo. Per preferire MELPA Stable a MELPA, aggiungi quanto segue al tuo file init:
(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)))
Maggiore è il numero, maggiore è la priorità di un archivio di pacchetti. Per qualsiasi pacchetto esistente in più archivi, il gestore pacchetti di Emacs preleva il pacchetto dall'archivio con la massima priorità e ignora i pacchetti in altri archivi, anche se il numero di versione è superiore. Se il pacchetto esiste in due archivi con la stessa priorità, vince il numero di versione più alto e alla fine penso che l'ordine sia incluso package-archives
.
Consiglio di assegnare esplicitamente una priorità a tutti gli archivi, incluso l'archivio ELPA GNU predefinito, per evitare ambiguità. Sebbene gli archivi non presenti package-archive-priorities
abbiano una priorità predefinita di 0, è fin troppo facile dimenticarsene.
package-archive-priorities
è stato introdotto in Emacs 25.1, per le versioni precedenti vedere la vecchia risposta di seguito:
In Emacs 24 non è possibile impostare MELPA Stable come predefinito e utilizzare MELPA solo per pacchetti specifici in modo generale. Senza alcun pacchetto di personalizzazione, per impostazione predefinita l'archivio fornisce all'archivio la versione più alta , ovvero MELPA. Non c'è interfaccia per cambiarlo.
Tuttavia, a partire da Emacs 24.4 la nuova opzione package-pinned-packages
consente di aggiungere singoli pacchetti agli archivi, ma ciò consente solo di implementare l'inverso dei propri requisiti: impostazione predefinita a MELPA e utilizzare MELPA Stable per pacchetti specifici.
Quindi, attualmente l'unica opzione è riempire package-pinned-packages
con tutti i pacchetti che si desidera utilizzare, manualmente o con un pezzo di codice Emacs Lisp. Si noti che package-pinned-packages
deve essere impostato prima di chiamare package-refresh-contents
perché il pinning viene valutato durante la creazione dell'indice dei pacchetti e non durante l'installazione dei pacchetti.
Una soluzione a lungo termine sarebbe quella M-x report-emacs-bug
di chiedere agli sviluppatori di Emacs di implementare una sorta di funzionalità di "archivio predefinito", o di chiedere al manutentore di ghiaccioli di rilasciare tag adeguatamente etichettati in modo che MELPA Stable possa costruire pacchetti stabili per esso. Nessuno dei due potrebbe rivelarsi facile, dal momento che il primo richiede modifiche più grandi a package.el e il secondo che i ghiaccioli vengono spostati da EmacsWiki in un vero repository VCS con tag, che presumo che il suo manutentore non sia disposto a fare, per se lo fossero, l'avrebbero fatto molto tempo fa.