Tôi vẫn cần GNU ELPA nếu tôi có MELPA?


31

Điều này luôn làm tôi bối rối, vì mọi người đang nói rằng MELPA có các phiên bản gói mới hơn, nhưng nó không thực sự rõ ràng, nếu GNU ELPA chỉ là một tập hợp con của MELPA, hoặc nếu tôi cần cả hai?

Lý do tại sao tôi hỏi là tôi đang thử nghiệm các gói của mình rất nhiều và package-list-packagesmất khá nhiều thời gian. Tôi biết package-list-packages-no-fetch, nhưng thường xuyên hơn là tôi không muốn nhận danh sách gói gần đây nhất.

Vì vậy, câu hỏi là, tôi có thể chỉ sử dụng MELPA và nhận các gói giống nhau (và có thể là phiên bản mới hơn) như thể tôi đã sử dụng cả MELPA và GNU ELPA không?


5
Có, bạn sẽ luôn cần GNU Elpa.
Malabarba

Câu trả lời:


45

Trước hết, ELPA là tên của một đặc điểm kỹ thuật, Lưu trữ gói Emps Lisp. Có ba triển khai được biết đến rộng rãi của đặc tả đó, GNU ELPA, Marmalade và MELPA.

GNU ELPA là kho lưu trữ GNU Emacs chính thức, được kích hoạt ngoài hộp để cài đặt Emacs đủ mới. Nó tương đối nhỏ, góp phần vào nó đòi hỏi phải chuyển nhượng bản quyền và hợp tác với danh sách gửi thư chính thức. Đây là thứ gần nhất mà chúng ta có để kiểm tra so sánh với kho lưu trữ gói phân phối Linux.

Marmalade là một kho lưu trữ không chính thức với một số lượng lớn các gói phiên bản. Tác giả và người bảo trì cần tải lên các bản phát hành của họ bằng tay với nó. Việc đánh cược được thực hiện một lần cho mỗi thành viên mới trước khi cho phép họ có tài khoản người dùng, sau khi hoàn thành, họ có thể tự do phát hành theo ý muốn.

MELPA là một kho lưu trữ không chính thức khác với số lượng gói lớn nhất. Mỗi gói được hiệu chỉnh ngắn gọn cho kiểu mã với yêu cầu kéo để đưa vào, sau khi các gói đó được tự động xây dựng từ các nguồn (thường là VCS) của chúng. Tái tạo có thể xảy ra mỗi giờ. Ngoài ra còn có MELPA ổn định chỉ xây dựng các bản phát hành được gắn thẻ, nhưng có các gói ít hơn rất nhiều, thậm chí ít hơn cả Marmalade.

Đối với sự chồng chéo, thực tế không có sự chồng chéo giữa GNU ELPA và Marmalade, và tương tự đối với GNU ELPA và MELPA. Marmalade và MELPA tuy nhiên chồng chéo một số tiền hợp lý. Tôi ước tính rằng hầu hết Marmalade là một tập hợp con của MELPA. Đó là lý do tại sao bạn có thể đi với MELPA cho hầu hết các gói và có thể GNU ELPA cho một vài gói bị thiếu.

Cập nhật : Theo thống kê gói của malabarba, MELPA Stable đã vượt qua Marmalade về số lượng các gói có sẵn. Tôi sẽ chọn nó qua Marmalade ngay bây giờ.

Cập nhật : Marmalade về cơ bản là đã chết. Chứng chỉ đã hết hạn và hầu như không có gói mới nào được tải lên. Điều này là do quá trình khá bất thường của nó, bạn cần được chủ sở hữu thêm vào thủ công và khi anh ta mất tích, không có người dùng mới nào được thêm vào kể từ năm 2016 hoặc lâu hơn.


Âm thanh như Melpa + Gnu Elpa, và không sử dụng Marmalade, là cách để đi. Bất kỳ cách dễ dàng để chuyển đổi?
justingordon

Chỉ cần tùy chỉnh cho package-archivesphù hợp và cập nhật chỉ mục, như bằng cách sử dụng M-x package-refresh-contents. M-x list-packagessẽ hiển thị một danh sách khác so với trước đây.
wasamasa

Có vẻ như số liệu thống kê gói của malarbaba bị kẹt vào tháng 12 năm 2015 ...
JeanPierre

Tôi đã thêm một bản cập nhật nữa khi Marmalade đã chết
wasamasa

-5

Không, bạn có thể không cần GNU ELPA hoặc bất kỳ ELPA nào.

Lý do thực tế không sử dụng GNU ELPA hoặc bất kỳ kho lưu trữ của bên thứ ba nào là để bảo vệ Emacs của tôi khỏi ELPA bị tắt. Thỉnh thoảng tắt máy (xem https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 )

Hầu hết các gói của tôi được tải xuống từ https // melpa.org, tôi có thể tránh GNU ELPA bằng cách tạo một bản sao gói nhỏ cục bộ của các gói GNU ELPA đã chọn.

Kiểm tra thiết lập của tôi tại https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el, GNU ELPA không được sử dụng.

Nếu tôi phải sử dụng một số gói GNU ELPA, thay vào đó tôi sẽ tạo ELPA cục bộ của riêng mình (đơn giản như tạo tệp văn bản archive-contents), hãy kiểm tra ~/.emacs.d/localelpa.

Ví dụ, seq-2.20.tarchỉ tồn tại ở GNU ELPA và tôi cần nó. Vì vậy, tôi thêm gói này vào elpa địa phương của tôi tạihttps://github.com/redguardtoo/emacs.d/tree/master/localelpa

Hiện tại tôi chỉ sử dụng bốn gói từ GNU ELPA,

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

Các gói này được đặt trong tôi localelpavì vậy tôi không cần truy cập GNU ELPA.

Bạn cũng có thể kiểm tra gói của tôi https://github.com/redguardtoo/elpa-mirror để tạo một kho lưu trữ cục bộ từ các gói đã cài đặt. Vì vậy, ngay cả kho lưu trữ từ xa (GNU ELPA, MELPA) là tùy chọn ngay bây giờ.

Bạn cũng có thể sử dụng nguồn thay vì gói tải xuống. Vui lòng kiểm tra https://github.com/redguardtoo/emacs.d/tree/master/site-lisp . rainbow-mode, Bạn cần hiểu những gì load-path( http://emacswiki.org/emacs/LoadPath ) nếu bạn sử dụng nguồn.

Bạn cũng có thể tư vấn package--add-to-archive-contentsđể điều chỉnh các gói trước khi chúng được hiển thị trong trình quản lý gói. Đây là loại hack không có giấy tờ. Nó hoạt động từ Emacs 23.4 đến Emacs 27. Xem init-elpa.elví dụ.


7
Bạn cũng cần GNU ELPA cho các gói như Auctex, seq.el, let-alist, Rainbow-mode, v.v. gói để dễ dàng có sẵn cho tất cả.
wasamasa

Tôi đã cập nhật câu trả lời của tôi một chút về vấn đề này.
chen bin

@wasamasa bạn có thể vui lòng giải thích, tại sao chính xác tôi cần gnu elpa cho các gói như auctex?
toogley

1
@toogley Vì nó chỉ khả dụng trên GNU ELPA, đó là lý do.
wasamasa
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.