Sử dụng tùy chọn package-archive-priorities
được thực hiện cho mục đích này. Để thích MELPA Ổn định hơn MELPA, hãy thêm phần sau vào tệp init của bạn:
(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)))
Số càng cao, mức độ ưu tiên của kho lưu trữ gói càng cao. Đối với bất kỳ gói nào tồn tại trong nhiều kho lưu trữ, trình quản lý gói của Emacs chọn gói từ kho lưu trữ với mức ưu tiên cao nhất và bỏ qua các gói trong các kho lưu trữ khác, ngay cả khi số phiên bản cao hơn. Nếu gói tồn tại trong hai kho lưu trữ có cùng mức độ ưu tiên, số phiên bản cao hơn sẽ thắng và cuối cùng tôi nghĩ rằng thứ tự trong package-archives
.
Tôi khuyên bạn nên chỉ định một mức độ ưu tiên cho tất cả các tài liệu lưu trữ, bao gồm cả kho lưu trữ GNU ELPA mặc định, để tránh mọi sự mơ hồ. Mặc dù tài liệu lưu trữ không package-archive-priorities
có mức ưu tiên mặc định là 0, nhưng thật dễ để quên điều đó.
package-archive-priorities
đã được giới thiệu trong Emacs 25.1, để phát hành trước đó, hãy xem câu trả lời cũ bên dưới:
Trong Emacs 24, không thể mặc định thành MELPA Ổn định và chỉ sử dụng MELPA cho các gói cụ thể theo cách chung. Không có bất kỳ gói tùy chỉnh nào. Mặc định cho kho lưu trữ cung cấp phiên bản cao nhất , đó là MELPA. Không có giao diện để thay đổi điều đó.
Tuy nhiên, kể từ Emacs 24.4, tùy chọn mới package-pinned-packages
cho phép bạn ghim các gói riêng lẻ vào kho lưu trữ, nhưng điều này chỉ cho phép bạn thực hiện nghịch đảo yêu cầu của mình: Mặc định với MELPA và sử dụng MELPA Stable cho các gói cụ thể.
Do đó, hiện tại tùy chọn duy nhất của bạn là điền vào package-pinned-packages
tất cả các gói bạn muốn sử dụng, bằng tay hoặc bằng một số mã Lisp của Emacs. Lưu ý rằng package-pinned-packages
phải được đặt trước khi gọi package-refresh-contents
vì việc ghim được đánh giá trong khi xây dựng chỉ mục gói chứ không phải khi cài đặt gói.
Một giải pháp dài hạn sẽ là M-x report-emacs-bug
yêu cầu các nhà phát triển Emacs triển khai một số loại tính năng lưu trữ mặc định của Cameron, hoặc yêu cầu người bảo trì các bản phát hành được gắn thẻ chính xác để MELPA Stable có thể xây dựng các gói ổn định cho nó. Tuy nhiên, cả hai điều này đều không dễ dàng vì điều này đòi hỏi những thay đổi lớn hơn đối với pack.el và sau đó các icicle được chuyển từ EmacsWiki vào một kho lưu trữ VCS thích hợp với các thẻ mà tôi cho rằng người bảo trì của nó không sẵn sàng làm, vì nếu có, họ đã làm điều đó từ lâu rồi.