Next: , Previous: , Up: Установка   [Contents][Index]


2.5 Вызов guix-daemon

Программа guix-daemon реализует весь функционал доступа к складу. Это включает запуск процессов сборки, запуск сборщика мусора, проверка доступности результата сборки и т.д. Он должен быть запущен от root так:

# guix-daemon --build-users-group=guixbuild

Для подробностей о том, как настроить его, смотрите see Настройка демона.

By default, guix-daemon launches build processes under different UIDs, taken from the build group specified with --build-users-group. In addition, each build process is run in a chroot environment that only contains the subset of the store that the build process depends on, as specified by its derivation (see derivation), plus a set of specific system directories. By default, the latter contains /dev and /dev/pts. Furthermore, on GNU/Linux, the build environment is a container: in addition to having its own file system tree, it has a separate mount name space, its own PID name space, network name space, etc. This helps achieve reproducible builds (see Особенности).

When the daemon performs a build on behalf of the user, it creates a build directory under /tmp or under the directory specified by its TMPDIR environment variable. This directory is shared with the container for the duration of the build, though within the container, the build tree is always called /tmp/guix-build-name.drv-0.

Директория сборки автоматически удаляется по завершении, если конечно, сборка не завершилась с ошибкой, и клиент не обозначил --keep-failed (see --keep-failed).

The daemon listens for connections and spawns one sub-process for each session started by a client (one of the guix sub-commands). The guix processes command allows you to get an overview of the activity on your system by viewing each of the active sessions and clients. See Запуск guix processes, for more information.

Поддерживаются следующие опции командной строки:

--build-users-group=group

Использовать пользователей из группы group для запуска процессов сборки (see build users).

--no-substitutes

Не использовать подстановки для сборок. Это означает — собирать элементы локально вместо того, чтобы скачивать собранные бинарники (see Подстановки).

When the daemon runs with --no-substitutes, clients can still explicitly enable substitution via the set-build-options remote procedure call (see Хранилище).

--substitute-urls=urls

Использовать адреса urls, разделённые пробелом по умолчанию, как список источников подстановок. Если эта опция пропущена, используется ‘https://ci.guix.gnu.org

Это означает, что подстановки могут скачиваться из адресов urls, если конечно они подписаны доверенной подписью (see Подстановки).

--no-offload

Do not use offload builds to other machines (see Установка демона разгрузки). That is, always build things locally instead of offloading builds to remote machines.

--cache-failures

Кешировать ошибки сборки. По умолчанию кешируются только успешные сборки.

При установке этой опции можно использовать guix gc --list-failures, чтобы просматривать элементы склада, помеченные как ошибочные; guix gc --clear-failures удаляет элементы склада из кеша ошибок. See Вызов guix gc.

--cores=n
-c n

Использовать n ядер процессора для сборки каждой деривации; 0 означает использовать все доступные.

The default value is 0, but it may be overridden by clients, such as the --cores option of guix build (see Запуск guix build).

The effect is to define the NIX_BUILD_CORES environment variable in the build process, which can then use it to exploit internal parallelism—for instance, by running make -j$NIX_BUILD_CORES.

--max-jobs=n
-M n

Разрешить максимум n параллельных задач сборки. Значение по умолчанию - 1. Установка в 0 означает, чтоб сборки не будут выполняться локально, вместо этого, демон будет разгружать сборки (see Установка демона разгрузки) или просто отчитается об ошибке.

--max-silent-time=seconds

Когда процесс сборки или подстановки молчит более seconds секунд, завершить его и отчитаться об ошибке сборки.

Значение по умолчанию - 0, что значит отключить таймаут.

The value specified here can be overridden by clients (see --max-silent-time).

--timeout=seconds

Точно так же, когда процесс сборки или подстановки длится более seconds, завершить его и отчитаться об ошибке сборки.

Значение по умолчанию - 0, что значит отключить таймаут.

The value specified here can be overridden by clients (see --timeout).

--rounds=N

Собирать каждую деривацию n раз подряд и вызывать ошибку, если результаты последовательных сборок не идентичны бит-к-биту. Отметим, что эта настройка может быть переопределена клиентами в команде, например, guix build (see Запуск guix build).

При использовании вместе с --keep-failed различные результаты сохраняются на складе под /gnu/store/…-check. Это делает возможным просмотр различий между двумя результатами.

--debug

Выводить отладочную информацию.

This is useful to debug daemon start-up issues, but then it may be overridden by clients, for example the --verbosity option of guix build (see Запуск guix build).

--chroot-directory=dir

Добавить директорию dir в chroot сборки.

Это может изменить результаты процессов сборки, например, если они используют необязательные (опциональные) зависимости, найденные в dir, если они доступны, но только так, а не иначе. Поэтому не рекомендуется делать так. Вместо этого, убедитесь, что каждая деривация объявляет все необходимые входные данные.

--disable-chroot

Отключить chroot для сборки.

Использование этой опции не рекомендуется, так как опять же это позволит процессам сборки получить доступ к не объявленным зависимостям. Это важно, даже если guix-daemon запущен под аккаунтом непривилегированного пользователя.

--log-compression=type

Архивировать логи сборки методом type. Это один из: gzip, bzip2 или none.

Unless --lose-logs is used, all the build logs are kept in the localstatedir. To save space, the daemon automatically compresses them with Bzip2 by default.

--disable-deduplication

Отключить автоматическую "дедупликацию" файлов на складе.

По умолчанию файлы, добавленные на склад, автоматически "дедуплицируются": если вновь добавленный файл идентичен другому, найденному на складе, демон делает новый файл жесткой ссылкой на другой файл. Это существенно сокращает использование места на диске за счёт небольшого увеличения запросов ввода/вывода в конце процесса сборки. Эта опция отключает такую оптимизацию.

--gc-keep-outputs[=yes|no]

Сообщить, должен ли сборщик мусора (GC) сохранять выходные данные живой деривации.

When set to yes, the GC will keep the outputs of any live derivation available in the store—the .drv files. The default is no, meaning that derivation outputs are kept only if they are reachable from a GC root. See Вызов guix gc, for more on GC roots.

--gc-keep-derivations[=yes|no]

Сообщить, должен ли сборщик мусора (GC) сохранять деривации, соответствующие живым результатам.

When set to yes, as is the case by default, the GC keeps derivations—i.e., .drv files—as long as at least one of their outputs is live. This allows users to keep track of the origins of items in their store. Setting it to no saves a bit of disk space.

In this way, setting --gc-keep-derivations to yes causes liveness to flow from outputs to derivations, and setting --gc-keep-outputs to yes causes liveness to flow from derivations to outputs. When both are set to yes, the effect is to keep all the build prerequisites (the sources, compiler, libraries, and other build-time tools) of live objects in the store, regardless of whether these prerequisites are reachable from a GC root. This is convenient for developers since it saves rebuilds or downloads.

--impersonate-linux-2.6

On Linux-based systems, impersonate Linux 2.6. This means that the kernel’s uname system call will report 2.6 as the release number.

Это полезно для сборки программ, которые (обычно по ошибке) зависят от версии ядра.

--lose-logs

Do not keep build logs. By default they are kept under localstatedir/guix/log.

--system=system

Считать system текущим типом системы. По умолчанию это пара архитектура/ядро, обнаруженная во время конфигурации, например, x86_64-linux.

--listen=endpoint

Слушать соединения с endpoint. endpoint интерпретируется как имя файла сокета Unix-домена, если начинается с / (знак слеша). В противном случае endpoint интерпретируется как имя хоста или им хоста и порт для прослушивания. Вот несколько примеров:

--listen=/gnu/var/daemon

Слушать соединения с сокетом Unix-домена /gnu/var/daemon, который создаётся при необходимости.

--listen=localhost

Слушать соединения TCP сетевого интерфейса, относящиеся к localhost, на порту 44146.

--listen=128.0.0.42:1234

Слушать соединения TCP сетевого интерфейса, относящиеся к 128.0.0.42, на порту 1234.

This option can be repeated multiple times, in which case guix-daemon accepts connections on all the specified endpoints. Users can tell client commands what endpoint to connect to by setting the GUIX_DAEMON_SOCKET environment variable (see GUIX_DAEMON_SOCKET).

Примечание: The daemon protocol is unauthenticated and unencrypted. Using --listen=host is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon. In other cases where remote access to the daemon is needed, we recommend using Unix-domain sockets along with SSH.

When --listen is omitted, guix-daemon listens for connections on the Unix-domain socket located at localstatedir/guix/daemon-socket/socket.


Next: , Previous: , Up: Установка   [Contents][Index]