Tôi thiết lập một kho lưu trữ gói cục bộ (Emacs 24.5) bằng package.elcách trước tiên tạo hai thư mục pkgsvà local. (Tên không quan trọng.) Các tệp bao gồm các gói của bạn đi vào pkgsvà localcuối cùng sẽ giữ kho lưu trữ của bạn. Nếu bạn muốn cung cấp một kho lưu trữ cho người khác, bạn có thể phơi bày localbằng máy chủ web, nhưng quá trình này giống như xây dựng một kho lưu trữ cục bộ.
Tôi đặt như sau trong init.eltập tin của tôi :
(require 'package)
(setq package-enable-at-startup nil)
(require 'package-x)
(defvar local-archive
(expand-file-name "local/" user-emacs-directory)
"Location of the package archive.")
(setq package-archive-upload-base local-archive)
(add-to-list 'package-archives `("local" . ,local-archive) t)
(package-initialize)
Tôi đặt kho lưu trữ của tôi trong .emacs.dthư mục của tôi (do đó user-emacs-directorytrong expand-file-namemẫu) nhưng bạn có thể đặt nó bất cứ nơi nào bạn muốn.
Khi điều này được đánh giá, thực thi M-x package-upload-filevà nhập tên tệp của gói bạn sẽ được cài đặt. Điều này sẽ tạo ra một gói mới trong local. Bạn sẽ thấy ba tập tin mới trong đó, archive-contents, yourpackagename-version.el, và yourpackagename-readme.txt. Bây giờ bạn sẽ có thể làm M-x package-list-packagesvà xem gói của bạn được liệt kê. Nếu may mắn, họ sẽ đứng đầu "đánh dấu" mới. Bạn có thể cài đặt gói như bình thường và bạn sẽ thấy nó hiển thị trong .emacs.d/elpathư mục của mình giống như bất kỳ gói nào khác.
Điều này sẽ hoạt động tốt cho Emacs 24. Tôi không chắc chắn về các phiên bản trước. Người dùng của bạn có thể truy cập gói của bạn theo cách thông thường bằng cách bao gồm
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives
'("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)
trong init.eltập tin của họ .
Để biết thông tin về cách viết gói, hãy xem Chuẩn bị mã Lisp để phân phối trong hướng dẫn sử dụng GNU Emacs Lisp.