Next: Invocación de guix describe
, Previous: Invocación de guix time-machine
, Up: Gestión de paquetes [Contents][Index]
Nota: La funcionalidad descrita aquí es una “versión de evaluación tecnológica” en la versión fbc5e7f. 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
(see 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.
When combined with channels (see Canales), inferiors provide a simple
way to interact with a separate revision of Guix. For example, let’s assume
you want to install in your profile the current guile
package, along
with the guile-json
as it existed in an older revision of
Guix—perhaps because the newer guile-json
has an incompatible API
and you want to run your code against the old API. To do that, you could
write a manifest for use by guix package --manifest
(see Writing Manifests); in that manifest, you would create an inferior for that old
Guix revision you care about, and you would look up the guile-json
package in the 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:
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.
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.
Devuelve la lista de paquetes conocida por inferior.
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.
Devuelve verdadero si obj es un paquete inferior.
Estos procedimientos son la contraparte de los accesos a los registros de
paquete (see 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.
Inferior packages can be used transparently like any other package or
file-like object in G-expressions (see Expresiones-G). They are also
transparently handled by the packages->manifest
procedure, which is
commonly used in manifests (see the
--manifest option of guix package
). Thus you can insert
an inferior package pretty much anywhere you would insert a regular package:
in manifests, in the packages
field of your operating-system
declaration, and so on.
Next: Invocación de guix describe
, Previous: Invocación de guix time-machine
, Up: Gestión de paquetes [Contents][Index]