Next: , Up: Содействие   [Contents][Index]


22.1 Сборка из Git

Если вы собираетесь хакать сам Guix, рекомендуется использовать последнюю версию из репозитория Git:

git clone https://git.savannah.gnu.org/git/guix.git

Как убедиться, что вы получили подлинную копию репозитория? Для этого запустите guix git authenticate, передав ему коммит и отпечаток ключа OpenPGP channel introduction (see Вызов guix package):

git fetch origin keyring:keyring
guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \
  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

Эта команда возвращает нуль в случае успеха; в противном случае будет напечатано сообщение об ошибке и команда завершит работу, вернув ненулевой код.

Как видите, здесь возникает проблема курицы и яйца: сначала вам нужно установить Guix. Обычно вы устанавливаете Guix System (see Установка системы) или Guix поверх другого дистрибутива (see Бинарная установка); в любом случае вы должны проверить подпись OpenPGP на установочном носителе. Это “запускает” (“bootstraps”) цепочку доверия.

Самый простой способ установить среду разработки для Guix — это, конечно, использовать Guix! Следующая команда запустит новую оболочку со всеми зависимостями и необходимыми переменными окружения:

guix shell -D guix -CPW

or even, from within a Git worktree for Guix:

guix shell -CPW

If -C (short for --container) is not supported on your system, try --pure instead of -CPW. See Вызов guix shell, for more information on that command.

Если вам Guix не удаётся использовать при сборке из рабочего каталога, установите следующие пакеты в дополнение к тем, что были указаны в инструкции по установке (see Требования).

В Guix дополнительные зависимости можно добавить, запустив guix shell:

guix shell -D guix help2man git strace --pure

Вы можете инициировать инфраструктуру сборки системы, используя Autoconf и Automake:

./bootstrap

Если вы получили ошибку, похожую на эту:

configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES

это означает, скорее всего, что Autoconf не смог найти файл pkg.m4, который предоставляется pkg-config. Убедитесь, что файл pkg.m4 доступен. То же относится к guile.m4, набору макросов, предоставляемых Guile. Например, если вы установили Automake в /usr/local, он не будет искать файлы .m4 в /usr/share. Тогда нужно выполнить следующую команду:

export ACLOCAL_PATH=/usr/share/aclocal

см. See Macro Search Path in The GNU Automake Manual, чтобы получить больше информации.

Затем, выполните:

./configure --localstatedir=/var --sysconfdir=/etc

... где /var - стандартное значение localstatedir (see Хранилище, для получения информации об этом), а /etc - стандартное значение sysconfdir. Обратите внимание, что вы, скорее всего, не будете выполнять make install в конце (это не обязательно), но все равно важно передать правильные значения localstatedir и sysconfdir, которые записываются в модуль (guix config) Guile.

Наконец, вы можете собрать Guix и, если сочтёте нужным, запустите тесты (see Запуск набора тестов):

make
make check

Если что-то не получится, изучите инструкции установки (see Установка) или отправьте сообщение в рассылку guix-devel@gnu.org.

После этого вы можете аутентифицировать все проверенные коммиты, запустив:

make authenticate

Первый запуск занимает пару минут, но последующие запускаются быстрее.

Или, если ваша конфигурация для локального git репозитория не соответствует конфигурации по умолчанию, вы можете указать ссылку для ветки keyring с помощью переменной GUIX_GIT_KEYRING. В следующем примере предполагается, что вы вызывали git remote ‘myremote’, указывающий на официальный репозиторий:

make authenticate GUIX_GIT_KEYRING=myremote/keyring

Примечание: Рекомендуется запускать make authenticate после каждого вызова git pull. Это гарантирует, что вы продолжаете получать актуальные изменения в репозитории.

После обновления репозитория команда make может выдать ошибку, подобную нижеприведенной:

error: failed to load 'gnu/packages/linux.scm':
ice-9/eval.scm:293:34: In procedure abi-check: #<record-type <origin>>: record ABI mismatch; recompilation needed

Это значит, что один из типов записей, которые определяет Guix (в данном примере, запись origin) была изменена, и весь guix надо перекомпилировать, чтобы учесть это изменение. Для этого запустите make clean-go, а затем make.


Next: Запуск Guix перед его установкой, Up: Содействие   [Contents][Index]