GNU Guix

Guix
Parte de Proyecto GNU
Información general
Tipo de programa Sistema de gestión de paquetes
Autor Ludovic Courtès
Lanzamiento inicial 2012
Información técnica
Programado en
Versiones
Última versión estable 1.5.022 de enero de 2026
Última versión en pruebas 0.16.06 de diciembre de 2018
Serie Proyecto GNU
srcinst
Guix
Enlaces

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

GNU Guix System
Parte de Proyecto GNU
Guixsd-xfce-icecat-emacs
Información general
Tipo de programa Sistema operativo
Autor Ludovic Courtès
Desarrollador Proyecto GNU
Modelo de desarrollo Software libre
Lanzamiento inicial 2012
Licencia GPL
Estado actual En desarrollo
Información técnica
Programado en
Plataformas admitidas x86-64, i686, AArch64, armv7 y PowerPC64le
Versiones
Última versión estable 1.5.0 (23 de enero de 2026)
Última versión en pruebas 0.16.06 de diciembre de 2018
Serie Proyecto GNU
srcinst
GNU Guix System
Enlaces

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:

Véase también

Referencias

  1. ↑ Ludovic Courtès (2013). «Functional Package Management with Guix». Madrid, Spain: European Lisp Symposium. Archivado desde el original el 5 de febrero de 2015.
  2. ↑ Courtès, Ludovic (23 de noviembre de 2012), «Introducing GNU Guix», gnu-system-discuss, http://lists.gnu.org/archive/html/gnu-system-discuss/2012-11/msg00000.html.
  3. ↑ Stallman, Richard (5 de junio de 2012), «A GNU Distribution», gnu-system-discuss, http://lists.gnu.org/archive/html/gnu-system-discuss/2012-06/msg00003.html.
  4. ↑ «What to call Guix?», gnu-system-discuss, 15 de enero de 2015, http://lists.gnu.org/archive/html/gnu-system-discuss/2015-01/threads.html.