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


22.2 Запуск Guix перед его установкой

Чтобы держать в порядке рабочее окружение, удобно тестировать изменения, сделанные в вашем локальном дереве исходников, без их установки. Так вы сможете отличить шляпу вашего “конечного пользователя” от вашего “пёстрого” наряда.

To that end, all the command-line tools can be used even if you have not run make install. To do that, you first need to have an environment with all the dependencies available (see Сборка из Git), and then simply prefix each command with ./pre-inst-env (the pre-inst-env script lives in the top build tree of Guix; see Сборка из Git to generate it). As an example, here is how you would build the hello package as defined in your working tree (this assumes guix-daemon is already running on your system; it’s OK if it’s a different version):

$ ./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 еще не запущена в вашей системе, вы можете запустить его прямо из дерева сборки42:

$ 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’.


Footnotes

(42)

Флаг -E команды sudo гарантирует, что GUILE_LOAD_PATH настроен правильно, так что guix-daemon и инструменты, которые он использует, могут найти необходимые им модули Guile.


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