Next: , Previous: , Up: Utilidades   [Contents][Index]


9.11 Invocación de guix publish

El propósito de guix publish es permitir a las usuarias compartir fácilmente su almacén con otras, quienes pueden usarlo como servidor de sustituciones (see Sustituciones).

When guix publish runs, it spawns an HTTP server which allows anyone with network access to obtain substitutes from it. This means that any machine running Guix can also act as if it were a build farm, since the HTTP interface is compatible with Cuirass, the software behind the ci.guix.gnu.org build farm.

Por seguridad, cada sustitución se firma, permitiendo a las receptoras comprobar su autenticidad e integridad (see Sustituciones). Debido a que guix publish usa la clave de firma del sistema, que es únicamente legible por la administradora del sistema, debe iniciarse como root; la opción --user hace que renuncie a sus privilegios tan pronto como sea posible.

El par claves de firma debe generarse antes de ejecutar guix publish, usando guix archive --generate-key (see Invocación de guix archive).

When the --advertise option is passed, the server advertises its availability on the local network using multicast DNS (mDNS) and DNS service discovery (DNS-SD), currently via Guile-Avahi (see Using Avahi in Guile Scheme Programs).

La sintaxis general es:

guix publish opciones

La ejecución de guix publish sin ningún parámetro adicional lanzará un servidor HTTP en el puerto 8080:

guix publish

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

Una vez el servidor de publicación ha sido autorizado, el daemon puede descargar sustituciones de él. See Obtención de sustiticiones desde otros servidores.

Por defecto, guix publish comprime los archivos al vuelo cuando es necesario. Este modo “al vuelo” es conveniente ya que no necesita configuración y está disponible inmediatamente. No obstante, cuando se proporciona servicio a muchos clientes, se recomienda usar la opción --cache, que activa el almacenamiento en caché de los archivos antes de enviarlos a los clientes—véase a continuación para más detalles. La orden guix weather proporciona una forma fácil de comprobar lo que proporciona un servidor (see Invocación de guix weather).

Además guix publish también sirve como un espejo de acceso por contenido a archivos de fuentes a los que los registros origin hacen referencia (see Referencia de origin). Por ejemplo, si asumimos que guix publish se ejecuta en example.org, la siguiente URL devuelve directamente el archivo hello-2.10.tar.gz con el hash SHA256 proporcionado (representado en formato nix-base32, see Invocación de guix hash).

http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1…ndq1i

Obviamente estas URL funcionan solamente para archivos que se encuentran en el almacén; en otros casos devuelven un 404 (“No encontrado”).

Los log de construcción están disponibles desde URL /log como:

http://example.org/log/gwspk…-guile-2.2.3

Cuando guix-daemon está configurado para almacenar comprimidos los log de construcción, como sucede de forma predeterminada (see Invocación de guix-daemon), las URL /log devuelven los log igualmente comprimidos, con un Content-Type adecuado y/o una cabecera Content-Encoding. Recomendamos ejecutar guix-daemon con --log-compression=gzip ya que los navegadores Web pueden extraer el contenido automáticamente, lo cual no es el caso con la compresión bzip2.

Las siguientes opciones están disponibles:

--port=puerto
-p puerto

Escucha peticiones HTTP en puerto.

--listen=dirección

Escucha en la interfaz de red de la dirección. El comportamiento predeterminado es aceptar conexiones de cualquier interfaz.

--user=usuaria
-u usuaria

Cambia los privilegios a los de usuaria tan pronto como sea posible—es decir, una vez el socket del servidor esté abierto y la clave de firma haya sido leída.

--compression[=método[:nivel]]
-C [método[:nivel]]

Compress data using the given method and level. method is one of lzip, zstd, and gzip; when method is omitted, gzip is used.

Cuando el nivel es cero, desactiva la compresión. El rango 1 a 9 corresponde a distintos niveles de compresión gzip: 1 es el más rápido, y 9 es el mejor (intensivo a nivel de CPU). El valor predeterminado es 3.

Usually, lzip compresses noticeably better than gzip for a small increase in CPU usage; see benchmarks on the lzip Web page. However, lzip achieves low decompression throughput (on the order of 50 MiB/s on modern hardware), which can be a bottleneck for someone who downloads over a fast network connection.

The compression ratio of zstd is between that of lzip and that of gzip; its main advantage is a high decompression speed.

A menos que se use --cache, la compresión ocurre al vuelo y los flujos comprimidos no se almacenan en caché. Por tanto, para reducir la carga en la máquina que ejecuta guix publish, puede ser una buena idea elegir un nivel de compresión bajo, ejecutar guix publish detrás de una pasarela con caché o usar --cache. El uso de --cache tiene la ventaja de que permite a guix publish añadir la cabecera HTTP Content-Length a sus respuestas.

Se puede repetir esta opción, en cuyo caso cada sustitución se comprime usando todos los métodos seleccionados, y todos son anunciados. Esto es útil cuando las usuarias pueden no implementar todos los métodos de compresión: pueden seleccionar el que implementan.

--cache=directorio
-c directorio

Almacena en caché los archivos y metadatos (URL .narinfo) en directorio y únicamente proporciona archivos que están en la caché.

Cuando se omite esta opción, los archivos y metadatos se crean al vuelo. Esto puede reducir el ancho de banda disponible, especialmente cuando la compresión está activa, ya que se puede llegar al límite de la CPU. Otra desventaja del modo predeterminado es que la longitud de los archivos no se conoce con anterioridad, por lo que guix publish no puede añadir la cabecera HTTP Content-Length a sus respuestas, lo que a su vez previene que los clientes conozcan la cantidad de datos a descargar.

De manera contraria, cuando se usa --cache, la primera petición de un elemento del almacén (a través de una URL .narinfo) inicia un proceso en segundo plano para cocinar el archivo—calcular su .narinfo y comprimirlo, en caso necesario. Una vez el archivo está alojado en la caché de directorio, las siguientes peticiones obtendrán un resultado satisfactorio y se ofrecerá el contenido directamente desde la caché, lo que garantiza que los clientes obtienen el mejor ancho de banda posible.

La primera petción de .narinfo devuelve no obstante el código 200, en el caso de que el elemento del almacén sea “lo suficientemente pequeño”, es decir que su tamaño sea inferior al límite de bajo el que se ignora la caché—véase la opción --cache-bypass-threshold a continuación. De este modo, los clientes no deben esperar hasta que el archivo se haya cocinado. Con elementos del almacén de mayor tamaño la primera petición .narinfo devuelve el código 404, lo que significa que los clientes deben esperar hasta que el archivo se haya cocinado.

El proceso de “cocinado” se realiza por hilos de trabajo. Por defecto, se crea un hilo por núcleo de la CPU, pero puede ser personalizado. Véase --workers a continuación.

Cuando se usa --ttl, las entradas en caché se borran automáticamente cuando hayan expirado.

--workers=N

Cuando se usa --cache, solicita la creación de N hilos de trabajo para “cocinar” archivos.

--ttl=ttl

Produce cabeceras HTTP Cache-Control que anuncian un tiempo-de-vida (TTL) de ttl. ttl debe indicar una duración: 5d significa 5 días, 1m significa un mes, etc.

Esto permite a la usuaria de Guix mantener información de sustituciones en la caché durante ttl. No obstante, fíjese que guix publish no garantiza en sí que los elementos del almacén que proporciona de hecho permanezcan disponibles hasta que ttl expire.

Adicionalmente, cuando se usa --cache, las entradas en caché que no hayan sido accedidas en ttl y no tengan un elemento correspondiente en el almacén pueden ser borradas.

--negative-ttl=ttl

Similarly produce Cache-Control HTTP headers to advertise the time-to-live (TTL) of negative lookups—missing store items, for which the HTTP 404 code is returned. By default, no negative TTL is advertised.

This parameter can help adjust server load and substitute latency by instructing cooperating clients to be more or less patient when a store item is missing.

--cache-bypass-threshold=tamaño

Cuando se usa en conjunto con la opción --cache, los elementos del almacén cuyo tamaño sea inferior a tamaño están disponibles de manera inmediata, incluso cuando no están todavía en la caché. tamaño es el número de bytes, o se puedem usar sufijos como M para megabytes, etcétera. El valor predeterminado es 10M.

La opción de omisión de la cache le permite reducir la latencia de publicación a los clientes a expensas de un posible incremento en el uso de E/S y procesador en el lado del servidor: dependiendo de los patrones de acceso de los clientes, dichos elementos del almacén pueden ser cocinados varias veces hasta que una copia se encuentre disponible en la caché.

Incrementar el valor límite puede ser útil para servidores que tengan pocas usuarias, o para garantizar que dichas usuarias obtienen sustituciones incluso con elementos del almacén que no son populares.

--nar-path=ruta

Usa ruta como el prefijo para las URL de los archivos “nar” (see archivadores normalizados).

Por defecto, los archivos nar se proporcionan en una URL como /nar/gzip/…-coreutils-8.25. Esta opción le permite cambiar la parte /nar por ruta.

--public-key=archivo
--private-key=archivo

Usa los archivos específicos como el par de claves pública y privada usadas para firmar los elementos del almacén publicados.

Los archivos deben corresponder al mismo par de claves (la clave privada se usa para la firma y la clave pública simplemente se anuncia en los metadatos de la firma). Deben contener claves en el formato canónico de expresiones-S como el producido por guix archive --generate-key (see Invocación de guix archive). Por defecto, se usan /etc/guix/signing-key.pub y /etc/guix/signing-key.sec.

--repl[=puerto]
-r [puerto]

Lanza un servidor REPL Guile (see REPL Servers in GNU Guile Reference Manual) en puerto (37146 por defecto). Esto se usa principalmente para la depuración de un servidor guix publish en ejecución.

Activar guix publish en el sistema Guix consiste en solo una línea: simplemente instancie un servicio guix-publish-service-type en el campo services de su declaración del sistema operativo operating-system (see guix-publish-service-type)

Si en vez de eso ejecuta Guix en una distribución distinta, siga estas instrucciones:


Next: Invocación de guix challenge, Previous: Invocación de guix graph, Up: Utilidades   [Contents][Index]