Next: , Previous: , Up: Программный интерфейс   [Contents][Index]


9.9 Хранилище

Концептуально store - это место, где хранятся успешно построенные derivation’ы - по умолчанию /gnu/store. Подкаталоги в store называются store items или иногда store paths. У store есть связанная база данных, которая содержит такую информацию, как store paths, на которые ссылается каждый store path, и список валидных store item’ов—результаты успешных сборок. Эта база данных находится в localstatedir/guix/db, где localstatedir - это каталог состояний, указанный через --localstatedir во время configure, обычно /var.

Демон всегда обращается к store от имени своих клиентов (see Вызов guix-daemon). Чтобы управлять store, клиенты подключаются к демону через сокет домена Unix, отправляют ему запросы и читают результат - это вызовы удаленных процедур или RPC.

Примечание: Пользователи должны никогда напрямую изменять файлы в /gnu/store. Это приведет к несоответствиям и нарушит предположения о неизменности функциональной модели Guix (see Введение).

See guix gc --verify, для получения информации о том, как проверить целостность store и попытаться восстановить его после случайных изменений.

Модуль (guix store) предоставляет процедуры для подключения к демону и выполнения RPC. Они описаны ниже. По умолчанию open-connection и, следовательно, все команды guix подключаются к локальному демону или к URI, указанному в переменной среды GUIX_DAEMON_SOCKET.

Environment Variable: GUIX_DAEMON_SOCKET

Если установлено, значение этой переменной должно быть именем файла или URI, обозначающим конечную точку демона. Когда это имя файла, оно обозначает сокет домена Unix, к которому нужно подключиться. Помимо имен файлов, поддерживаются следующие схемы URI:

file
unix

Это для сокетов домена Unix. file:///var/guix/daemon-socket/socket эквивалентен /var/guix/daemon-socket/socket.

guix

Эти URI обозначают соединения через TCP/IP без шифрования и аутентификации удаленного хоста. В URI необходимо указать имя хоста и, возможно, номер порта (по умолчанию используется порт 44146):

guix://master.guix.example.org:1234

Эта настройка подходит для локальных сетей, таких как кластеры, где только доверенные узлы могут подключаться к демону сборки по адресу master.guix.example.org.

Параметр --listen команды guix-daemon можно использовать для указания ему прослушивать TCP-соединения (see --listen).

ssh

Эти URI позволяют подключаться к удаленному демону через SSH. Для этой функции требуется Guile-SSH (see Требования) и рабочий guile binary файл в PATH на конечном компьютере. Он поддерживает открытый ключ и аутентификацию GSSAPI. Типичный URL-адрес может выглядеть так:

ssh://charlie@guix.example.org:22

Что касается guix copy, учитываются обычные файлы конфигурации клиента OpenSSH (see Запуск guix copy).

В будущем могут поддерживаться дополнительные схемы URI.

Примечание: Возможность подключения к демонам удаленной сборки считается экспериментальной с 9829f53. Пожалуйста, свяжитесь с нами, чтобы поделиться любыми проблемами или предложениями, которые могут у вас возникнуть (see Содействие).

Scheme Procedure: open-connection [uri] [#:reserve-space? #t]

Подключится к демону через сокет домена Unix по адресу uri (строка). Когда reserve-space? истинна, указать ему, чтобы он зарезервировал немного дополнительного места в файловой системе, чтобы сборщик мусора мог работать, если диск заполнится. Вернуть объект сервера.

file по умолчанию - %default-socket-path, что является обычным расположением с учетом параметров, переданных в configure.

Scheme Procedure: close-connection server

Закрыть соединение с server.

Scheme Variable: current-build-output-port

Эта переменная привязана к параметру SRFI-39, который относится к порту, на который должны быть записаны журналы сборки и ошибок, отправляемые демоном.

Процедуры, которые заставляют все RPC принимать объект сервера в качестве своего первого аргумента.

Scheme Procedure: valid-path? server path

Возвращать #t, когда path обозначает допустимый элемент хранилища, и #f в противном случае (недопустимый элемент может существовать на диске, но по-прежнему быть недопустимым, например, потому что он является результатом прерывания или неудачной сборки).

Условие &store-protocol-error возникает, если path не имеет префикса в каталоге store (/gnu/store).

Scheme Procedure: add-text-to-store server name text [references]

Добавить text в файл name в store и вернуть его store path. references - это список store path’ы, на которые ссылается конечный store path.

Scheme Procedure: lookup-inferior-packages inferior name [mode] Собрать derivations, список объектов <derivation>,

имен файлов .drv или пар derivation/output, используя указанный mode(build-mode normal) по умолчанию.

Обратите внимание, что модуль (guix monads) предоставляет как монаду, так и монадические версии вышеупомянутых процедур с целью сделать более удобной работу с кодом, который обращается к store (see Устройство склада).

Этот раздел в настоящее время не завершен.


Next: , Previous: , Up: Программный интерфейс   [Contents][Index]