Через меню пакетов пользователи могут загружать пакеты из архивов пакетов. Такие архивы указываются переменной
package-archives, значение по умолчанию которой перечисляет архивы, размещенные на GNU ELPA и
NonGNU ELPA. В этом разделе описывается, как настроить и поддерживать архив пакетов.
Архив пакетов — это просто каталог, в котором хранятся файлы пакетов и связанные с ними файлы. Если вы хотите, чтобы архив был доступен по HTTP, этот каталог должен быть доступен веб-серверу; см. Интерфейс с архивным веб-сервером.
После создания архива помните, что он не будет доступен в интерфейсе меню пакетов, если он не указан в package-archives.
Поддержание публичного архива пакетов сопряжено с определенной степенью ответственности. Когда пользователи Emacs устанавливают пакеты из вашего архива, эти пакеты могут заставить Emacs выполнять произвольный код с правами пользователя, устанавливающего пакет. (Это верно для кода Emacs в целом, а не только для пакетов.) Поэтому вы должны обеспечить, чтобы ваш архив был хорошо поддерживаемым, и поддерживать безопасность хостинг-системы.
Один из способов повышения безопасности ваших пакетов — это подписать их с помощью криптографического ключа. Если вы сгенерировали пару приватный/публичный gpg-ключ, вы можете использовать gpg для подписи пакета следующим образом:
gpg -ba -o file.sig file
Для однофайлового пакета file — это Lisp-файл пакета; для многофайлового пакета — это tar-файл пакета. Вы также можете подписать файл содержимого архива тем же образом. Сделайте файлы .sig доступными в том же месте, что и пакеты. Вы также должны предоставить свой публичный ключ для загрузки людьми; например, загрузив его на сервер ключей, такой как https://pgp.mit.edu/. Когда люди устанавливают пакеты из вашего архива, они могут использовать ваш публичный ключ для проверки подписей.
Полное объяснение этих вопросов выходит за рамки данного руководства. Для получения дополнительной информации о криптографических ключах и подписи см. GnuPG в Руководстве GNU Privacy Guard. Emacs поставляется с интерфейсом к GNU Privacy Guard, см. EasyPG в Руководстве помощника Emacs EasyPG.