stringtranslate.com

NixOS

NixOS es una distribución de Linux gratuita y de código abierto basada en el administrador de paquetes Nix puramente funcional . NixOS se compone de módulos y paquetes definidos en el proyecto nixpkgs.

NixOS utiliza un diseño inmutable y un modelo de actualización atómica. [5] Su uso de una configuración declarativa permite reproducibilidad y portabilidad. [6]

Historia

En 2003, Eelco Dolstra inició NixOS como un proyecto de investigación. [7] [8] Dolstra dice que el propósito del proyecto era lograr un sistema para la correcta implementación del software. [9] En 2015, se fundó la Fundación NixOS en los Países Bajos, con el objetivo de apoyar proyectos como NixOS que implementan el modelo de implementación puramente funcional. [10]

Versiones

Historial de versiones de lanzamiento

NixOS publica versiones estables dos veces al año, a finales de mayo y finales de noviembre. [11] [12] [13]

Características

Instalador gráfico de NixOS

Modelo de configuración declarativa

En NixOS, todo el sistema operativo, incluido el kernel , las aplicaciones, los paquetes del sistema y los archivos de configuración , lo construye el administrador de paquetes Nix a partir de una descripción en el lenguaje Nix. La creación de una nueva versión no sobrescribirá las versiones anteriores. [14]

Un sistema NixOS se configura escribiendo una especificación de la funcionalidad que el usuario desea en su máquina en un archivo de configuración global (normalmente ubicado en /etc/nixos). La siguiente es una especificación mínima de una máquina que ejecuta un demonio SSH: [15]

{ bota . cargador . comida . dispositivo  =  "/dev/sda" ; sistemas de archivos . "/" . dispositivo  =  "/dev/sda1" ; servicios . sshd . habilitar  =  verdadero ; }

Después de cambiar el archivo de especificación, el sistema se puede actualizar usando el nixos-rebuildcomando. Esto hace todo lo necesario para crear la nueva versión del sistema, incluida la descarga e instalación de paquetes y la generación de archivos de configuración.

Actualizaciones confiables y atómicas

Dado que los archivos Nix son puros y declarativos , evaluarlos siempre producirá el mismo resultado, independientemente de qué paquetes o archivos de configuración haya en el sistema.

NixOS tiene un enfoque transaccional para la gestión de la configuración, haciendo que los cambios de configuración, como las actualizaciones, sean atómicos . Por ejemplo, si una actualización a una nueva configuración se ve interrumpida por un corte de energía, el sistema seguirá en un estado consistente: arrancará con la configuración antigua o con la nueva. [dieciséis]

Reversiones

Si, después de una actualización del sistema, la nueva configuración no es deseada, se puede revertir usando un comando especial ( nixos-rebuild switch --rollback). Cada versión de configuración del sistema aparece automáticamente en el menú de inicio del sistema. Si la nueva configuración falla o no arranca correctamente, se puede seleccionar una versión anterior. Las reversiones son operaciones ligeras que no implican la restauración de archivos a partir de copias. [17]

Configuraciones de sistema reproducibles

El modelo de configuración declarativa de NixOS facilita la reproducción de una configuración del sistema en otra máquina. Copiar el archivo de configuración en la máquina de destino y ejecutar el comando de actualización del sistema genera la misma configuración del sistema (kernel, aplicaciones, servicios del sistema, etc.), excepto las partes del sistema que no administra el administrador de paquetes, como los datos del usuario.

Modelo basado en código fuente con caché binaria

El lenguaje de compilación Nix utilizado por NixOS especifica cómo compilar paquetes desde el código fuente. Esto facilita la adaptación del sistema a las necesidades del usuario. Sin embargo, como la compilación desde el código fuente es un proceso lento, el administrador de paquetes descarga automáticamente los archivos binarios prediseñados desde un servidor de caché cuando están disponibles. Es posible deshabilitar el caché binario y forzar la construcción desde la fuente usándolo --option substitute falsecomo argumento. Esto brinda la flexibilidad de un modelo de gestión de paquetes basado en código fuente, con la eficiencia de un modelo binario. [18]

Consistencia

El administrador de paquetes de Nix garantiza que el sistema en ejecución sea coherente con la especificación lógica del sistema, lo que significa que reconstruirá todos los paquetes que deban reconstruirse. Por ejemplo, si se cambia el kernel, el administrador de paquetes se asegurará de que se reconstruyan los módulos externos del kernel. De manera similar, cuando se actualiza una biblioteca, se garantiza que todos los paquetes del sistema utilicen la nueva versión, incluso los paquetes vinculados estáticamente a ella.

Gestión de paquetes multiusuario

No se necesitan privilegios especiales para instalar software en NixOS. Además del perfil de todo el sistema, cada usuario tiene un perfil dedicado en el que puede instalar paquetes. Nix también permite que coexistan múltiples versiones de un paquete, por lo que diferentes usuarios pueden tener diferentes versiones del mismo paquete instaladas en sus respectivos perfiles. Si dos usuarios instalan la misma versión de un paquete, solo se creará o descargará una copia. El modelo de seguridad de Nix garantiza que esto sea seguro, porque solo los usuarios en los que la configuración del sistema confía explícitamente pueden usar parámetros de compilación que les permitirían controlar el contenido de la salida de una derivación (como agregar impurezas al sandbox o usar un archivo que no es de confianza). sustituto). [ se necesita aclaración ] Sin esos parámetros, las rutas solo se pueden sustituir a partir de un sustituto en el que el sistema confíe o una compilación local protegida en la que se confíe implícitamente.

Implementación

NixOS se basa en el administrador de paquetes Nix , que almacena todos los paquetes de forma aislada entre sí en el almacén de paquetes.

Los paquetes instalados se identifican mediante un hash criptográfico de todas las entradas utilizadas para su compilación. Cambiar las instrucciones de compilación de un paquete modifica su hash y eso dará como resultado que se instale un paquete diferente en el almacén de paquetes. Este sistema también se utiliza para administrar archivos de configuración, asegurando que las configuraciones más nuevas no sobrescriban las más antiguas.

Una implicación de esto es que NixOS no sigue el estándar de jerarquía del sistema de archivos . Las únicas excepciones son que /bin/shse crea un enlace simbólico a la versión de bash en la tienda de Nix (por ejemplo /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/, ), y aunque NixOS tiene un /etcdirectorio para guardar archivos de configuración de todo el sistema, la mayoría de los archivos en ese directorio son enlaces simbólicos a archivos generados en /nix/store, como como /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config. No utilizar directorios globales como /bines parte de lo que permite que coexistan múltiples versiones de un paquete.

Recepción

Jesse Smith, al revisar NixOS 15.09 para DistroWatch Weekly en 2015, [19] escribió:

Me gusta mucho la forma en que NixOS elimina la preocupación de actualizar paquetes al colocar cada cambio en su propia "generación" y descubrí que, desde el punto de vista del usuario final, NixOS funcionó igual que cualquier otra distribución de Linux. Configurar NixOS no es para principiantes y no creo que NixOS esté destinado a ser utilizado como un sistema operativo de escritorio de uso general. Pero lo que NixOS hace es brindarnos un campo de juego útil para examinar el administrador de paquetes de Nix y creo que esta es una tecnología muy interesante que merece una mayor exploración y adopción por parte de distribuciones adicionales.

Una revisión de 2022 de NixOS 21.11 "Porcupine" en la revista Full Circle concluyó:

En general, NixOS Gnome 21.11 impresiona por ser serio, limpio y elegante. Si eres fanático del escritorio Gnome sin modificaciones, aquí encontrarás muchas cosas que te gustarán. La desventaja de esta distribución es la pronunciada curva de aprendizaje para la gestión de paquetes, incluidas las actualizaciones y similares. No importa de qué distribución vengas, tendrás mucho que aprender para poder hacer que Nix funcione bien en la línea de comandos. [20]

NixOS 22.11 "Raccoon" revisado por Liam Proven en The Register :

En comparación con los informes de NixOS de hace sólo dos o tres años, descubrimos que era muy sencillo instalarlo y ponerlo en funcionamiento. Esto sugiere que las herramientas están madurando bien y alcanzando un cierto nivel de pulido, pero desde una perspectiva inicial no tenemos una base previa con la que comparar. Esta no es en absoluto una distribución tradicional, ni siquiera un Unix tradicional, pero funciona y podemos ver su atractivo. [21]

Notas

  1. ^ Se utilizan varios otros lenguajes de programación en NixOS (a diciembre de 2023).
  2. ^ Se utilizan varias otras licencias para el software incluido con NixOS, por ejemplo, el kernel de Linux tiene la licencia GNU GPL versión 2.0 (a diciembre de 2023)

Ver también

Referencias

  1. ^ "Comunidad - nixos.org". Archivado desde el original el 23 de septiembre de 2022 . Consultado el 23 de septiembre de 2022 .
  2. ^ "NixOS/fundación nixos - Github". GitHub . Archivado desde el original el 23 de septiembre de 2022 . Consultado el 23 de septiembre de 2022 .
  3. ^ ""Lanzamiento de NixOS 23.11"". 29 de noviembre de 2023.
  4. ^ "nixpkgs/COPIAR en master · NixOS/nixpkgs · GitHub". Github.com . Consultado el 19 de septiembre de 2015 .
  5. ^ "¿Qué es una distribución de Linux inmutable? ¿Debería utilizar una?". HowToGeek.com. Archivado desde el original el 7 de diciembre de 2023 . Consultado el 7 de diciembre de 2023 .
  6. ^ "DistroWatch.com: NixOS". Distrowatch.com . Consultado el 19 de septiembre de 2015 .
  7. ^ Dolstra, Eelco (2003). "Integración de la construcción y la implementación de software" (PDF) . Gestión de la configuración del software . Apuntes de conferencias sobre 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.
  8. ^ Dolstra, Eelco (2006). El modelo de implementación de software puramente funcional (PDF) (Ph.D.). Archivado desde el original (PDF) el 9 de junio de 2019.
  9. ^ Jonatha Lorimer. "La tesis de Nix".
  10. ^ "Fundación Stichting NixOS". Nixos.org . Consultado el 19 de septiembre de 2015 .
  11. ^ "Gobernanza". Nixos.org. Archivado desde el original el 16 de agosto de 2020 . Consultado el 28 de agosto de 2020 .
  12. ^ "Nix RFCS (solicitud de comentarios)". GitHub . 17 de diciembre de 2021.
  13. ^ "Anuncios de lanzamiento". Nixos.org . Consultado el 9 de diciembre de 2023 .
  14. ^ Dolstra, Eelco; Hemel, Armijn (7 de mayo de 2007). Gestión de la configuración del sistema puramente funcional (PDF) . 11° Taller USENIX sobre Temas de actualidad en sistemas operativos. San Diego, California, Estados Unidos: Asociación USENIX. Archivado (PDF) desde el original el 10 de julio de 2020 . Consultado el 19 de julio de 2023 .
  15. ^ "Acerca de NixOS". Nixos.org . Consultado el 19 de septiembre de 2015 .
  16. ^ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (20 de octubre de 2008). Actualización atómica de sistemas distribuidos (PDF) . 1er Taller Internacional sobre Temas de actualidad en actualizaciones de software. Nashville, Tennessee, EE.UU.: Asociación de Maquinaria de Computación. doi :10.1145/1490283.1490294. ISBN 978-1-60558-304-4. Archivado (PDF) desde el original el 13 de noviembre de 2021 . Consultado el 19 de julio de 2023 .
  17. ^ Manual de NixOS: revertir cambios de configuración, Nixos.org
  18. ^ Dolstra, Eelco (7 de noviembre de 2005). Uso compartido seguro entre usuarios que no son de confianza en un modelo de implementación binaria/de código transparente (PDF) . XX Conferencia Internacional IEEE/ACM sobre Ingeniería de Software Automatizada. Long Beach, California, EE.UU.: Asociación de Maquinaria de Computación. doi :10.1145/1101908.1101933. ISBN 978-1-58113-993-8. Archivado (PDF) desde el original el 13 de noviembre de 2021 . Consultado el 19 de julio de 2023 .
  19. ^ DistroWatch Weekly, número 637, 23 de noviembre de 2015
  20. ^ Hunt, Adam (28 de octubre de 2022). "Revisión - NixOS" (PDF) . Revista Círculo Completo . Archivado (PDF) desde el original el 28 de octubre de 2022 . Consultado el 28 de octubre de 2022 .
  21. ^ Probado, Liam. "NixOS 22.11 'Raccoon': como prueba de concepto, puedes hacer cosas con sistemas operativos".
  22. ^ "In memoriam: Eelco Visser (1966-2022)".

enlaces externos