Le texte ne doit pas être écrit en capitales (les noms de famille non plus), ni en gras, ni en italique, ni en « petit »…
Le gras n'est utilisé que pour surligner le titre de l'article dans l'introduction, une seule fois.
L'italique est rarement utilisé : mots en langue étrangère, titres d'œuvres, noms de bateaux, etc.
Les citations ne sont pas en italique mais en corps de texte normal. Elles sont entourées par des guillemets français : « et ».
Les listes à puces sont à éviter, des paragraphes rédigés étant largement préférés. Les tableaux sont à réserver à la présentation de données structurées (résultats, etc.).
Les appels de note de bas de page (petits chiffres en exposant, introduits par l'outil « Source ») sont à placer entre la fin de phrase et le point final[comme ça].
Les liens internes (vers d'autres articles de Wikipédia) sont à choisir avec parcimonie. Créez des liens vers des articles approfondissant le sujet. Les termes génériques sans rapport avec le sujet sont à éviter, ainsi que les répétitions de liens vers un même terme.
Les liens externes sont à placer uniquement dans une section « Liens externes », à la fin de l'article. Ces liens sont à choisir avec parcimonie suivant les règles définies. Si un lien sert de source à l'article, son insertion dans le texte est à faire par les notes de bas de page.
NixOS est une distribution Linux basée sur le gestionnaire de paquet Nix. Elle utilise une configuration déclarative et permet des mises à jour fiables du système[5]. Deux branches principales sont proposées : une version stable et une version instable comprenant les derniers ajouts.
NixOS dispose d'outils dédiés aux Devops et aux tâches de déploiement[7],[8].
Histoire
NixOS a commencé comme un projet de recherche par Eelco Dolstra en 2003[6].
La fondation NixOS a été fondée en 2015 et vise à soutenir des projets comme NixOS qui mettent en œuvre le modèle de déploiement purement fonctionnel[9].
Versions
NixOS suit une cadence de publication de deux versions par an. Ces versions sont habituellement publiées vers mars et septembre, mais à partir de la version 21.05, NixOS vise désormais mai et novembre[10]. Chaque numéro de versions a le format « YY.MM ». Par exemple, la version 20.03 de NixOS correspond à la version publiée en mars 2020. De plus, chaque version est identifiée par un nom de code comme « Markhor » pour la version 20.03.
Dans NixOS, l'ensemble du système d'exploitation — le noyau, les applications, les composants système, les fichiers de configuration, etc. — est construit par le gestionnaire de paquets Nix à partir d'une description dans un langage de construction fonctionnel. La création d'une nouvelle configuration ne peut pas remplacer les configurations précédentes[12].
Un système NixOS est configuré en écrivant une spécification des fonctionnalités, que l'utilisateur souhaite sur sa machine, dans un fichier de configuration globale. Par exemple, voici une configuration minimale d'une machine exécutant un daemon SSH[13][source insuffisante] :
Après avoir modifié le fichier de configuration, le système peut être mis à jour à l'aide de la commande nixos-rebuild switch. Cette commande fait tout ce qui est nécessaire pour appliquer la nouvelle configuration, y compris le téléchargement et la compilation des paquets et la génération des fichiers de configuration.
Mises à jour fiables
Étant donné que les fichiers Nix sont purs et déclaratifs, leur évaluation produira toujours le même résultat, quels que soient les paquets ou fichiers de configuration présents sur le système. Ainsi, la mise à jour d'un système est aussi fiable que sa réinstallation.
Mises à jours atomiques
NixOS a une approche transactionnelle de la gestion des configurations, permettant de faire des mises à jours atomiques. Par exemple, en cas d'échec de mise à jour due à une coupure de l'alimentation ou du réseau, le système sera toujours dans un état cohérent : il démarrera dans l'ancienne ou la nouvelle configuration. Dans d'autres systèmes, une machine peut se retrouver dans un état incohérent et peut même ne plus démarrer[14].
Rollbacks
Si après une mise à jour du système, la nouvelle configuration n'est pas souhaitée, elle peut être annulée à l'aide d'une commande spéciale (nixos-rebuild switch --rollback). Toutes les configurations du système s'affichent automatiquement dans le menu de démarrage. Si la nouvelle configuration plante ou ne démarre pas correctement, une ancienne version peut être sélectionnée. Les restaurations sont des opérations légères qui n'impliquent pas la restauration de fichiers à partir de copies.
Configurations système reproductibles
Le modèle de configuration déclarative de NixOS facilite la reproduction d'une configuration système sur une autre machine. La copie du fichier de configuration sur la machine cible et l'exécution de la commande de mise à jour du système génèrent la même configuration système (noyau, applications, services système, etc.), sauf pour les parties du système non gérées par le gestionnaire de packages telles que les données utilisateur.
Modèle basé sur la source, avec des binaires
Le langage Nix utilisé par NixOS spécifie comment construire des paquets à partir des sources. Cela facilite l'adaptation du système aux besoins des utilisateurs. Cependant, la construction à partir de la source étant un processus lent, le gestionnaire de paquets télécharge automatiquement les fichiers binaires pré-compilés à partir d'un serveur de cache lorsqu'ils sont disponibles. Cela donne la flexibilité d'un modèle de gestion de paquets basé sur la source avec l'efficacité d'un modèle binaire[15].
Cohérence
Le gestionnaire de packages Nix garantit que le système en cours d'exécution est cohérent avec les spécifications logiques du système, ce qui signifie qu'il va reconstruire tous les paquets qui ont besoin d'être reconstruits. Par exemple, si le noyau est modifié, le gestionnaire de paquets s'assurera que les modules externes du noyau seront reconstruits. De même, lorsqu'une bibliothèque est mise à jour, elle garantit que tous les paquets système utilisent la nouvelle version, même les paquets qui y sont liés statiquement.
Gestion de paquets multi-utilisateurs
Il n'est pas nécessaire de disposer de privilèges spéciaux pour installer des logiciels dans NixOS. En plus du profil à l'échelle du système, chaque utilisateur dispose d'un profil dédié dans lequel il peut installer des paquets. Nix permet également à plusieurs versions d'un paquet de coexister, de sorte que différents utilisateurs peuvent avoir différentes versions du même paquet installées dans leurs profils respectifs. Si deux utilisateurs installent la même version d'un paquet, une seule copie sera créée ou téléchargée, et le modèle de sécurité de Nix garantit que cela est sécurisé.
Mise en œuvre
NixOS est basé sur le gestionnaire de packages Nix qui stocke tous les paquets de manière isolée, dans le magasin de paquets.
Les paquets installés sont identifiés par un hachage cryptographique de toutes les entrées utilisées pour leur construction. La modification des instructions de construction d'un package modifie son hachage et cela entraînera l'installation d'un paquet différent dans le magasin de paquets. Ce système est également utilisé pour gérer les fichiers de configuration en veillant à ce que les configurations plus récentes n'écrasent pas les anciennes.
Cela implique que NixOS ne respecte pas la norme de hiérarchie du système de fichiers. Les seules exceptions sont un lien symbolique /bin/sh vers une version de bash dans le magasin Nix (par exemple : /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/bin/bash) ; et bien que NixOS ait un répertoire /etc pour conserver les fichiers de configuration à l'échelle du système, la plupart des fichiers de ce répertoire sont des liens symboliques vers des fichiers stockées dans /nix/store tels que /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config. Ne pas utiliser de répertoires globaux tels que /bin fait partie de ce qui permet à plusieurs versions d'un paquet de coexister.
↑ a et b(en) Eelco Dolstra, « Integrating Software Construction and Software Deployment », Lecture Notes in Computer Science, vol. 2649, , p. 102–117 (lire en ligne [PDF]).
↑(en) Eelco Dolstra et Armijn Hemel, « Purely Functional System Configuration Management », HOTOS'07: Proceedings of the 11th USENIX workshop on Hot topics in operating systems, , p. 1-6 (lire en ligne [PDF]).
↑(en) Sander van der Burg, Eelco Dolstra et Merijn de Jonge, « Atomic Upgrading of Distributed Systems », Conference: Proceedings of the 1st ACM Workshop on Hot Topics in Software Upgrades, HotSWUp 2008, (DOI10.1145/1490283.1490294, lire en ligne).
↑(en) Eelco Dolstra, « Secure Sharing Between Untrusted Users in a Transparent Source/Binary Deployment Model », Conference: 20th IEEE/ACM International Conference on Automated Software Engineering (ASE 2005), (DOI10.1145/1101908.1101933, lire en ligne)
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « NixOS » (voir la liste des auteurs).
Articles connexes
Annexes
Nix - Le gestionnaire de packages sur lequel NixOS est basé
Guix System - Distribution GNU/Linux basé sur Guix, un autre gestionnaire de packages fonctionnel