为了保持一个合适的工作环境,你会发现在你的本地代码树里测试修改而不用安装它们会很有用。TODO: So that you can distinguish between your “end-user” hat and your “motley” costume.
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; it is generated by running
./bootstrap
followed by ./configure
). 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
同样,一个使用 Guix 模块的 Guile 会话的例子:
$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))' ;;; ("x86_64-linux")
… and for a 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
If you are hacking on the daemon and its supporting code or if
guix-daemon
is not already running on your system, you can launch
it straight from the build tree40:
$ 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 Invoking 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, run ‘watchexec -w
gnu/packages -- make -j4’.
The -E flag to
sudo
guarantees that GUILE_LOAD_PATH
is correctly set such
that guix-daemon
and the tools it uses can find the Guile modules
they need.