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]