44.4 Создание и обслуживание архивных пакетов

Через меню пакетов пользователи могут загружать пакеты из архивов пакетов. Такие архивы указываются переменной 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.