Як я можу налаштувати сервер ELPA?


15

Ми з другом хочемо почати писати пакети emacs, специфічні для використання в нашій компанії. (Повірте, ніщо, що ми пишемо, не зацікавить усіх зовнішніх - це інтеграція з внутрішніми інструментами.)

Ми хотіли б зробити установку та обслуговування пакунків максимально простою, і ми вважаємо, що це означає інтеграцію package.el. Що нам потрібно зробити, щоб створити сховище для такого використання?


Я б роздвоював MELPA і писав рецепти ваших пакунків! Крім того, надайте лише рецепти та вкажіть своїх колег на QUELPA.
місячник

Відповіді:


18

Я створив локальний архів пакунків (Emacs 24.5), використовуючи package.elспочатку створення двох каталогів, pkgsі local. (Імена не мають значення.) Файли, що містять ваші пакунки, надходять pkgsі localзберігають ваш архів. Якщо ви хочете зробити архів доступним для інших, ви можете експонувати localза допомогою веб-сервера, але процес такий же, як і створення локального архіву.

Я помістив у свій init.elфайл наступне :

(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)

Я розміщую свій архів у своєму .emacs.dкаталозі (звідси і user-emacs-directoryу expand-file-nameформі), але ви можете розмістити його де завгодно.

Після того, як це буде оцінено, виконайте M-x package-upload-fileі введіть ім'я файлу вашого пакета для встановлення. Це створить новий пакет в local. Ви побачите три нові файли там, archive-contents, yourpackagename-version.elі yourpackagename-readme.txt. Тепер ви маєте змогу це зробити M-x package-list-packagesі побачити ваш пакунок у списку. При удачі вони опиняться вгорі з позначкою "нові". Ви можете встановити пакунок як завжди, і ви побачите, що він відображається у вашому .emacs.d/elpaкаталозі, як і будь-який інший пакет.

Це повинно вийти з коробки для Emacs 24. Я не впевнений у попередніх версіях. Ваші користувачі можуть отримати доступ до вашого пакету звичайним способом, включивши їх

(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives 
  '("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)

у їхньому init.elфайлі.

Для отримання інформації про те, як написати пакет, див. Підготовка коду Lisp до розповсюдження в посібнику GNU Emacs Lisp.


Спасибі! Це дуже добре написана відповідь, і це добре спрацювало для мене. У мене є лише одне питання .. коли я це роблю M-x package-update-file, він розміщує .elфайл прямо під local/dir. Чи є спосіб , щоб створити підкаталог для кожного пакета , так що ми в кінцевому підсумку local/pkg1/pkg1.el, local/pkg2/pkg2.el...?
Каушал Моді

Не наскільки мені відомо. elpaКаталог налаштований так , як ви описуєте. Я справді не знаю, чому localні. Майте на увазі, що ці файли генеруються автоматично, тому ніхто ніколи насправді не повинен їх переглядати. Я тримаю свої файли під контролем версій з git, і ставлю свій localкаталог в .gitignoreцю причину. Я тримаю свій pkgsкаталог добре організований і під контролем версій, але localце все, що це таке.
Родні Ціна

Спасибі. Отже, щоб підтвердити, що всі файли потрапляють у рівну ієрархію у вашій local/теж? Я хотів, щоб ієрархічне розташування було таким, щоб я міг вказати метадані URL-адреси пакету як ;; URL: http://yourdomain.com/path-to-local-dir/pkg1і так далі для різних пакетів. Але справа не велика. Мені більше приємно публікувати свої пакунки в місцевій ельпі. :)
Каушал Моді

1
Моя теж плоска. Я б не вказав вашим користувачам на цей localкаталог. Натомість наведіть їх на початкове джерело.
Родні Ціна

Це чудово! Але коли я використовую його з файлами смоли на Windows, завантажується розбита смола, і мені доведеться знову копіювати її вручну. Помилка в Emacs? 24.5
fommil

1

Якщо ви хочете розмістити щось на зразок MELPA, ви можете знайти інструкції у вікі MELPA про те, як розмістити власний екземпляр MELPA:

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

По суті, воно зводиться до:

  1. Розкладіть / клонуйте сховище MELPA GitHub
  2. Видаліть усі існуючі рецепти з recipes/каталогу
  3. Додайте власні рецепти
  4. Біжи make.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.