Next: , Up: Программный интерфейс   [Contents][Index]


8.1 Пакетные модули

С точки зрения программирования, определения пакетов дистрибутива GNU предоставляются модулями Guile в пространстве имен (gnu packages …) 17 (see Guile modules in GNU Guile Reference Manual)). Например, модуль (gnu packages emacs) экспортирует переменную с именем emacs, которая привязана к <package> объекту (see Описание пакетов).

Пространство имен модуля (gnu packages …) автоматически сканируется на наличие пакетов с помощью инструментов командной строки. Например, при запуске guix install emacs все модули (gnu packages …) сканируются до тех пор, пока не будет найден тот, который экспортирует объект пакета с именем emacs. Это средство поиска пакетов реализовано в модуле (gnu packages).

Пользователи могут хранить определения пакетов в модулях с разными именами - например, (my-packages emacs) 18. Есть два способа сделать эти определения пакетов видимыми для пользовательских интерфейсов:

  1. Добавить каталог, содержащий модули вашего пакета, в пути поиска с помощью флага -L команды guix package и другие команды (see Стандартные параметры сборки) или указать переменную окружения GUIX_PACKAGE_PATH, описанную ниже.
  2. Определить канал и настроить guix pull так, чтобы он учитывал его. Канал - это, по сути, репозиторий Git, содержащий модули пакетов. See Каналы, чтобы узнать больше о том, как определять и использовать каналы.

GUIX_PACKAGE_PATH работает аналогично другим переменным пути поиска:

Environment Variable: GUIX_PACKAGE_PATH

Это список каталогов, разделенных двоеточиями, для поиска дополнительных модулей пакета. Каталоги, перечисленные в этой переменной, имеют приоритет над собственными модулями дистрибутива.

Дистрибутив полностью bootstrapped и самодостаточный: каждый пакет построен исключительно на основе других пакетов в дистрибутиве. Корнем этого графа зависимостей является небольшой набор bootstrap бинарный файлы, предоставляемых модулем (gnu packages bootstrap). Для получения дополнительной информации о начальной загрузке see Начальная загрузка.


Footnotes

(17)

Обратите внимание, что пакеты в (gnu packages …) пространстве имен модуля не обязательно являются “пакетами GNU”. Эта схема именования модулей соответствует обычному соглашению об именах модулей Guile: gnu означает, что эти модули распространяются как часть системы GNU, а packages идентифицирует модули, которые определяют пакеты.

(18)

Обратите внимание, что имя файла и имя модуля должны совпадать. Например, модуль (my-packages emacs) должен храниться в файле my-packages/emacs.scm относительно пути загрузки, указанного с помощью --load-path или GUIX_PACKAGE_PATH. See Modules and the File System in GNU Guile Reference Manual, для подробностей.


Next: , Up: Программный интерфейс   [Contents][Index]