Next: Definición de paquetes, Up: Interfaz programática [Contents][Index]
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:
-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.
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:
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.
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.
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]