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


2.3 Вызов guix-daemon

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

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

This daemon can also be started following the systemd “socket activation” protocol (see make-systemd-constructor in The GNU Shepherd Manual).

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

По умолчанию guix-daemon запускает процессы сборки под различными UID, от пользователей из группы, обозначенной в --build-users-group. В дополнение каждый процесс сборки запускается в окружении chroot, которое содержит только набор элементов склада, от которых зависит процесс сборки, как это обозначено в деривации (see derivation), а также набор специфичных системных директорий. По умолчанию последнее включает /dev и /dev/pts. Более того, под GNU/Linux окружение сборки — это контейнер: в дополнение к тому, что он имеет собственное дерево файловой системы, он также имеет отдельное пространство имён монтирования, своё собственное пространство имён процессов PID, пространство сетевых имён и т.д. Это позволяет получить воспроизводимые сборки (see Особенности).

Когда демон выполняет сборку по запросу пользователя, он создаёт директорию под /tmp или под директорией, заданной его переменной окружения TMPDIR. Эта директория разделяется с контейнером на время сборки, хотя внутри контейнера дерево сборки всегда называется /tmp/guix-build-name.drv-0.

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

Демон слушает соединения и порождает один под-процесс для каждой сессии, запускаемой клиентом (одну из подкоманд guix). Команда guix processes позволяет мониторить активность вашей системы, предоставляя обзор каждой активной сессии и клиентов. Смотрите See Вызов guix processes для подробной информации.

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

--build-users-group=group

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

--no-substitutes

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

Когда демон работает с --no-substitutes, клиенты всё ещё могут явно включить подстановку с помощью удалённого вызова процедур set-build-options (see Хранилище).

--substitute-urls=urls

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

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

See Получение заменителей с других серверов, для получения дополнительной информации о том, как настроить демон для получения заменителей с других серверов.

--no-offload

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

--cache-failures

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

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

--cores=n
-c n

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

Значение по умолчанию - 0, но оно может быть изменено клиентами, в частности, опцией --cores команды guix build (see Запуск guix build).

В результате устанавливается переменная окружения NIX_BUILD_CORES для процесса сборки, который затем может использовать её для применения внутреннего параллелизма, например, для запуска make -j$NIX_BUILD_CORES.

--max-jobs=n
-M n

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

--max-silent-time=seconds

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

The default value is 3600 (one hour).

Значение, заданное здесь, может быть переопределено клиентами (see --max-silent-time).

--timeout=seconds

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

The default value is 24 hours.

Значение, заданное здесь, может быть переопределено клиентами (see --timeout).

--rounds=N

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

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

--debug

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

Это полезно для отладки проблем запуска демона, но затем это может быть переопределено клиентами, например, опцией --verbosity команды 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 gzip by default.

--discover[=yes|no]

Следует ли обнаруживать сервера с заменителями в локальной сети с помощью mDNS and DNS-SD.

Эта функция все еще экспериментальная. Однако есть несколько соображений.

  1. Это может быть быстрее/дешевле, чем загрузка (fetching) с удаленных серверов;
  2. Никаких угроз безопасности, будут использоваться только подлинные заменители (see Аутентификация подстановок);
  3. Объявление злоумышленника guix publish в вашей локальной сети не могут предоставить вам вредоносные двоичные файлы, но они могут узнать, какое программное обеспечение вы устанавливаете;
  4. Серверы могут предоставить заменители через HTTP в незашифрованном виде, поэтому любой в локальной сети может видеть, какое программное обеспечение вы устанавливаете.

Также можно включить или отключить обнаружение сервера с заменителями во время выполнения, запустив:

herd discover guix-daemon on
herd discover guix-daemon off
--disable-deduplication

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

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

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

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

При установке в "yes" (да), сборщик мусора (GC) будет сохранять результаты любой живой деривации, доступной на складе, — файлы .drv. Значение по умолчанию - "no" (нет) - означает, что результаты дериваций хранятся только, если они доступны из корней сборщика мусора (GC roots). Смотрите See Вызов guix gc для информации о корнях сборщика мусора.

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

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

При указании "yes" (да), что является значением по умолчанию, сборщик мусора сохраняет деривации, то есть файлы .drv, до тех пор, пока любой из их выходов остаётся живым. Это позволяет пользователям отслеживать исходники элементов на складе. Установка в "no" (нет) немного экономит место на диске.

Таким образом, установка --gc-keep-derivations в "yes" (да) даётт возможность пройти от результатов до дериваций, а установка --gc-keep-outputs в "yes" (да), делает возможным пройти от дериваций до результатов. Если оба установлены в "yes", тогда это сохранит всё используемое для сборки (исходники, компилятор, библиотеки и другие инструменты сборки) живых объектов на складе, без учёта, доступны эти инструменты сборки из корней сборщика мусора или нет. Это удобно для разработчиков, так как это сокращает пересборки или скачивания.

--impersonate-linux-2.6

На системах, основанных на Linux, выдавать себя за Linux 2.6. Это означает, что системный вызов ядра uname будет выдавать 2.6 номером релиза.

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

--lose-logs

Не сохранять логи сборки. По умолчанию они сохраняются под 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.

Эта опция может повторяться много раз, в таком случае guix-daemon принимает соединения на всех обозначенных точках. Пользователи могут через клиентские команды сообщать, через какие точки соединяться, для этого нужно устанавливать переменную окружения GUIX_DAEMON_SOCKET (see GUIX_DAEMON_SOCKET).

Примечание: Протокол демона неаутентичный и нешифрованный. Использование --listen=host подходит локальным сетям, как например, кластерам, где только доверенные узлы могут соединяться с демоном сборки. В других случаях, когда необходим удалённый доступ к демону рекомендуется использовать сокеты Unix-домена вместе с SSH.

Когда --listen пропущена, guix-daemon слушает соединения с сокетом Unix-домена, расположенным в localstatedir/guix/daemon-socket/socket.


Next: Установка приложения, Previous: Настройка демона, Up: Установка   [Contents][Index]