Мы с приятелем хотим начать писать пакеты emacs, специально предназначенные для нашей компании. (Поверьте мне, ничто из того, что мы пишем, не будет представлять большого интереса для кого-либо извне - это интеграция с внутренними инструментами.)
Мы хотим сделать установку и обслуживание пакетов как можно проще, и мы думаем, что это означает интеграцию с package.el
. Что нам нужно сделать, чтобы настроить хранилище для такого использования?
package-repositories
Шон Оллред
источник
источник
Ответы:
Я установил локальный архив пакетов (Emacs 24.5), используя
package.el
сначала создание двух каталогов,pkgs
иlocal
. (Имена не имеют значения.) Файлы, входящие в ваши пакеты, входятpkgs
и вlocal
конечном итоге будут содержать ваш архив. Если вы хотите сделать архив доступным для других, вы можете открыть егоlocal
с помощью веб-сервера, но процесс такой же, как создание локального архива.Я положил следующее в моем
init.el
файле:Я помещаю свой архив в свой
.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. Я не уверен насчет более ранних версий. Ваши пользователи могут получить доступ к вашему пакету обычным способом, включив
в их
init.el
файле.Информацию о том, как написать пакет, смотрите в разделе Подготовка кода Lisp для распространения в руководстве по GNU Emacs Lisp.
источник
M-x package-update-file
, он помещает.el
файл непосредственно в каталогlocal/
. Есть ли способ , чтобы создать подкаталог для каждого пакета , так что мы в конечном итоге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
, и так далее для разных пакетов. Но это не имеет большого значения. Я более рад опубликовать свои пакеты в местной эльпе. :)local
каталог. Вместо этого укажите их на первоисточник.Если вы хотите разместить что-то вроде MELPA, вы можете найти в вики MELPA инструкции о том, как разместить собственный экземпляр MELPA:
https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive
По сути, это сводится к:
recipes/
каталогаmake
.источник