Next: Стиль написания кода, Previous: Структура исходного кода, Up: Содействие [Contents][Index]
Дистрибутив GNU - только зарождается и может не содержать ваши любимые пакеты. Этот раздел описывает как можно помочь с развитием дистрибутива.
Пакеты свободного программного обеспечения обычно распространяются в виде архивов исходного кода‐‐‐скорее всего tar.gz, которые содержат все исходные файлы. Добавить пакет в дистрибутив означает, по существу, две вещи: добавление рецепта, в котором обозначено, как собирать пакет, включая список других пакетов, необходимых для сборки данного, а также добавление метаданных пакета вместе с тем рецептом, таких как описание пакета и информации о лицензировании.
В Guix вся эта информация включена в определения пакетов. Определения пакетов представляют собой высокоуровневый обзор пакета. Они написаны с использованием синтаксиса языка программирования Scheme. Для каждого пакета задаётся набор переменных, которые составляют определение пакета, и затем это определение пакета экспортируется из модуля (see Пакетные модули). Однако основательные знания Scheme not не обязательны для создания пакетов. Для информации об определении пакетов см. see Описание пакетов.
Когда определение пакета создано, сохранено в файле в дереве исходников
Guix, оно может быть протестировано командой guix build
(see Запуск guix build
). Например, допустим, новый пакет называется
gnew
, тогда можно запустить эту команду из дерева сборки Guix
(see Запуск Guix перед его установкой):
./pre-inst-env guix build gnew --keep-failed
Использование --keep-failed
помогает при отладке ошибок сборки, так
как эта опция предоставляет доступ к дереву неудачных сборок. Другая
полезная опция командной строки при отладке - --log-file
, которая
даёт доступ к логу сборки.
Если пакет не известен команде guix
, это может означать, что файл
исходника содержит синтаксическую ошибку или не имеет предложения
define-public
, которое экспортирует переменную пакета. Чтобы
разобраться, можно загрузить модуль из Guile и получить больше информации о
текущей ошибке:
./pre-inst-env guile -c '(use-modules (gnu packages gnew))'
Если ваш пакет собирается без ошибок, пришлите нам свой патч (see Отправка исправлений). Если вам нужна помощь, мы будем рады помочь вам со своей стороны. После фиксации патча в репозитории Guix новый пакет будет автоматически собран для всех поддерживаемых платформ нашей https://bordeaux.guix.gnu.org CI-системой.
Пользователи могут получать новые доступные определения пакетов простым
запуском guix pull
(see Вызов guix pull
). Если
bordeaux.guix.gnu.org
выполнил сборку пакета, установка пакета
выполнит автоматическое скачивание бинарных файлов оттуда
(see Подстановки). Единственное место, где нужна активность человека, -
обзор и применение патча.
Next: Стиль написания кода, Previous: Структура исходного кода, Up: Содействие [Contents][Index]