NixOS es una distribución de Linux construida sobre el administrador de paquetes de Nix . Utiliza una configuración declarativa y permite actualizaciones confiables del sistema. [3] Se ofrecen dos ramas principales: versión estable actual e inestable siguiendo el último desarrollo. Aunque NixOS comenzó como un proyecto de investigación, [4] es un sistema operativo completamente funcional y utilizable. [ cita requerida ] NixOS tiene herramientas dedicadas a DevOps y tareas de implementación. [5] [6]
Escrito en | Lenguaje de expresión Nix |
---|---|
Familia OS | Linux ( similar a Unix ) |
Estado de trabajo | En desarrollo |
Modelo fuente | Fuente abierta |
Versión inicial | 2003 |
Último lanzamiento | 21.05 / 31 de mayo de 2021 [1] |
Repositorio | |
Objetivo de marketing | Propósito general |
Gerente de empaquetación | Nada |
Plataformas | i686 , x86-64 , ARMv7 , AArch64 |
Tipo de grano | Monolítico ( kernel de Linux ) |
Licencia | MIT [2] |
Página web oficial | nixos |
Historia
NixOS comenzó como un proyecto de investigación de Eelco Dolstra en 2003. [4] [7]
La Stichting NixOS fue fundada en 2015 y tiene como objetivo apoyar proyectos como NixOS que implementan el modelo de implementación puramente funcional. [8]
Versiones
NixOS sigue un lanzamiento cadenciado, dos veces al año. [9] Esto solía suceder alrededor de marzo y septiembre, pero, a partir de las 21.05, NixOS apunta a mayo y noviembre. [10] Cada número de versión tiene el siguiente formato: "YY.MM".
Por ejemplo: "20.03" es la versión lanzada alrededor de marzo de 2020.
Además de eso, cada versión tiene un nombre, como "Markhor" para la versión 20.03.
Historial de versiones | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Características
Modelo de configuración declarativa del sistema
En NixOS, el administrador de paquetes de Nix crea todo el sistema operativo (el kernel , las aplicaciones, los paquetes del sistema, los archivos de configuración , etc.) a partir de una descripción en un lenguaje de compilación funcional. Esto significa que la creación de una nueva configuración no puede sobrescribir las configuraciones anteriores. [12]
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. Por ejemplo, aquí hay una configuración mínima de una máquina que ejecuta un demonio SSH: [13]
{ arranque . cargador . grub . dispositivo = "/ dev / sda" ; fileSystems . "/" . dispositivo = "/ dev / sda1" ; servicios . sshd . habilitar = verdadero ; }
Después de cambiar el archivo de configuración, el sistema se puede actualizar usando el nixos-rebuild switch
comando. Este comando hace todo lo necesario para aplicar la nueva configuración, incluida la descarga y compilación de paquetes y la generación de archivos de configuración.
Actualizaciones confiables
Dado que los archivos Nix son puros y declarativos , evaluarlos siempre producirá el mismo resultado, independientemente de los paquetes o archivos de configuración que haya en el sistema. Por lo tanto, actualizar un sistema es tan confiable como reinstalarlo desde cero.
Actualizaciones atómicas
NixOS tiene un enfoque transaccional para la gestión de la configuración que realiza cambios de configuración, como actualizaciones, atómicas . Esto significa que si se interrumpe la actualización a una nueva configuración, por ejemplo, la energía falla a la mitad, el sistema seguirá estando en un estado consistente: arrancará en la configuración anterior o en la nueva. En otros sistemas, una máquina puede terminar en un estado inconsistente y es posible que ya no arranque. [14]
Retrocesos
Si después de una actualización del sistema la nueva configuración no es deseable, se puede revertir usando un comando especial ( nixos-rebuild switch --rollback
). Cada versión de la configuración del sistema se muestra 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.
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 para partes del sistema no administradas por el administrador de paquetes, como los datos del usuario.
Modelo basado en fuente, con binarios
El lenguaje de compilación de Nix utilizado por NixOS especifica cómo compilar paquetes desde la fuente. Esto facilita la adaptación del sistema a las necesidades del usuario. Sin embargo, como la construcción desde la fuente es un proceso lento, el administrador de paquetes descarga automáticamente los binarios preconstruidos desde un servidor de caché cuando están disponibles. Esto brinda la flexibilidad de un modelo de administración de paquetes basado en fuentes con la eficiencia de un modelo binario. [15]
Consistencia
El administrador de paquetes de Nix asegura que el sistema en ejecución sea consistente con la especificación lógica del sistema, lo que significa que reconstruirá todos los paquetes que necesiten ser reconstruidos. Por ejemplo, si se cambia el kernel, el administrador de paquetes se asegurará de que se reconstruyan los módulos externos del kernel. Del mismo modo, 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 es necesario tener 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, y el modelo de seguridad de Nix garantiza que esto sea seguro.
Implementación
NixOS se basa en el administrador de paquetes de Nix que almacena todos los paquetes de forma aislada en la tienda 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 un paquete diferente instalado en la tienda 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 un enlace simbólico /bin/sha la versión de bash en la tienda Nix (como esta :) /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/
; y aunque NixOS tiene un /etcdirectorio para mantener los 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/storetales como /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config
. No usar directorios globales como /bines parte de lo que permite que coexistan múltiples versiones de un paquete.
Recepción
Jesse Smith revisó NixOS 15.09 para DistroWatch Weekly. [16] Smith 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í, desde el punto de vista del usuario final, que NixOS funcionaba igual que cualquier otra distribución de Linux. La configuración de NixOS no es para principiantes, y no creo que NixOS esté destinado a ser utilizado como un sistema operativo de escritorio de propósito general. Pero lo que hace NixOS es brindarnos un campo de juego útil en el que 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.
DistroWatch Weekly también tiene una revisión de NixOS 17.03, escrita por Ivan Sanders. [17]
Ver también
- Administrador de paquetes Nix: el administrador de paquetes en el que se basa NixOS
- Sistema GNU Guix : un sistema operativo basado en GNU Guix inspirado en Nix [18]
Referencias
- ^ "Versión 21.05 (" Okapi ", 31/05/2021)" . 2021-05-31 . Consultado el 16 de junio de 2021 .
- ^ "nixpkgs / COPYING en master · NixOS / nixpkgs · GitHub" . Github.com . Consultado el 19 de septiembre de 2015 .
- ^ "DistroWatch.com: NixOS" . Distrowatch.com . Consultado el 19 de septiembre de 2015 .
- ^ a b Dolstra, Eelco. "Integración de la construcción de software y la implementación de software" (PDF) . Apuntes de conferencias en Ciencias de la Computación . 2649 : 102-117. Archivado desde el original (PDF) el 21 de abril de 2019.
- ^ "NixOps - La herramienta de implementación en la nube NixOS" . Nixos.org . Consultado el 19 de septiembre de 2015 .
- ^ "Disnix" . Nixos.org . Consultado el 19 de septiembre de 2015 .
- ^ Dolstra, Eelco (2006). El modelo de implementación de software puramente funcional (PDF) (Ph.D.). Archivado desde el original (PDF) el 2019-06-09.
- ^ "Fundación Stichting NixOS" . Nixos.org . Consultado el 19 de septiembre de 2015 .
- ^ "Gobernanza" . Nixos.org . Consultado el 28 de agosto de 2020 .
- ^ https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md
- ^ "Apéndice B. Notas de la versión" . Nixos.org . Consultado el 28 de agosto de 2020 .
- ^ Dolstra, Eelco; Hemel, Armijn (2007). "Gestión de la configuración del sistema puramente funcional" (PDF) . Archivado desde el original (PDF) el 6 de julio de 2019. Cite journal requiere
|journal=
( ayuda ) - ^ "Acerca de NixOS" . Nixos.org . Consultado el 19 de septiembre de 2015 .
- ^ van der Burg, Sander; Dolstra, Eelco; de Jonge, Merijn (2008). "Actualización atómica de sistemas distribuidos" (PDF) . Archivado desde el original (PDF) el 15 de enero de 2019. Cite journal requiere
|journal=
( ayuda ) - ^ Dolstra, Eelco (2005). "Uso compartido seguro entre usuarios que no son de confianza en un modelo de implementación binario / fuente transparente" (PDF) . Archivado desde el original (PDF) el 26 de septiembre de 2019. Cite journal requiere
|journal=
( ayuda ) - ^ DistroWatch Weekly, número 637, 23 de noviembre de 2015
- ^ DistroWatch Weekly, número 712, 15 de mayo de 2017
- ^ "Acerca de - GuixSD" . www.gnu.org . Consultado el 3 de mayo de 2018 .
enlaces externos
- Página web oficial
- NixOS en DistroWatch
- Repositorio de paquetes de Nix
- Wiki no oficial de NixOS