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


22.2 Сборка из 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 на установочном носителе. Это “запускает” цепочку доверия.

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

guix shell -D guix -CPW

или даже из-под рабочей ветки Git для Guix:

guix shell -CPW

Если -C (сокр. от --container) не поддерживается на вашей системе, попробуйте --pure вместо -CPW. см. See Вызов guix shell, чтобы получить информацию по данной команде.

Если вам 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

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

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

make
make check

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

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

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

Первый запуск занимает несколько минут, но последующие работают быстрее. На каждый не первый запуск вы можете выполнять эту команду без каких-либо аргументов, поскольку introduction (ID коммита и отпечаток ключа OpenPGP выше) запоминаются44:

guix git authenticate

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

guix git authenticate \
-k myremote/keyring \
9edb3f66fd807b096b48283debdcddccfea34bad \
"BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

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

Примечание: By default, hooks are installed such that guix git authenticate is invoked anytime you run git pull or git push.

После обновления репозитория команда 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.

Should make fail with an Automake error message after updating, you need to repeat the steps outlined in this section, commencing with ./bootstrap.


Footnotes

(44)

Это требует свежую версию Guix мая 2024 или позднее.


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