Next: Описание пакетов, Up: Программный интерфейс [Contents][Index]
С точки зрения программирования, определения пакетов дистрибутива 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. Есть два способа сделать эти
определения пакетов видимыми для пользовательских интерфейсов:
-L команды guix package и другие команды
(see Стандартные параметры сборки) или указать переменную окружения
GUIX_PACKAGE_PATH, описанную ниже.
guix pull так, чтобы он
учитывал его. Канал - это, по сути, репозиторий Git, содержащий модули
пакетов. See Каналы, чтобы узнать больше о том, как определять и
использовать каналы.
GUIX_PACKAGE_PATH работает аналогично другим переменным пути поиска:
Это список каталогов, разделенных двоеточиями, для поиска дополнительных модулей пакета. Каталоги, перечисленные в этой переменной, имеют приоритет над собственными модулями дистрибутива.
Дистрибутив полностью bootstrapped и самодостаточный: каждый
пакет построен исключительно на основе других пакетов в дистрибутиве.
Корнем этого графа зависимостей является небольшой набор bootstrap
бинарный файлы, предоставляемых модулем (gnu packages bootstrap).
Для получения дополнительной информации о начальной загрузке
see Начальная загрузка.
Обратите внимание, что пакеты в (gnu packages
…) пространстве имен модуля не обязательно являются “пакетами
GNU”. Эта схема именования модулей соответствует обычному соглашению об
именах модулей Guile: gnu означает, что эти модули распространяются
как часть системы GNU, а packages идентифицирует модули, которые
определяют пакеты.
Обратите внимание, что имя
файла и имя модуля должны совпадать. Например, модуль (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]