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


9.1 Módulos de paquetes

Desde un punto de vista programático, las definiciones de paquetes de la distribución GNU se proporcionan por módulos Guile en el espacio de nombres (gnu packages …)21 (see Guile modules in GNU Guile Reference Manual). Por ejemplo, el módulo (gnu packages emacs) exporta una variable con nombre emacs, que está asociada a un objeto <package> (see Definición de paquetes).

El espacio de nombres de módulos (gnu packages …) se recorre automáticamente en busca de paquetes en las herramientas de línea de ordenes. Por ejemplo, cuando se ejecuta guix install emacs, todos los módulos (gnu packages …) son procesados hasta encontrar uno que exporte un objeto de paquete cuyo nombre sea emacs. Esta búsqueda de paquetes se implementa en el módulo (gnu packages).

Las usuarias pueden almacenar definiciones de paquetes en módulos con nombres diferentes—por ejemplo, (mis-paquetes emacs)22. Existen dos maneras de hacer visibles estas definiciones de paquetes a las interfaces de usuaria:

  1. Mediante la adición del directorio que contiene sus módulos de paquetes a la ruta de búsqueda con la opción -L de guix package y otras órdenes (see Opciones comunes de construcción), o usando la variable de entorno GUIX_PACKAGE_PATH descrita a continuación.
  2. Mediante la definición de un canal y la configuración de guix pull de manera que se actualice desde él. Un canal es esencialmente un repositorio Git que contiene módulos de paquetes. See Canales, para más información sobre cómo definir y usar canales.

GUIX_PACKAGE_PATH funciona de forma similar a otras variables de rutas de búsqueda:

Variable de entorno: GUIX_PACKAGE_PATH

Es una lista separada por dos puntos de directorios en los que se buscarán módulos de paquetes adicionales. Los directorios enumerados en esta variable tienen preferencia sobre los propios módulos de la distribución.

La distribución es auto-contenida y completamente basada en el lanzamiento inicial: cada paquete se construye basado únicamente en otros paquetes de la distribución. La raíz de este grafo de dependencias es un pequeño conjunto de binarios del lanzamiento inicial, proporcionados por el módulo (gnu packages bootstrap). Para más información sobre el lanzamiento inicial, see Lanzamiento inicial.


Footnotes

(21)

Fíjese que los paquetes bajo el espacio de nombres de módulo (gnu packages …) no son necesariamente “paquetes GNU”. Este esquema de nombrado de módulos sigue la convención habitual de Guile para el nombrado de módulos: gnu significa que estos módulos se distribuyen como parte del sistema GNU, y packages identifica módulos que definen paquetes.

(22)

Fíjese que el nombre de archivo y el nombre de módulo deben coincidir. Por ejemplo, el módulo (mis-paquetes emacs) debe almacenarse en el archivo mis-paquetes/emacs.scm en relación con la ruta de carga especificada con --load-path o GUIX_PACKAGE_PATH. See Modules and the File System in GNU Guile Reference Manual, para obtener detalles.


Next: Definición de paquetes, Up: Interfaz programática   [Contents][Index]