GNU Guix (/ɡiːks/; palabra compuesta a partir de «Guile» y «Nix») es un gestor de paquetes multiplataforma, aunque inicialmente pensado para el sistema operativo GNU Guix. Toma inspiración del Nix package manager, aunque, su configuración y las «package recipes» están escritas en «Guile Scheme». Se especializa en proveer exclusivamente software libre.
Difiriendo de los sistemas gestores de paquetes tradicionales, Guix (al igual que Nix) usa programación puramente funcional desarrollando un modelo donde el software es instalado en directorios únicos generados a través de funciones hash criptográficas. Las dependencias de cada software a instalar están incluidas en la entrada de cada «hash». Esto resuelve el problema del infierno de las dependencias permitiendo que múltiples versiones del mismo software puedan coexistir, lo que hace a los paquetes portables y reproducibles. Se ha propuesto la realización de cálculos científicos en un entorno Guix como una respuesta prometedora a la crisis de replicación.
El desarrollo de GNU Guix se ha entrelazado con el del GNU Guix System, una distribución de sistema operativo instalable usando el kernel Linux-Libre y el «GNU Shepherd init system».
Características generales Los paquetes Guix son definidos a través de las API funcionales de Guile Scheme diseñadas para la gestión de paquetes. Las dependencias se gestionan directamente en este lenguaje mediante valores especiales denominados «derivaciones», que el demonio de Guix evalúa de forma diferida. Guix realiza un seguimiento automático de estas referencias para que los paquetes instalados puedan ser eliminados cuando ya no haya ningún otro paquete que dependa de ellos; a cambio de unas mayores necesidades de almacenamiento, todas las actualizaciones en Guix están garantizadas como atómicas y pueden revertirse.
La función de reversión de Guix es heredada del diseño de Nix y raramente se puede encontrar en otros gestores de paquetes.
Definición de paquetes Este es un ejemplo de definición de paquete para el paquete «hello-pachage».(use-modules (guix packages) (guix download) (guix build-system gnu) (guix licenses))
(define-public hello (package (name "hello") (version "2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (build-system gnu-build-system) (synopsis "Hello, GNU world: An example GNU package") (description "GNU Hello prints the message \"Hello, world!\" and then exits. It serves as an example of standard GNU coding practices. As such, it supports command-line arguments, multiple languages, and so on.") (home-page "https://www.gnu.org/software/hello/") (license gpl3+)))Está escrito usando Guile. Las recetas de paquetes pueden ser inspeccionadas fácilmente (ejecutando, por ejemplo, guix edit hello), y cambiadas en Guix, mejorando así la transparencia y fácil modificación del sistema.
Actualizaciones transaccionales Heredado del diseño de Nix, todas las manipulaciones de los elementos almacenados son independientes unas de otras y los directorios del almacén empiezan con un hash codificado en base-32 del código fuente de la derivación junto con sus entradas.
Historia El Proyecto GNU ha anunciado de noviembre de 2012, la primera versión de GNU Guix (pronunciado como un homófono de "geeks"), un gestor de paquetes funcional basado en Nix que proporciona, entre otras cosas, Guile Scheme APIs. El proyecto se inició en junio de 2012 por Ludovic Courtès, uno de los hackers de GNU Guile.
Guix System Distribution
El proyecto Guix también desarrolla el Guix System Distribution (GuixSD for short), un sistema GNU instalable y completo con el kernel Linux-libre y el sistema de inicio GNU dmd. El 3 de febrero de 2015, la Free Software Fundation añadió esta distribución a su lista de sistemas completamente libres.
Arquitecturas admitidas Las arquitecturas que admite el sistema son:
IA-32 x86-64 ARMv7 AArch64 POWER9 RISC-V 64 MIPS64
Véase también NixOS GNU Hurd Referencias
Categoría:Software del Proyecto GNU Categoría:Gestores de paquetes Linux Categoría:Distribuciones GNU/Linux libres