Next: Совершенная установка, Previous: Запуск набора тестов, Up: Содействие [Contents][Index]
Чтобы держать в порядке рабочее окружение, удобно тестировать изменения, сделанные в вашем локальном дереве исходников, без их установки. Так вы сможете отличить шляпу вашего “конечного пользователя” от вашего “пёстрого” наряда.
С этой целью можно использовать все инструменты командной строки, даже если
вы не запускали make install
. Для этого вам сначала нужно создать
окружение со всеми доступными зависимостями (see Сборка из Git), и
затем просто начните каждую команду с ./pre-inst-env
(скрипт
pre-inst-env находится на верху дерева сборки Guix; он создаётся
запуском ./bootstrap
, за которым следует ./configure
).
В качестве примера, вот как вы собрали бы пакет hello
как определено
в вашем рабочем дереве (подразумевается, что guix-daemon
уже
запущена на вашей системе; ничего страшного, если это другая версия):
$ ./pre-inst-env guix build hello
Аналогично, пример для Guile сессии с использованием модулей Guix:
$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))' ;;; ("x86_64-linux")
… и для REPL (see Using Guix Interactively):
$ ./pre-inst-env guile scheme@(guile-user)> ,use(guix) scheme@(guile-user)> ,use(gnu) scheme@(guile-user)> (define snakes (fold-packages (lambda (package lst) (if (string-prefix? "python" (package-name package)) (cons package lst) lst)) '())) scheme@(guile-user)> (length snakes) $1 = 361
Если вы изучаете демона и его исходники, или если guix-daemon
еще
не запущена в вашей системе, вы можете запустить его прямо из дерева
сборки45:
$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
Скрипт pre-inst-env
устанавливает все переменные окружения,
которые необходимы для этой задачи, включая PATH
и
GUILE_LOAD_PATH
.
Заметим, что ./pre-inst-env guix pull
не обновляет
локальное дерево исходников. Эта команда просто обновляет символическую
ссылку ~/.config/guix/current (see Вызов guix pull
). Выполните
git pull
, если вы хотите обновить локальное дерево исходников.
Иногда, особенно если вы недавно обновили репозиторий, выполнение
./pre-inst-env
выведет сообщение, подобное следующему примеру:
;;; note: source file /home/user/projects/guix/guix/progress.scm ;;; newer than compiled /home/user/projects/guix/guix/progress.go
Это всего лишь примечание, которое вы можете смело игнорировать. Вы можете
избавиться от сообщения, запустив make -j4
. Пока вы этого не
сделаете, Guile будет работать немного медленнее, так как он будет
интерпретировать код вместо использования подготовленных файлов (.go)
объекта Guile.
Вы можете запускать make
автоматически во время работы используя
watchexec
из пакета watchexec
. Например, для повторной
сборки при каждом обновлении файла пакета, запускать ‘watchexec -w
gnu/packages -- make -j4’.
Флаг -E команды sudo
гарантирует, что
GUILE_LOAD_PATH
настроен правильно, так что guix-daemon
и
инструменты, которые он использует, могут найти необходимые им модули
Guile.
Next: Совершенная установка, Previous: Запуск набора тестов, Up: Содействие [Contents][Index]