stringtranslate.com

Nix (administrador de paquetes)

Nix es un administrador de paquetes multiplataforma para sistemas tipo Unix , y una herramienta para instanciar y administrar sistemas operativos tipo Unix , inventado en 2003 [4] por Eelco Dolstra.

Acercarse

El administrador de paquetes Nix emplea un modelo en el que los paquetes de software se instalan en directorios únicos con contenidos inmutables. Estos nombres de directorio corresponden a hashes criptográficos que tienen en cuenta todas las dependencias de un paquete, incluidos otros paquetes administrados por Nix. Como resultado, los nombres de los paquetes Nix identifican el contenido, ya que los paquetes con el mismo nombre habrán tenido las mismas entradas y la misma plataforma de compilación y, por lo tanto, el mismo resultado de compilación. [5]

Implementación

Las recetas de paquetes para Nix están escritas en el "lenguaje Nix" especialmente diseñado, un lenguaje de programación declarativo, puramente funcional , de evaluación diferida y tipado dinámico . [6] Las características distintivas del lenguaje Nix son las cadenas con "contexto", la interpolación de cadenas, las rutas del sistema de archivos de primera clase y las "cadenas sangradas", que en combinación permiten expresar de forma concisa las dependencias entre los datos del sistema de archivos al especificar el contenido de nuevos archivos.

Las dependencias entre archivos, tal como se declaran en el lenguaje Nix, se rastrean automáticamente y se conservan en el "almacén Nix". [7] Los archivos nuevos en el almacén Nix se crean a través de "derivaciones". Una derivación es una estructura de datos persistente que especifica un ejecutable, argumentos y variables de entorno para su invocación (ver execve), y otros archivos que se leerán desde el almacén Nix. Luego, el ejecutable se ejecuta en un entorno limitado que prohíbe el acceso a todo lo que no sean los archivos de entrada especificados explícitamente y solo permite escribir en la ruta de salida designada. Nix conserva la información de dependencia en los archivos de salida escaneando los hashes distintivos utilizados para los nombres de directorio de paquetes. [5]

El seguimiento automático de referencias garantiza la integridad de los paquetes, incluso cuando se transfieren entre máquinas. También permite la recolección de basura de paquetes no utilizados cuando ningún otro paquete depende de ellos. A costa de mayores requisitos de almacenamiento, se garantiza que todas las actualizaciones en Nix sean atómicas y capaces de una reversión eficiente . Los nombres de directorio únicos permiten instalar muchos paquetes con diferentes versiones de bibliotecas compartidas y se afirma que eliminan el llamado infierno de dependencias . [8] Esto también permite que varios usuarios instalen software de forma segura en el mismo sistema sin privilegios de administrador . Como resultado, el modelo de administración y despliegue de paquetes de Nix anuncia paquetes más confiables, reproducibles y portátiles. [5] [9]

Nix tiene soporte completo para Linux , macOS y WSL , y se puede instalar de forma segura junto con otro administrador de paquetes.

Paquetes sin empaquetar

Nixpkgs es el repositorio de paquetes construido sobre el administrador de paquetes Nix. Según Repology , a julio de 2024 contiene más de 110.000 paquetes [10] y tiene una mayor cantidad de paquetes actualizados que cualquier otro repositorio de paquetes. [11] Las arquitecturas compatibles con Nixpkgs son x86_64-linux, aarch64-linux, x86_64-darwin y aarch64-darwin. Los paquetes para estas arquitecturas se construyen regularmente, utilizando un servicio de integración continua llamado Hydra, [12] y los resultados de estas compilaciones se cargan en un caché binario público. [13] Cuando Nix instala un paquete, verifica este caché y descarga el paquete binario para evitar compilarlo localmente.

Nixpkgs se desarrolla en un único repositorio Git en GitHub. [14] Además de los paquetes, también contiene el código fuente de NixOS .

Proyectos que utilizan Nix

NixOS [15] es una distribución de Linux que utiliza Nix para administrar toda la configuración del sistema, incluido el kernel de Linux. [16]

Nix se utiliza para el empaquetado y distribución de software en el experimento LHCb del CERN . [17] Nix es la base de las plataformas de desarrollo de software distribuido Replit [18] y Google IDX . [19]

Bifurcaciones e implementaciones alternativas

En 2021, se anunció una reimplementación con el nombre de Tvix, [20] con los objetivos de modularidad, compatibilidad total con Nixpkgs y un rendimiento mejorado del evaluador. A partir de 2024, Tvix tiene un evaluador [21] y una implementación de la tienda, [22] aunque los autores no consideran que el proyecto aún sea estable o esté listo para su uso en producción. [23] [ Se necesita una fuente no primaria ] Tvix está escrito principalmente en Rust . [24]

En 2024, un equipo de voluntarios lanzó la primera versión de Lix, [25] [ se necesita código fuente no primario ] una bifurcación de Nix centrada en la corrección y la compatibilidad que utiliza el sistema de automatización de compilación Meson . El proyecto pretende reescribir gradualmente partes del código en Rust. [25]

Véase también

Referencias

  1. ^ "Versión 2.22.1". 10 de mayo de 2024. Consultado el 17 de mayo de 2024 .
  2. ^ abcdefghi "El proyecto de código abierto Nix en Open Hub: página de idiomas". Open Hub . Consultado el 18 de mayo de 2024 .
  3. ^ "nix/COPYING at master". 26 de abril de 2006. Consultado el 18 de mayo de 2024 .
  4. ^ Dolstra, Eelco (2003). "Integración de la construcción y la implementación de software" (PDF) . Gestión de configuración de software . Apuntes de clase en informática. Vol. 2649. págs. 102-117. doi :10.1007/3-540-39195-9_8. ISBN 978-3-540-14036-8. Archivado desde el original (PDF) el 21 de abril de 2019.
  5. ^ abc Dolstra, Eelco; de Jonge, Merijn; Visser, Eelco (noviembre de 2004). "Nix: un sistema seguro y sin políticas para la implementación de software" (PDF) . LISA '04: Actas de la 18.ª Conferencia USENIX sobre administración de sistemas . págs. 79–92 . Consultado el 11 de julio de 2023 .
  6. ^ "Manual de referencia de Nix: lenguaje Nix" . Consultado el 4 de marzo de 2024 .
  7. ^ "Manual de referencia de Nix: Tienda Nix". 4 de marzo de 2024.
  8. ^ Prins, Pjotr; Suresh, Jeeva; Dolstra, Eelco (22 de diciembre de 2008). "Nix soluciona el infierno de dependencia en todas las distribuciones de Linux". Linux.com . Consultado el 11 de julio de 2023 .
  9. ^ Dolstra, Eelco (2006). El modelo de implementación de software puramente funcional (PDF) (Ph.D.). Universidad de Utrecht . Consultado el 11 de julio de 2023 .
  10. ^ "Información sobre el repositorio inestable de Nixpkgs - Repology". Archivado desde el original el 3 de junio de 2018.
  11. ^ "Estadísticas del repositorio - Repology".
  12. ^ "RFC 0046 - Niveles de soporte de la plataforma". GitHub .
  13. ^ "Caché binario oficial de NixOS".
  14. ^ "Repositorio de Github de Nixpkgs". GitHub .
  15. ^ "Nix y NixOS | Compilaciones y despliegues reproducibles". nixos.org .
  16. ^ Dolstra, Eelco; Löh, Andres; Pierron, Nicolas (septiembre de 2008). NixOS: una distribución Linux puramente funcional (PDF) . ICFP 2008: 13.ª Conferencia internacional ACM SIGPLAN sobre programación funcional. pp. 367–378.
  17. ^ Burr, Chris; Clemencic, Marco; Couturier, Ben (2018). "Empaquetado y distribución de software para LHCb utilizando Nix" (PDF) .
  18. ^ Replit (25 de mayo de 2023). «Replit: Super Colliding Nix Stores: Nix Flakes para millones de desarrolladores». Blog de Replit . Consultado el 5 de marzo de 2024 .
  19. ^ "Personaliza tu espacio de trabajo IDX | Proyecto IDX". Google para desarrolladores . Consultado el 5 de marzo de 2024 .
  20. ^ "Blog de TVL: Tvix: Estamos reescribiendo Nix". tvl.fyi . Consultado el 19 de mayo de 2024 .
  21. ^ "Blog de TVL: Estado de Tvix - 22 de septiembre". tvl.fyi . Consultado el 19 de mayo de 2024 .
  22. ^ "Blog de TVL: Tvix Status - Febrero '24". tvl.fyi . Consultado el 19 de mayo de 2024 .
  23. ^ tvlfyi/tvix, The Virus Lounge, 18 de mayo de 2024 , consultado el 19 de mayo de 2024
  24. ^ "tvix - depot - Sourcegraph". cs.tvl.fyi . Consultado el 19 de mayo de 2024 .
  25. ^ ab "Lix | Acerca de Lix". lix.systems . Consultado el 19 de mayo de 2024 .

Enlaces externos