NixOS/fr: Difference between revisions

Nanucq (talk | contribs)
Created page with "Pour plus d'informations, consultez la [section « Modules https://nixos.org/nixos/manual/index.html#sec-writing-modules » du manuel NixOS]."
Nanucq (talk | contribs)
Created page with "Chaque fois que l'état du système est reconstruit à l'aide de l'option <code>nixos-rebuild switch</code>, une nouvelle génération est créée. Vous pouvez revenir à la génération précédente à tout moment, ce qui s'avère utile si une modification de configuration (ou une mise à jour du système) s'avère préjudiciable."
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{Navbox Nix}}
{{Navbox Nix}}
{{Expansion|reason=Il faut que cette page soit une introduction accessible parce que c'est un des premiers articles que les nouveaux utilisateurs lisent ici. C'est pourquoi les sujets plus compliqués devraient être bougés dans d'autres articles.}}
{{Expansion|reason=Il faut que cette page soit une introduction accessible parce que c'est un des premiers articles que les nouveaux utilisateurs lisent ici. C'est pourquoi les sujets plus compliqués devraient être traités dans d'autres articles.}}


[https://nixos.org/ NixOS] est une distribution Linux basée sur [[Special:MyLanguage/Nix|Nix]] un gestionnaire de paquets et un système de construction. À l'échelle du système, il supporte la [https://fr.wikipedia.org/wiki/Programmation_déclarative programmation déclarative] au travers d'une [https://fr.wikipedia.org/wiki/Gestion_de_configuration gestion de configuration] ainsi que les mises à jour [https://fr.wikipedia.org/wiki/Atomicité_(informatique) atomiques] et les "retours en arrière" (rollbacks), bien qu'il puisse aussi supporter des paquets [https://fr.wikipedia.org/wiki/Programmation_impérative impératifs] ainsi que la gestion des utilisateurs.
[https://nixos.org/ NixOS] est une distribution Linux basée sur [[Special:MyLanguage/Nix|Nix]] un gestionnaire de paquets et un système de construction. À l'échelle du système, il supporte la [https://fr.wikipedia.org/wiki/Programmation_déclarative programmation déclarative] au travers d'une [https://fr.wikipedia.org/wiki/Gestion_de_configuration gestion de configuration] ainsi que les mises à jour [https://fr.wikipedia.org/wiki/Atomicité_(informatique) atomiques] et les "retours en arrière" (rollbacks), bien qu'il puisse aussi supporter des paquets [https://fr.wikipedia.org/wiki/Programmation_impérative impératifs] ainsi que la gestion des utilisateurs.
Line 8: Line 8:
Depuis que Nix met des [https://fr.wikipedia.org/wiki/Fichier_exécutable exécutables] en cache, cela permet d'avoir un compromis unique entre une approche orientée autour de l'exécutable présente dans des distributions comme Debian et une approche orientée autour du [https://fr.wikipedia.org/wiki/Code_source code source] utilisée dans des distributions comme Gentoo. Les binaires peuvent être utilisés comme des composants standard, tandis que les paquets sur-mesure et les modules peuvent être utilisés automatiquement quand un binaire pré-compilé n'est pas disponible.
Depuis que Nix met des [https://fr.wikipedia.org/wiki/Fichier_exécutable exécutables] en cache, cela permet d'avoir un compromis unique entre une approche orientée autour de l'exécutable présente dans des distributions comme Debian et une approche orientée autour du [https://fr.wikipedia.org/wiki/Code_source code source] utilisée dans des distributions comme Gentoo. Les binaires peuvent être utilisés comme des composants standard, tandis que les paquets sur-mesure et les modules peuvent être utilisés automatiquement quand un binaire pré-compilé n'est pas disponible.


<div lang="en" dir="ltr" class="mw-content-ltr">
Les versions stables de NixOS sont publiées deux fois par an (vers la fin mai et la fin novembre). NixOS a été créé par [https://edolstra.github.io/ Eelco Dolstra] et [https://en.wikipedia.org/wiki/Armijn_Hemel Armijn Hemel], et a vu le jour en 2003. Il est développé et maintenu par la communauté sous l'égide de la [[Special:MyLanguage/Nix_Community#NixOS_Foundation|Fondation NixOS]].
Stable NixOS releases are delivered twice a year (around the end of May and the end of November). NixOS was created by [https://edolstra.github.io/ Eelco Dolstra] and [https://en.wikipedia.org/wiki/Armijn_Hemel Armijn Hemel], and initially released in 2003. It is community developed and maintained under the stewardship of the [[Special:MyLanguage/Nix_Community#NixOS_Foundation|NixOS Foundation]].
</div>


== Installation ==
== Installation ==
Line 24: Line 22:
* Amazon EC2 AMIs,
* Amazon EC2 AMIs,


<div lang="en" dir="ltr" class="mw-content-ltr">
De plus, de nombreuses installations Linux existantes peuvent être converties en installations NixOS à l'aide de nixos-infect ou nixos-in-place; cela s'avère particulièrement utile pour installer NixOS chez des hébergeurs qui ne prennent pas en charge NixOS de manière native.
Additionally, many existing Linux installations can be converted into NixOS installations using [https://github.com/elitak/nixos-infect nixos-infect] or [https://github.com/jeaye/nixos-in-place nixos-in-place]; this is particularly useful for installing NixOS on hosting providers which do not natively support NixOS.
</div>


<span id="System_architectures"></span>
<span id="System_architectures"></span>
Line 102: Line 98:
Pour plus d'information sur l'utilisation et la mise en place des canaux, merci de vous référer aux [[Special:MyLanguage/channel branches| branches]].
Pour plus d'information sur l'utilisation et la mise en place des canaux, merci de vous référer aux [[Special:MyLanguage/channel branches| branches]].


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Internals"></span>
== Internals ==
== En interne ==
</div>


<span id="Comparison_with_traditional_Linux_Distributions"></span>
<span id="Comparison_with_traditional_Linux_Distributions"></span>
=== Comparaison avec les distributions Linux traditionnelles ===
=== Comparaison avec les distributions Linux traditionnelles ===


<div lang="en" dir="ltr" class="mw-content-ltr">
''Article principal: [[Special:MyLanguage/Nix vs. Linux Standard Base|Nix vs. Linux Standard Base]]''
''Main Article: [[Special:MyLanguage/Nix vs. Linux Standard Base|Nix vs. Linux Standard Base]]''
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
La principale différence entre NixOS et les autres distributions Linux réside dans le fait que NixOS ne suit pas la structure de système de fichiers définie par la [https://en.wikipedia.org/wiki/Linux_Standard_Base Linux Standard Base]. Sur les systèmes conformes à la norme LSB, les logiciels sont stockés sous <code>/{,usr}/{bin,lib,share}</code> et les fichiers de configuration sont généralement stockés dans <code>/etc</code>. Les binaires logiciels sont disponibles dans l'environnement utilisateur s'ils sont placés dans l'un des répertoires <code>/bin</code> de la LSB. Lorsqu'un programme fait référence à des bibliothèques dynamiques, il recherche les bibliothèques requises dans les dossiers LSB (<code>/lib</code>, <code>/usr/lib</code>).
The main difference between NixOS and other Linux distributions is that NixOS does not follow the [https://en.wikipedia.org/wiki/Linux_Standard_Base Linux Standard Base] file system structure. On LSB-compliant systems software is stored under <code>/{,usr}/{bin,lib,share}</code> and configuration is generally stored in <code>/etc</code>. Software binaries are available in the user environment if they are placed in one of the LSB's <code>/bin</code> directories. When a program references dynamic libraries it will search for the required libraries in the LSB folders (<code>/lib</code>, <code>/usr/lib</code>).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Dans NixOS, cependant, <code>/lib</code> et <code>/usr/lib</code> n'existent pas. À la place, toutes les bibliothèques système, les binaires, les noyaux, les micrologiciels et les fichiers de configuration sont placés dans le [[Special:MyLanguage/Nix#Nix store|Nix store]]. Les fichiers et répertoires situés dans <code>/nix/store</code> sont nommés d'après les hachages des informations décrivant les données compilées. Tous les fichiers et répertoires placés dans le magasin Nix sont immuables. <code>/bin</code> et <code>/usr/bin</code> sont pratiquement inexistants : ils ne contiennent respectivement que <code>/bin/sh</code> et <code>/usr/bin/env</code>, afin d'assurer une compatibilité minimale avec les scripts existants utilisant des lignes shebang. Les environnements au niveau utilisateur sont implémentés à l'aide d'un grand nombre de liens symboliques vers tous les paquets et fichiers auxiliaires requis. Ces environnements sont appelés [[Special:MyLanguage/Nix#Profiles|profils]] et sont stockés dans <code>/nix/var/nix/profiles</code>, chaque utilisateur disposant de ses propres profils. C'est en structurant le système de cette manière que NixOS tire ses principaux avantages par rapport aux distributions Linux classiques, tels que l'atomicité et la prise en charge des retours en arrière.
In NixOS however <code>/lib</code> and <code>/usr/lib</code> do not exist. Instead all system libraries, binaries, kernels, firmware and configuration files are placed in the [[Special:MyLanguage/Nix#Nix store|Nix store]]. The files and directories in <code>/nix/store</code> are named by hashes of the information describing the built data. All of the files and directories placed in the Nix store are immutable. <code>/bin</code> and <code>/usr/bin</code> are almost absent: they contain only <code>/bin/sh</code> and <code>/usr/bin/env</code> respectively, to provide minimal compatibility with existing scripts using shebang lines. User-level environments are implemented using a large number of symbolic links to all required packages and auxiliary files. These environments are called [[Special:MyLanguage/Nix#Profiles|profiles]] and are stored in <code>/nix/var/nix/profiles</code>, each user having their own profiles. Structuring the system in this way is how NixOS obtains its key advantages over conventional Linux distributions, such as atomicity and rollback support.
</div>


<span id="Usage_of_the_Nix_store"></span>
<span id="Usage_of_the_Nix_store"></span>
=== Utilisation du Nix store ===
=== Utilisation du Nix store ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Une grande partie de la confusion chez les débutants provient du fait que la configuration est stockée dans l'arborescence en lecture seule <code>/nix/store</code>, aux côtés de tous les paquets installés. Cela rend impossible toute modification manuelle de la configuration du système ; toutes les modifications de configuration doivent être effectuées en éditant le fichier <code>/etc/nixos/configuration.nix</code> et en exécutant la commande <code>nixos-rebuild switch</code>. NixOS fournit le [[Special:MyLanguage/NixOS_modules|système de modules]] pour modifier toutes les configurations requises. Les utilisateurs doivent d'abord utiliser [https://search.nixos.org/options l'outil de recherche d'options] pour vérifier si l'option dont ils ont besoin existe avant de tenter d'ajouter manuellement des fichiers ou des configurations via des fonctionnalités de bas niveau de NixOS telles que les scripts d'activation.
A lot of confusion for newcomers arises from the fact that configuration is stored in the read-only <code>/nix/store</code> tree along with all the installed packages. This fact makes it impossible to manually edit system configuration; all configuration changes must be performed by editing the <code>/etc/nixos/configuration.nix</code> file and executing <code>nixos-rebuild switch</code>. NixOS provides the [[Special:MyLanguage/NixOS_modules|module system]] for editing all required configurations. Users should first use [https://search.nixos.org/options the option search tool] to check if the option they need exists before attempting to manually add files or configuration via low-level NixOS features like activation scripts.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
La pureté du système permet de centraliser la configuration, sans avoir à modifier plusieurs fichiers. Cette configuration peut être distribuée ou soumise à un contrôle de version, selon les besoins. Elle garantit également le déterminisme : si vous fournissez les mêmes données d'entrée, la même version de Nixpkgs et le même fichier <code>/etc/nixos/configuration.nix</code>, vous obtiendrez exactement le même état du système.
The system purity makes it possible to keep system configuration in a central place, without the need to edit multiple files. This configuration can be distributed or version controlled as desired. It also provides for determinism; if you provide the same inputs, the same version of Nixpkgs and the same <code>/etc/nixos/configuration.nix</code> you will get the exact same system state.
</div>


=== Modules ===
=== Modules ===
Line 217: Line 202:
== Voir également ==
== Voir également ==


<div lang="en" dir="ltr" class="mw-content-ltr">
* [[Special:MyLanguage/NixOS modules|NixOS modules]], a library for modular [[Special:MyLanguage/Overview of the Nix Expression Language#Expressions|Nix expressions]] which powers [[#declarative-configuration|the declarative configuration of NixOS]].
* [[Special:MyLanguage/NixOS modules|NixOS modules]], a library for modular [[Special:MyLanguage/Overview of the Nix Expression Language#Expressions|Nix expressions]] which powers [[#declarative-configuration|the declarative configuration of NixOS]].
* [[Special:MyLanguage/NixOS VM tests|NixOS VM tests]], a library for creating reproducible infrastructure tests, based on [[Special:MyLanguage/Nixpkgs|Nixpkgs]], [[Special:MyLanguage/NixOS|NixOS]], QEMU and Perl.
* [[Special:MyLanguage/NixOS VM tests|NixOS VM tests]], a library for creating reproducible infrastructure tests, based on [[Special:MyLanguage/Nixpkgs|Nixpkgs]], [[Special:MyLanguage/NixOS|NixOS]], QEMU and Perl.
* [https://github.com/ryan4yin/nixos-and-flakes-book NixOS & Flakes Book] (Ryan4yin, 2023) - 🛠️ ❤️ An unofficial NixOS & Flakes book for beginners.
* [https://github.com/ryan4yin/nixos-and-flakes-book NixOS & Flakes Book] (Ryan4yin, 2023) - 🛠️ ❤️ An unofficial NixOS & Flakes book for beginners.  
</div>


[[Category:Pedias]]
[[Category:Pedias]]
[[Category:NixOS]]
[[Category:NixOS]]
[[Category:Nix{{#translation:}}]]
[[Category:Nix{{#translation:}}]]