Next: Совершенная установка, Previous: Сборка из Git, 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 Guile Interactively in Guile Reference Manual):
$ ./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
еще
не запущена в вашей системе, вы можете запустить его прямо из дерева
сборки38:
$ 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
, если вы хотите обновить локальное дерево исходников.
Sometimes, especially if you have recently updated your repository, running
./pre-inst-env
will print a message similar to the following
example:
;;; note: source file /home/user/projects/guix/guix/progress.scm ;;; newer than compiled /home/user/projects/guix/guix/progress.go
This is only a note and you can safely ignore it. You can get rid of the
message by running make -j4
. Until you do, Guile will run
slightly slower because it will interpret the code instead of using prepared
Guile object (.go) files.
You can run make
automatically as you work using
watchexec
from the watchexec
package. For example, to
build again each time you update a package file, you can run ‘watchexec
-w gnu/packages make -j4’.
Флаг -E команды sudo
гарантирует, что
GUILE_LOAD_PATH
настроен правильно, так что guix-daemon
и
инструменты, которые он использует, могут найти необходимые им модули
Guile.
Next: Совершенная установка, Previous: Сборка из Git, Up: Содействие [Contents][Index]