Я установил локальный архив пакетов (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.