Next: Configuración de la aplicación, Previous: Preparación del daemon, Up: Instalación [Contents][Index]
guix-daemon
El programa guix-daemon
implementa toda la funcionalidad para
acceder al almacén. Esto incluye iniciar procesos de construcción, ejecutar
el recolector de basura, comprobar la disponibilidad de un resultado de
construcción, etc. Normalmente se ejecuta como root
así:
# 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).
Para detalles obre como configurarlo, see Preparación del daemon.
Por defecto, guix-daemon
inicia los procesos de construcción bajo
distintos UIDs, tomados del grupo de construcción especificado con
--build-users-group. Además, cada proceso de construcción se
ejecuta en un entorno “chroot” que únicamente contiene el subconjunto del
almacén del que depende el proceso de construcción, como especifica su
derivación (see derivación), más un conjunto
específico de directorios del sistema. Por defecto, estos directorios
contienen /dev y /dev/pts. Es más, sobre GNU/Linux, el entorno
de construcción es un contenedor: además de tener su propio árbol del
sistema de archivos, tiene un espacio de nombres de montado separado, su
propio espacio de nombres de PID, de red, etc. Esto ayuda a obtener
construcciones reproducibles (see Características).
Cuando el daemon realiza una construcción en delegación de la usuaria, crea
un directorio de construcción bajo /tmp o bajo el directorio
especificado por su variable de entorno TMPDIR
. Este directorio se
comparte con el contenedor durante toda la construcción, aunque dentro del
contenedor el árbol de construcción siempre se llama
/tmp/guix-build-nombre.drv-0.
The build directory is automatically deleted upon completion, unless the build failed and the client specified --keep-failed (see --keep-failed).
El daemon espera conexiones y lanza un subproceso por sesión iniciada por
cada cliente (una de las sub-órdenes de guix
). La orden
guix processes
le permite tener una visión general de la actividad
de su sistema mostrando clientes y sesiones activas. See Invocación de guix processes
, para más información.
Se aceptan las siguientes opciones de línea de ordenes:
--build-users-group=grupo
Toma las usuarias de grupo para ejecutar los procesos de construcción (see build users).
--no-substitutes
¶No usa sustituciones para la construcción de productos. Esto es, siempre realiza las construcciones localmente en vez de permitir la descarga de binarios pre-construidos (see Sustituciones).
Cuando el daemon se está ejecutando con la opción --no-substitutes,
los clientes aún pueden activar explícitamente las sustituciones a través de
la llamada de procedimiento remoto set-build-options
(see El almacén).
--substitute-urls=urls
Consider urls the default whitespace-separated list of substitute
source URLs. When this option is omitted,
‘https://ci.guix.gnu.org https://bordeaux.guix.gnu.org
’ is used.
Esto significa que las sustituciones puede ser descargadas de urls, mientras estén firmadas por una firma de confianza (see Sustituciones).
See Obtención de sustiticiones desde otros servidores para obtener más información sobre cómo configurar el daemon para obtener sustituciones de otros servidores.
--no-offload
No usa la delegación de construcciones en otras máquinas (see Uso de la facilidad de delegación de trabajo). Es decir, siempre realiza las construcciones de manera local en vez de delegar construcciones a máquinas remotas.
--cache-failures
Almacena en la caché los fallos de construcción. Por defecto, únicamente las construcciones satisfactorias son almacenadas en la caché.
Cuando se usa esta opción, guix gc --list-failures
puede usarse
para consultar el conjunto de elementos del almacén marcados como fallidos;
guix gc --clear-failures
borra los elementos del almacén del
conjunto de fallos existentes en la caché. See Invocación de guix gc
.
--cores=n
-c n
Usa n núcleos de la CPU para construir cada derivación; 0
significa tantos como haya disponibles.
El valor predeterminado es 0
, pero puede ser sobreescrito por los
clientes, como la opción --cores de guix build
(see Invocación de guix build
).
El efecto es definir la variable de entorno NIX_BUILD_CORES
en el
proceso de construcción, el cual puede usarla para explotar el paralelismo
interno—por ejemplo, ejecutando make -j$NIX_BUILD_CORES
.
--max-jobs=n
-M n
Permite como máximo n trabajos de construcción en paralelo. El valor
predeterminado es 1
. Fijarlo a 0
significa que ninguna
construcción se realizará localmente; en vez de eso, el daemon delegará las
construcciones (see Uso de la facilidad de delegación de trabajo), o simplemente fallará.
--max-silent-time=segundos
Cuando la construcción o sustitución permanece en silencio más de segundos, la finaliza e informa de un fallo de construcción.
El valor predeterminado es 0
, que desactiva los plazos.
El valor especificado aquí puede ser sobreescrito por clientes (see --max-silent-time).
--timeout=segundos
Del mismo modo, cuando el proceso de construcción o sustitución dura más de segundos, lo termina e informa un fallo de construcción.
El valor predeterminado es 0
, que desactiva los plazos.
El valor especificado aquí puede ser sobreescrito por los clientes (see --timeout).
--rounds=N
Construye cada derivación n veces seguidas, y lanza un error si los
resultados de las construcciones consecutivas no son idénticos
bit-a-bit. Fíjese que esta configuración puede ser sobreescrita por clientes
como guix build
(see Invocación de guix build
).
Cuando se usa conjuntamente con --keep-failed, la salida que difiere se mantiene en el almacén, bajo /gnu/store/…-check. Esto hace fácil buscar diferencias entre los dos resultados.
--debug
Produce salida de depuración.
Esto es útil para depurar problemas en el arranque del daemon, pero su
comportamiento puede cambiarse en cada cliente, por ejemplo con la opción
--verbosity de guix build
(see Invocación de guix build
).
--chroot-directory=dir
Añade dir al chroot de construcción.
Hacer esto puede cambiar el resultado del proceso de construcción—por ejemplo si usa dependencias opcionales, que se encuentren en dir, cuando están disponibles, y no de otra forma. Por esa razón, no se recomienda hacerlo. En vez de eso, asegúrese que cada derivación declara todas las entradas que necesita.
--disable-chroot
Desactiva la construcción en un entorno chroot.
No se recomienda el uso de esta opción ya que, de nuevo, podría permitir a
los procesos de construcción ganar acceso a dependencias no declaradas. Es
necesario, no obstante, cuando guix-daemon
se ejecuta bajo una
cuenta de usuaria sin privilegios.
--log-compression=tipo
Comprime los logs de construcción de acuerdo a tipo, que puede ser
gzip
, bzip2
o 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]
Whether to discover substitute servers on the local network using mDNS and DNS-SD.
This feature is still experimental. However, here are a few considerations.
guix publish
on your LAN cannot serve you
malicious binaries, but they can learn what software you’re installing;
It is also possible to enable or disable substitute server discovery at run-time by running:
herd discover guix-daemon on herd discover guix-daemon off
--disable-deduplication
¶Desactiva la “deduplicación” automática en el almacén.
Por defecto, los archivos se añaden al almacén “deduplicados” automáticamente: si un nuevo archivo añadido es idéntico a otro que ya se encuentra en el almacén, el daemon introduce el nuevo archivo como un enlace duro al otro archivo. Esto puede reducir notablemente el uso del disco, a expensas de una carga de entrada/salida ligeramente incrementada al finalizar un proceso de construcción. Esta opción desactiva dicha optimización.
--gc-keep-outputs[=yes|no]
Determina si el recolector de basura (GC) debe mantener salidas de las derivaciones vivas.
Cuando se usa yes
, el recolector de basura mantendrá las salidas de
cualquier derivación viva disponible en el almacén—los archivos
.drv
. El valor predeterminado es no
, lo que significa que las
salidas de las derivaciones se mantienen únicamente si son alcanzables desde
alguna raíz del recolector de basura. See Invocación de guix gc
, para más
información sobre las raíces del recolector de basura.
--gc-keep-derivations[=yes|no]
Determina si el recolector de basura (GC) debe mantener derivaciones correspondientes a salidas vivas.
Cuando se usa yes
, como es el caso predeterminado, el recolector de
basura mantiene derivaciones—es decir, archivos .drv
—mientras al
menos una de sus salidas está viva. Esto permite a las usuarias seguir la
pista de los orígenes de los elementos en el almacén. El uso de no
aquí ahorra un poco de espacio en disco.
De este modo, usar --gc-keep-derivations con valor yes
provoca que la vitalidad fluya de salidas a derivaciones, y usar
--gc-keep-outputs con valor yes
provoca que la vitalidad
fluya de derivaciones a salidas. Cuando ambas tienen valor yes
, el
efecto es mantener todos los prerrequisitos de construcción (las fuentes, el
compilador, las bibliotecas y otras herramientas de tiempo de construcción)
de los objetos vivos del almacén, independientemente de que esos
prerrequisitos sean alcanzables desde una raíz del recolector de
basura. Esto es conveniente para desarrolladoras ya que evita
reconstrucciones o descargas.
--impersonate-linux-2.6
En sistemas basados en Linux, suplanta a Linux 2.6. Esto significa que la
llamada del sistema uname
del núcleo indicará 2.6 como el número
de versión de la publicación.
Esto puede ser útil para construir programas que (habitualmente de forma incorrecta) dependen en el número de versión del núcleo.
--lose-logs
No guarda logs de construcción. De manera predeterminada se almacenan en el directorio localstatedir/guix/log.
--system=sistema
Asume sistema como el tipo actual de sistema. Por defecto es el par de
arquitectura/núcleo encontrado durante la configuración, como
x86_64-linux
.
--listen=destino
Espera conexiones en destino. destino se interpreta como el
nombre del archivo del socket de dominio Unix si comienza on /
(barra
a la derecha). En otro caso, destino se interpreta como un nombre de
máquina o un nombre de máquina y puerto a escuchar. Aquí van unos pocos
ejemplos:
--listen=/gnu/var/daemon
Espera conexiones en el socket de dominio Unix /gnu/var/daemon, se crea si es necesario.
--listen=localhost
¶Espera conexiones TCP en la interfaz de red correspondiente a
localhost
, en el puerto 44146.
--listen=128.0.0.42:1234
Espera conexiones TCP en la interfaz de red correspondiente a
128.0.0.42
, en el puerto 1234.
Esta opción puede repetirse múltiples veces, en cuyo caso
guix-daemon
acepta conexiones en todos los destinos
especificados. Las usuarias pueden indicar a los clientes a qué destino
conectarse proporcionando el valor deseado a la variable de entorno
GUIX_DAEMON_SOCKET
(see GUIX_DAEMON_SOCKET
).
Nota: El protocolo del daemon
no está autentificado ni cifrado
. El uso de --listen=dirección es aceptable en redes locales, como clusters, donde únicamente los nodos de confianza pueden conectarse al daemon de construcción. En otros casos donde el acceso remoto al daemon es necesario, recomendamos usar sockets de dominio Unix junto a SSH.
Cuando se omite --listen, guix-daemon
escucha conexiones
en el socket de dominio Unix que se encuentra en
localstatedir/guix/daemon-socket/socket.
Next: Configuración de la aplicación, Previous: Preparación del daemon, Up: Instalación [Contents][Index]