Như paprika đã nói, Emacs sử dụng load-path
để tìm kiếm danh sách elisp
các tệp có sẵn ( .elc
, .el
)
Các load-path
đang tìm kiếm các gói phù hợp đầu tiên khi nó đang được yêu cầu. Nếu nhiều bản sao của một gói được cài đặt, thì bản đầu tiên sẽ được tải.
Trình quản lý gói distro không thể cài đặt vào cùng một nguồn như package-install
vậy, vì một là toàn hệ thống và một là dành riêng cho người dùng.
Nguồn gói
Được xây dựng và phân phối cụ thể
Quản lý gói Distro
Trình quản lý gói Distro cung cấp một lựa chọn các gói emacs có thể được cài đặt. Theo kinh nghiệm của tôi, những thứ này thường nằm trong số các gói phổ biến hơn / được sử dụng rộng rãi. Trước khi phát triển, package.el
đây là cách dễ nhất để có được các gói. (Dễ nhất là do chỉ chạy thay apt-get install <package>
vì sử dụng kiểm soát phiên bản hoặc tải xuống trực tiếp.
Các gói được cài đặt thông qua trình quản lý gói distro được cài đặt /usr/local/share/emacs/site-lisp/
mặc định trong load-path
và sẽ bị ẩn bởi các load-path
bổ sung dành riêng cho người dùng .
Gói.el
package.el
lần đầu tiên được bao gồm với Emacs 24
. Phiên bản này tương thích với Emacs 23
nhưng cần phải được cài đặt thủ công, các gói được truy xuất bởi nó có thể hoặc không thể tương thích Emacs 23
.
package.el
cung cấp một kho chứa các gói có thể duyệt được cho Emacs. Theo mặc định, chỉ có Elpa
kho lưu trữ được cấu hình, nhưng có thể thêm quyền truy cập vào MELPA và Marmelade :
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
Điều này cung cấp quyền truy cập vào một nhóm các gói lớn hơn nhiều.
Theo mặc định, package.el
cài đặt các gói đến ~/.emacs.d/elpa
và khi (package-initialize)
được gọi là thư mục này sẽ được đặt gần phía trước hơn load-path
, dẫn đến các gói này được ưu tiên hơn các gói được cài đặt bởi trình quản lý gói phân phối.
Git / Bzr / hg / ... + EmacsWiki
Các gói được kiểm soát phiên bản có thể được truy xuất thủ công từ kho lưu trữ của chúng thông qua nhân bản. Một số cũng cung cấp các bản phát hành đóng gói có thể được tải xuống trực tiếp.
EmacsWiki Elisp cũng có thể được tải xuống, mặc dù chúng thường là các tệp đơn hơn là thư mục.
Khi gói được lấy, đảm bảo rằng thư mục đích nằm trên của bạn load-path
và nó sẽ có sẵn để sử dụng.
Quản lý gói bên thứ 3
Các công cụ này cung cấp trình bao bọc hoặc chức năng bổ sung ở trên để tập trung quản lý gói. Chúng được thiết kế với cấu hình chia sẻ trong tâm trí để đảm bảo tất cả các máy của bạn đều có sẵn các gói giống nhau.
El-Get
El-Nhận duy trì một danh sách các công thức nấu ăn cho phép nó để lấy các gói sử dụng package.el
, git
, emacswiki
như nguồn (trong số những người khác). Nó cũng cung cấp các chức năng để đảm bảo các gói được cập nhật, quản lý tải (hoãn lại hoặc ngay lập tức) và lưu trữ tùy chỉnh theo gói cụ thể trong các tệp được tải tự động khi gói required
.
Cask
Cask được thiết kế để quản lý dự án trong / cho Emacs. Nó sử dụng một cask
tệp để duy trì một danh sách các phụ thuộc (các gói khác) cần thiết để sử dụng gói và sẽ tải xuống các gói bị thiếu để đảm bảo mọi thứ được tải thành công.
Nó có thể được sử dụng để quản lý các cấu hình gói cục bộ bằng cách coi bạn ~/.emacs.d
là một dự án và kêu gọi (cask-initialize)
khởi động.
straight.el
straight.el
được thiết kế cho những người muốn thực hiện các thay đổi cục bộ cho các gói của họ và có thể đóng góp những thay đổi đó ngược dòng. Nó lấy các công thức nấu ăn từ MELPA , GNU ELPA và EmacsMirror hoặc cho phép bạn chỉ định công thức của riêng bạn. Nó cũng hỗ trợ viết một lockfile sửa đổi để có khả năng tái tạo tối đa, trong số nhiều tính năng khác.
Gói sử dụng
Gói sử dụng được thiết kế chủ yếu như một công cụ quản lý cấu hình emacs. Nó sẽ tải xuống package.el
các gói cần thiết nhưng không có cơ chế tích hợp để truy cập các nguồn khác. Nó cho phép tải chậm các gói và tùy chỉnh hoãn lại. Điều này cải thiện việc khởi tạo emacs trong khi làm chậm việc sử dụng các gói ban đầu (nhưng nếu không sử dụng chúng trong một phiên nhất định thì chỉ có mức tăng ròng).
M-x report-emacs-bug
. Những người trả lời một câu hỏi như vậy ở đây sẽ tốt hơn nếu đóng góp cho các tài liệu của Emacs, nếu thông tin bị thiếu. IMHO.