Next: , Previous: , Up: Interfaz programática   [Contents][Index]


8.9 El almacén

Conceptualmente, el almacén es el lugar donde se almacenan las derivaciones cuya construcción fue satisfactoria—por defecto, /gnu/store. Los subdirectorios en el almacén se denominan elementos del almacén o rutas del almacén en ocasiones. El almacén tiene una base de datos asociada que contiene información como las rutas del almacén a las que referencia cada ruta del almacén, y la lista de elementos válidos del almacén—los resultados de las construcciones satisfactorias. Esta base de datos reside en localstatedir/guix/db, donde localstatedir es el directorio de estado especificado vía --localstatedir en tiempo de configuración, normalmente /var.

El almacén siempre es accedido a través del daemon en delegación de sus clientes (see Invocación de guix-daemon). Para manipular el almacén, los clientes se conectan al daemon por un socket de dominio Unix, le envían peticiones y leen el resultado—esto son llamadas a procedimientos remotos, o RPC.

Nota: Las usuarias nunca deben modificar archivos directamente bajo el directorio /gnu/store. Esto llevaría a inconsistencias y rompería las premisas de inmutabilidad del modelo funcional de Guix (see Introducción).

See guix gc --verify, para información sobre cómo comprobar la integridad del almacén e intentar recuperarse de modificaciones accidentales.

El módulo (guix store) proporciona procedimientos para conectarse al daemon y realizar RPCs. Estos se describen más adelante. Por defecto, open-connection, y por tanto todas las órdenes guix, se conectan al daemon local o a la URI especificada en la variable de entorno GUIX_DAEMON_SOCKET.

Variable de entorno: GUIX_DAEMON_SOCKET

Cuando se ha definido, el valor de esta variable debe ser un nombre de archivo o una URI designando el punto de conexión del daemon. Cuando es un nombre de archivo, denota un socket de dominio Unix al que conectarse. Además de nombres de archivos, los esquemas de URI aceptados son:

file
unix

Estos son equivalentes a los sockets de dominio Unix. file:///var/guix/daemon-socket/socket es equivalente a /var/guix/daemon-socket/socket.

guix

Estas URI denotan conexiones sobre TCP/IP, sin cifrado ni verificación de la máquina remota. La URI debe especificar el nombre de máquina y opcionalmente un número de puerto (por defecto se usa el puerto 44146):

guix://principal.guix.example.org:1234

Esta configuración es apropiada para redes locales, como clusters, donde únicamente los nodos de confianza pueden conectarse al daemon de construcción en principal.guix.example.org.

La opción --listen de guix-daemon puede usarse para indicarle que escuche conexiones TCP (see --listen).

ssh

These URIs allow you to connect to a remote daemon over SSH. This feature requires Guile-SSH (see Requisitos) and a working guile binary in PATH on the destination machine. It supports public key and GSSAPI authentication. A typical URL might look like this:

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

Como con guix copy, se tienen en cuenta los archivos habituales de configuración del cliente OpenSSH (see Invocación de guix copy).

Esquemas URI adicionales pueden ser aceptados en el futuro.

Nota: La conexión con daemon de construcción remotos se considera experimental en 1592f1a. Por favor, contacte con nosotras para compartir cualquier problema o sugerencias que pueda tener (see Contribuir).

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

Abre una conexión al daemon a través del socket de dominio Unix apuntado por uri (una cadena). Cuando reserve-space? es verdadero, le indica que reserve un poco de espacio extra en el sistema de archivos de modo que el recolector de basura pueda operar incluso cuando el disco se llene. Devuelve un objeto servidor.

El valor por defecto de uri es %default-socket-path, que ese la ruta esperada según las opciones proporcionadas a configure.

Procedimiento: close-connection servidor

Cierra la conexión al servidor.

Variable: current-build-output-port

Esta variable está enlazada a un parámetro SRFI-39, que referencia al puerto donde los logs de construcción y error enviados por el daemon deben escribirse.

Los procedimientos que realizan RPCs toman todos como primer parámetro un objeto servidor.

Procedimiento: valid-path? servidor ruta

Devuelve #t cuando ruta designa un elemento válido del almacén y #f en otro caso (un elemento no-válido puede existir en el disco pero aun así no ser válido, por ejemplo debido a que es el resultado de una construcción que se interrumpió o falló).

Una condición &store-protocol-error se eleva si ruta no contiene como prefijo el directorio del almacén (/gnu/store).

Procedimiento: add-text-to-store servidor nombre texto [referencias]

Añade texto bajo el archivo nombre en el almacén, y devuelve su ruta en el almacén. referencias es la lista de rutas del almacén a las que hace referencia la ruta del almacén resultante.

Procedimiento: build-derivations almacén derivaciones [modo]

Construye derivaciones, una lista de objetos <derivation>, nombres de archivo .drv, o pares derivación/salida, usando el modo especificado—(build-mode normal) en caso de omisión.

Fíjese que el módulo (guix monads) proporciona una mónada así como versiones monádicas de los procedimientos previos, con el objetivo de hacer más conveniente el trabajo con código que accede al almacén (see La mónada del almacén).

Esta sección actualmente está incompleta.


Next: Derivaciones, Previous: Search Paths, Up: Interfaz programática   [Contents][Index]