Siguiente: , Anterior: , Subir: Gestión de paquetes   [Índice general][Índice]


5.8 Inferiores

Nota: La funcionalidad descrita aquí es una “versión de evaluación tecnológica” en la versión 1.2.0. Como tal, la interfaz está sujeta a cambios.

A veces necesita mezclar paquetes de revisiones de la revisión de Guix que está ejecutando actualmente con paquetes disponibles en una revisión diferente. Los inferiores de Guix le permiten conseguirlo componiendo diferentes revisiones de Guix de modo arbitrario.

Técnicamente, un “inferior” es esencialmente un proceso Guix separado conectado con su Guix principal a través de una sesión interactiva (véase Invocación de guix repl). El módulo (guix inferior) le permite crear inferiores y comunicarse con ellos. También proporciona una interfaz de alto nivel para buscar y manipular los paquetes que un inferior proporciona—paquetes de inferiores.

Cuando se combina con los canales (véase Canales), los inferiores proporcionan una forma simple de interactuar con una revisión separada de Guix. Por ejemplo, asumamos que desea instalar en su perfil el paquete guile actual, junto al paquete guile-json como existía en una revisión más antigua de Guix—quizá porque las versiones nuevas de guile-json tienen un API incompatible y quiere ejecutar su código contra la API antigua. Para hacerlo, puede escribir un manifiesto para usarlo con guix package --manifest (véase Invocación de guix package); en dicho manifiesto puede crear un inferior para esa versión antigua de Guix que le interesa, y buscará el paquete guile-json en el inferior:

(use-modules (guix inferior) (guix channels)
             (srfi srfi-1))   ;para 'first'

(define channels
  ;; Esta es la revisión antigua de donde queremos
  ;; extraer guile-json.
  (list (channel
         (name 'guix)
         (url "https://git.savannah.gnu.org/git/guix.git")
         (commit
          "65956ad3526ba09e1f7a40722c96c6ef7c0936fe"))))

(define inferior
  ;; Un inferior que representa la revisión previa.
  (inferior-for-channels channels))

;; Ahora crea un manifiesto con el paquete "guile" actual
;; y el antiguo paquete "guile-json".
(packages->manifest
 (list (first (lookup-inferior-packages inferior "guile-json"))
       (specification->package "guile")))

En su primera ejecución, guix package --manifest puede tener que construir el canal que especificó antes de crear el inferior; las siguientes ejecuciones serán mucho más rápidas porque la revisión de Guix estará en la caché.

El módulo (guix inferior) proporciona los siguientes procedimientos para abrir un inferior:

Procedimiento Scheme: inferior-for-channels canales [#:cache-directory] [#:ttl]

Devuelve un inferior para canales, una lista de canales. Usa la caché en cache-directory, donde las entradas pueden ser reclamadas después de ttl segundos. Este procedimiento abre una nueva conexión al daemon de construcción.

Como efecto secundario, este procedimiento puede construir o sustituir binarios para canales, lo cual puede tomar cierto tiempo.

Procedimiento Scheme: open-inferior directorio [#:command "bin/guix"]

Abre el Guix inferior en directorio, ejecutando directorio/command repl o su equivalente. Devuelve #f si el inferior no pudo ser ejecutado.

Los procedimientos enumerados a continuación le permiten obtener y manipular paquetes de inferiores.

Procedimiento Scheme: inferior-packages inferior

Devuelve la lista de paquetes conocida por inferior.

Procedimiento Scheme: lookup-inferior-packages inferior nombre [versión]

Devuelve la lista ordenada de paquetes del inferior que corresponden con nombre en inferior, con los números de versión más altos primero. Si versión tiene un valor verdadero, devuelve únicamente paquetes con un número de versión cuyo prefijo es versión.

Procedimiento Scheme: inferior-package? obj

Devuelve verdadero si obj es un paquete inferior.

Procedimiento Scheme: inferior-package-name paquete
Procedimiento Scheme: inferior-package-version paquete
Procedimiento Scheme: inferior-package-synopsis paquete
Procedimiento Scheme: inferior-package-description paquete
Procedimiento Scheme: inferior-package-home-page paquete
Procedimiento Scheme: inferior-package-location paquete
Procedimiento Scheme: inferior-package-inputs paquete
Procedimiento Scheme: inferior-package-native-inputs paquete
Procedimiento Scheme: inferior-package-propagated-inputs paquete
Procedimiento Scheme: inferior-package-transitive-propagated-inputs paquete
Procedimiento Scheme: inferior-package-native-search-paths paquete
Procedimiento Scheme: inferior-package-transitive-native-search-paths paquete
Procedimiento Scheme: inferior-package-search-paths paquete

Estos procedimientos son la contraparte de los accesos a los registros de paquete (véase Referencia de package). La mayor parte funcionan interrogando al inferior del que paquete viene, por lo que el inferior debe estar vivo cuando llama a dichos procedimientos.

Los paquetes de inferiores pueden ser usados transparentemente como cualquier otro paquete u objeto-tipo-archivo en expresiones-G (véase Expresiones-G). También se manejan transparentemente por el procedimiento packages->manifest, el cual se usa habitualmente en los manifiestos (véase the --manifest option of guix package). Por tanto puede insertar un paquete de inferior prácticamente en cualquier lugar que pueda insertar un paquete normal: en manifiestos, en el campo packages de su declaración operating-system, etcétera.


Siguiente: , Anterior: , Subir: Gestión de paquetes   [Índice general][Índice]