Làm cách nào tôi có thể thiết lập máy chủ ELPA?


15

Một người bạn và tôi đang muốn bắt đầu viết các gói emacs cụ thể để sử dụng trong công ty của chúng tôi. (Tin tôi đi, không có gì chúng tôi viết sẽ được nhiều người quan tâm bên ngoài - đó là sự tích hợp với các công cụ nội bộ.)

Chúng tôi muốn thực hiện cài đặt và bảo trì gói dễ dàng nhất có thể và chúng tôi nghĩ rằng điều này có nghĩa là tích hợp với package.el. Chúng ta cần làm gì để thiết lập một kho lưu trữ cho việc sử dụng đó?


Tôi sẽ chia MELPA và viết công thức cho các gói của bạn! Ngoài ra, chỉ cung cấp các công thức nấu ăn và hướng đồng nghiệp của bạn đến QUELPA.
lunaryorn

Câu trả lời:


18

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 pkgslocal. (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 pkgslocalcuố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.


Cảm ơn! Đây là một câu trả lời được viết rất tốt và nó đã làm việc tốt cho tôi. Tôi chỉ có một câu hỏi .. khi tôi làm M-x package-update-file, nó đặt .eltập tin trực tiếp dưới local/thư mục. Có cách nào để tạo ra một thư mục con cho mỗi gói để chúng ta kết thúc với local/pkg1/pkg1.el, local/pkg2/pkg2.el...?
Kaushal Modi

Không phải kiến ​​thức của tôi. Thư mục elpađược thiết lập theo cách bạn mô tả. Tôi thực sự không biết tại sao localkhông. Hãy nhớ rằng các tệp này được tạo tự động, vì vậy không ai thực sự phải xem chúng. Tôi giữ các tệp của mình dưới sự kiểm soát phiên bản với git và đặt localthư mục của tôi .gitignorevì lý do đó. Tôi giữ pkgsthư mục của mình được tổ chức độc đáo, và dưới sự kiểm soát phiên bản, nhưng đó locallà những gì nó được.
Rodney Giá

Cảm ơn. Vì vậy, để xác nhận, tất cả các tập tin được đổ trong một hệ thống phân cấp phẳng trong của bạn local/? Tôi muốn sắp xếp phân cấp để tôi có thể chỉ định dữ liệu meta URL của gói ;; URL: http://yourdomain.com/path-to-local-dir/pkg1, v.v. cho các gói khác nhau. Nhưng nó không phải là một vấn đề lớn. Tôi vui mừng hơn khi xuất bản các gói của tôi trong một elpa địa phương. :)
Kaushal Modi

1
Của tôi là phẳng, quá. Tôi sẽ không hướng người dùng của bạn đến localthư mục đó. Chỉ chúng vào nguồn ban đầu thay thế.
Giá Rodney

Điều đó thật tuyệt! Nhưng khi tôi sử dụng nó với các tập tin tar trên windows, một tar bị hỏng được tải lên và tôi phải sao chép lại nó một cách thủ công. Lỗi trong Emacs? 24,5
fommil

1

Nếu bạn muốn lưu trữ một cái gì đó như MELPA, bạn có thể tìm thấy hướng dẫn trên wiki của MELPA về cách lưu trữ ví dụ MELPA của riêng bạn:

https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive

Về cơ bản, nó sôi sùng sục xuống:

  1. Ngã ba / sao chép kho lưu trữ MELPA GitHub
  2. Xóa tất cả các công thức nấu ăn hiện có từ recipes/thư mục
  3. Thêm công thức nấu ăn của riêng bạn
  4. Chạy đi make.
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.