Có thể sử dụng cả MELPA và MELPA-ổn định cùng một lúc không?


29

Tôi sử dụng melpa-ổn định như một kho lưu trữ gói bổ sung, nhưng một trong những gói tôi muốn sử dụng (icicles) không có sẵn trên melpa-ổn định. Có cách nào để cấu hình gói.el để sử dụng melpa ổn định, nhưng sử dụng melpa cho một tập hợp con cụ thể của gói không?


1
Nâng cấp lên emacs 24.4 ;-)
Malabarba

@Malabarba, điều đó chắc chắn có trên thẻ ...
Timo Geusch

Tôi cũng không thể tìm thấy iciclestrên melpa.
dùng650654

Câu trả lời:


34

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-prioritiescó 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-packagescho 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-packagestấ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-packagesphải được đặt trước khi gọi package-refresh-contentsvì 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-bugyê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.


0

Ở đây bạn có một cuộc thảo luận về việc sử dụng song song cả hai kho lưu trữ, vì vậy điều này có thể xảy ra với 24.4; Bạn đã thử ví dụ với một defun để cập nhật danh sách repos, sau đó nghịch lý-yêu cầu , và cuối cùng trở lại danh sách repo ban đầu?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.