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 --pure

Подробные сведения об этой команде см. в See Вызов guix shell.

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

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

guix shell -D guix help2man git strace --pure

From there you can generate the build system infrastructure using Autoconf and Automake:

./bootstrap

If you get an error like this one:

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, чтобы получить больше информации.

Then, run:

./configure --localstatedir=/var

... where /var is the normal localstatedir value (see Хранилище, for information about this). Note that you will probably not run make install at the end (you don’t have to) but it’s still important to pass the right localstatedir.

Finally, you can build Guix and, if you feel so inclined, run the tests (see Запуск набора тестов):

make
make check

If anything fails, take a look at installation instructions (see Установка) or send a message to the mailing list.

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

make authenticate

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

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

make authenticate GUIX_GIT_KEYRING=myremote/keyring

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

After updating the repository, make might fail with an error similar to the following example:

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

This means that one of the record types that Guix defines (in this example, the origin record) has changed, and all of guix needs to be recompiled to take that change into account. To do so, run make clean-go followed by make.


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