Next: Invocación de guix package
, Up: Gestión de paquetes [Contents][Index]
Se asume que ya ha dado sus primeros pasos con Guix (see Empezando) y desea obtener información general sobre cómo funciona la implementación internamente.
Cuando se usa Guix, cada paquete se encuentra en el almacén de
paquetes, en su propio directorio—algo que se asemeja a
/gnu/store/xxx-paquete-1.2, donde xxx
es una cadena en base32.
En vez de referirse a estos directorios, las usuarias tienen su propio
perfil, el cual apunta a los paquetes que realmente desean usar. Estos
perfiles se almacenan en el directorio de cada usuaria, en
$HOME/.guix-profile
.
Por ejemplo, alicia
instala GCC 4.7.2. Como resultado,
/home/alicia/.guix-profile/bin/gcc apunta a
/gnu/store/…-gcc-4.7.2/bin/gcc. Ahora, en la misma máquina,
rober
ha instalado ya GCC 4.8.0. El perfil de rober
simplemente sigue apuntando a
/gnu/store/…-gcc-4.8.0/bin/gcc—es decir, ambas versiones de
GCC pueden coexistir en el mismo sistema sin ninguna interferencia.
La orden guix package
es la herramienta central para gestión de
paquetes (see Invocación de guix package
). Opera en los perfiles de usuaria,
y puede ser usada con privilegios de usuaria normal.
La orden proporciona las operaciones obvias de instalación, borrado y
actualización. Cada invocación es en realidad una transacción: o bien
la operación especificada se realiza satisfactoriamente, o bien nada
sucede. Por tanto, si el proceso guix package
es finalizado
durante una transacción, o un fallo eléctrico ocurre durante la transacción,
el perfil de usuaria permanece en su estado previo, y permanece usable.
Además, cualquier transacción de paquetes puede ser vuelta atrás. Si, por ejemplo, una actualización instala una nueva versión de un paquete que resulta tener un error importante, las usuarias pueden volver a la instancia previa de su perfil, de la cual se tiene constancia que funcionaba bien. De igual modo, la configuración global del sistema en Guix está sujeta a actualizaciones transaccionales y vuelta atrás (see Uso de la configuración del sistema).
Todos los paquetes en el almacén de paquetes pueden ser eliminados por
el recolector de basura. Guix puede determinar a qué paquetes hacen
referencia todavía los perfiles de usuarias, y eliminar aquellos que, de
forma demostrable, no se haga referencia en ningún perfil (see Invocación de guix gc
). Las usuarias pueden también borrar explícitamente generaciones
antiguas de su perfil para que los paquetes a los que hacen referencia
puedan ser recolectados.
Guix toma una aproximación puramente funcional en la gestión de paquetes, como se describe en la introducción (see Introducción). Cada nombre de directorio de paquete en /gnu/store contiene un hash de todas las entradas que fueron usadas para construir el paquete—compilador, bibliotecas, guiones de construcción, etc. Esta correspondencia directa permite a las usuarias asegurarse que una instalación dada de un paquete corresponde al estado actual de su distribución. Esto también ayuda a maximizar la reproducibilidad de la construcción: gracias al uso de entornos aislados de construcción, una construcción dada probablemente generará archivos idénticos bit-a-bit cuando se realice en máquinas diferentes (see container).
Estos cimientos permiten a Guix ofrecer despliegues transparentes de
binarios/fuentes. Cuando un binario pre-construido para un elemento de
/gnu/store está disponible para descarga de una fuente externa—una
sustitución, Guix simplemente lo descarga y desempaqueta; en otro caso
construye el paquete de las fuentes, localmente
(see Sustituciones). Debido a que los resultados de construcción son
normalmente reproducibles bit-a-bit, las usuarias no tienen que confiar en
los servidores que proporcionan sustituciones: pueden forzar una
construcción local y retar a las proveedoras (see Invocación de guix challenge
).
Control over the build environment is a feature that is also useful for
developers. The guix shell
command allows developers of a package
to quickly set up the right development environment for their package,
without having to manually install the dependencies of the package into
their profile (see Invoking guix shell
).
Todo Guix y sus definiciones de paquetes están bajo control de versiones, y
guix pull
le permite “viajar en el tiempo” por la historia del
mismo Guix (see Invocación de guix pull
). Esto hace posible replicar una
instancia de Guix en una máquina diferente o en un punto posterior del
tiempo, lo que a su vez le permite replicar entornos de software
completos, mientras que mantiene un preciso seguimiento de la
procedencia del software.
Next: Invocación de guix package
, Up: Gestión de paquetes [Contents][Index]