Nix (package manager)/fr: Difference between revisions

Nanucq (talk | contribs)
Created page with "Sur d'autres distributions Linux ou sur macOS, vous pouvez installer Nix en suivant la [https://nixos.org/manual/nix/stable/installation/installation section d'installation du manuel de Nix]."
Nanucq (talk | contribs)
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{Navbox Nix}}
{{Navbox Nix}}
{{Disambiguation|message=Cet article traite du gestionnaire de paquets Nix. À ne pas confondre avec l'[[écosystème Nix]], le [[langage Nix]] ou la [[commande Nix]].}}
{{Disambiguation|message=Cet article traite du gestionnaire de paquets Nix. À ne pas confondre avec l'[[Nix ecosystem|écosystème Nix]], le [[Nix (language)|langage Nix]] ou la [[Nix (command)|commande Nix]].}}
Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le [[langage d'expression Nix]], un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures<ref>Les valeurs ne peuvent pas changer pendant le calcul. Les fonctions produisent toujours le même résultat si leur entrée ne change pas. </ref>qui prennent des dépendances en arguments et produisent une « [[Derivations|dérivation]] » spécifiant un environnement de compilation reproductible pour le paquet. Nix stocke les résultats de la compilation à des adresses uniques spécifiées par un hachage de l'arborescence complète des dépendances, créant ainsi un magasin de paquets immuable (également appelé [[#Nix store|nix store]]) qui permet des mises à jour atomiques, des retours en arrière et l'installation simultanée de différentes versions d'un paquet, éliminant ainsi pratiquement [https://en.wikipedia.org/wiki/Dependency_hell l'enfer des dépendances].  
Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le [[Nix Expression Language|langage d'expression Nix]], un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures<ref>Les valeurs ne peuvent pas changer pendant le calcul. Les fonctions produisent toujours le même résultat si leur entrée ne change pas. </ref>qui prennent des dépendances en arguments et produisent une « [[Derivations|dérivation]] » spécifiant un environnement de compilation reproductible pour le paquet. Nix stocke les résultats de la compilation à des adresses uniques spécifiées par un hachage de l'arborescence complète des dépendances, créant ainsi un magasin de paquets immuable (également appelé [[#Nix store|nix store]]) qui permet des mises à jour atomiques, des retours en arrière et l'installation simultanée de différentes versions d'un paquet, éliminant ainsi pratiquement [https://en.wikipedia.org/wiki/Dependency_hell l'enfer des dépendances].  


<span id="Usage"></span>
<span id="Usage"></span>
Line 12: Line 12:
Sur d'autres distributions Linux ou sur macOS, vous pouvez installer Nix en suivant la [https://nixos.org/manual/nix/stable/installation/installation section d'installation du manuel de Nix].
Sur d'autres distributions Linux ou sur macOS, vous pouvez installer Nix en suivant la [https://nixos.org/manual/nix/stable/installation/installation section d'installation du manuel de Nix].


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Nix_commands"></span>
=== Nix commands ===
=== Commandes Nix ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Les [[Nix (command line utilities)|commandes Nix]] sont décrites dans le [https://nixos.org/manual/nix/stable/command-ref/command-ref manuel de référence de Nix] : commandes principales, utilitaires et commandes expérimentales. Avant la version 2.0 (publiée en février 2018), les commandes étaient différentes.
The [[Nix (command line utilities)|Nix commands]] are documented in the [https://nixos.org/manual/nix/stable/command-ref/command-ref Nix reference manual]: main commands, utilities and experimental commands. Prior to version 2.0 (released in February 2018) there have been different commands.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
=== Configuration ===
=== Configuration ===
On NixOS, Nix can be configured using the [https://search.nixos.org/options?query=nix. <code>nix</code> option].
Sous NixOS, Nix peut être configuré à l'aide de l'option [https://search.nixos.org/options?query=nix. <code>nix</code>].  
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Nix en mode autonome se configure via le fichier <code>nix.conf</code> (qui se trouve généralement dans <code>/etc/nix/</code>). Vous trouverez plus de détails sur les options disponibles [https://nixos.org/manual/nix/stable/command-ref/conf-file dans le manuel de référence de Nix].  
Standalone Nix is configured through <code>nix.conf</code> (usually found in <code>/etc/nix/</code>). Details on the available options are [https://nixos.org/manual/nix/stable/command-ref/conf-file found in the Nix reference manual].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Vous pouvez également configurer Nix à l'aide de [[Home Manager]], qui gère les environnements déclaratifs pour un seul utilisateur. Pour une configuration à l'échelle du système, vous pouvez utiliser [https://github.com/numtide/system-manager System Manager] sous Linux et [https://github.com/LnL7/nix-darwin nix-darwin] sous macOS.
You can also configure Nix using [[Home Manager]], which manages declarative environments for a single user. For system-wide configuration, you can use [https://github.com/numtide/system-manager System Manager] on Linux and [https://github.com/LnL7/nix-darwin nix-darwin] on macOS.
</div>


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


<div lang="en" dir="ltr" class="mw-content-ltr">
=== Nix store ===
=== Nix store ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
{{Split|reason=Le Nix store est suffisamment distinct sur le plan conceptuel pour mériter un article à part entière.}}
{{Split|reason=The nix store is conceptually separate enough that it warrants a separate article.}}
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Les paquets compilés par Nix sont placés dans le « Nix store » en lecture seule, qui se trouve généralement dans <code>/nix/store</code>. Chaque paquet se voit attribuer une adresse unique spécifiée par un hachage cryptographique suivi du nom et de la version du paquet, par exemple <code>/nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1</code>. Ces préfixes hachent toutes les entrées du processus de compilation, y compris les fichiers source, l'arborescence complète des dépendances, les options du compilateur, etc. Cela permet à Nix d'installer simultanément différentes versions d'un même paquet, et même différentes compilations d'une même version, par exemple des variantes compilées avec des compilateurs différents. Lors de l'ajout, de la suppression ou de la mise à jour d'un paquet, rien n'est supprimé du store; à la place, des liens symboliques vers ces paquets sont ajoutés, supprimés ou modifiés dans les « profils ».
Packages built by Nix are placed in the read-only ''Nix store'', normally found in <code>/nix/store</code>. Each package is given a unique address specified by a cryptographic hash followed by the package name and version, for example <code>/nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1</code>. These prefixes hash all the inputs to the build process, including the source files, the full dependency tree, compiler flags, etc. This allows Nix to simultaneously install different versions of the same package, and even different builds of the same version, for example variants built with different compilers. When adding, removing or updating a package, nothing is removed from the store; instead, symlinks to these packages are added, removed or changed in ''profiles''.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Cleaning_the_Nix_store"></span>
==== Cleaning the Nix store ====
==== Nettoyage du Nix store ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Pour plus d'informations sur le nettoyage du Nix store, consultez {{NixOS Manual|name=Manuel NixOS : Chapitre - Nettoyage du Nix store|anchor=#sec-nix-gc}}.
For information relating to cleaning the Nix store, refer to {{NixOS Manual|name=NixOS Manual: Chapter - Cleaning the Nix Store|anchor=#sec-nix-gc}}.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Nix_store_corruption"></span>
==== Nix store corruption ====
==== Corruption du Nix store ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Pour plus d'informations sur la réparation d'un Nix store endommagé, consultez {{NixOS Manual|name=Manuel NixOS : Chapitre - Corruption du  Nix store|anchor=#sec-nix-store-corruption}}.
For information relating to fixing a corrupted Nix store, refer to {{NixOS Manual|name=NixOS Manual: Chapter - Nix Store Corruption|anchor=#sec-nix-store-corruption}}.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Valid_Nix_store_names"></span>
==== Valid Nix store names ====
==== Noms valides du Nix store ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
{{main|Valid Nix store path names}}
{{main|Valid Nix store path names}}
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Profiles"></span>
=== Profiles ===
=== Profils ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Afin de construire un environnement utilisateur ou système cohérent, Nix crée des liens symboliques entre les entrées du magasin Nix et des « profils ». Ceux-ci constituent l'interface par laquelle Nix permet les restaurations : le magasin étant immuable et les versions précédentes des profils étant conservées, revenir à un état antérieur revient simplement à modifier le lien symbolique vers un profil antérieur. Pour être plus précis, Nix crée des liens symboliques vers les binaires dans des entrées du magasin Nix représentant les environnements utilisateur. Ces environnements utilisateur sont ensuite liés symboliquement à des profils étiquetés stockés dans <code>/nix/var/nix/profiles</code>, qui sont à leur tour liés symboliquement au répertoire <code>~/.nix-profile</code> de l'utilisateur.
In order to construct a coherent user or system environment, Nix symlinks entries of the Nix store into ''profiles''. These are the front-end by which Nix allows rollbacks: since the store is immutable and previous versions of profiles are kept, reverting to an earlier state is simply a matter of change the symlink to a previous profile. To be more precise, Nix symlinks binaries into entries of the Nix store representing the user environments. These user environments are then symlinked into labeled profiles stored in <code>/nix/var/nix/profiles</code>, which are in turn symlinked to the user's <code>~/.nix-profile</code>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
=== Sandboxing ===
=== Sandboxing ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Lorsque les compilations en bac à sable sont activées, Nix configure un environnement isolé pour chaque processus de compilation. Cela permet d'éliminer les dépendances cachées supplémentaires définies par l'environnement de compilation afin d'améliorer la reproductibilité. Cela inclut l'accès au réseau pendant la compilation en dehors des fonctions <code>fetch*</code> et aux fichiers situés en dehors du Nix store. Selon le système d'exploitation, l'accès à d'autres ressources est également bloqué (par exemple, la communication interprocessus est isolée sous Linux).
When sandbox builds are enabled, Nix will setup an isolated environment for each build process. It is used to remove further hidden dependencies set by the build environment to improve reproducibility. This includes access to the network during the build outside of <code>fetch*</code> functions and files outside the Nix store. Depending on the operating system access to other resources are blocked as well (ex. inter process communication is isolated on Linux).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Le sandboxing est activé par défaut sous Linux, et désactivé par défaut sous macOS.
Sandboxing is enabled by default on Linux, and disabled by default on macOS.
Dans les pull requests pour  Nixpkgs, il est demandé aux contributeurs de tester les builds avec le sandboxing activé (voir <code>Testé avec le sandboxing</code> dans le modèle de pull request) car dans les builds officiels d'Hydra, le sandboxing est également utilisé.
In pull requests for [https://github.com/NixOS/nixpkgs/ Nixpkgs] people are asked to test builds with sandboxing enabled (see <code>Tested using sandboxing</code> in the pull request template) because in [https://nixos.org/hydra/ official Hydra builds] sandboxing is also used.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Pour configurer Nix pour le sandboxing, définissez <code>sandbox = true</code> dans <code>/etc/nix/nix.conf</code> ; pour configurer NixOS pour le sandboxing, définissez <code>nix.useSandbox = true;</code> dans <code>configuration.nix</code>. L'option <code>nix.useSandbox</code> est définie sur <code>true</code> par défaut depuis NixOS 17.09.
To configure Nix for sandboxing, set <code>sandbox = true</code> in <code>/etc/nix/nix.conf</code>; to configure NixOS for sandboxing set <code>nix.useSandbox = true;</code> in <code>configuration.nix</code>. The <code>nix.useSandbox</code> option is <code>true</code> by default since NixOS 17.09.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Alternative_Interpreters"></span>
=== Alternative Interpreters ===
=== Interpréteurs Alternatifs ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Un projet est actuellement en cours pour réécrire Nix de A à Z en Rust.
There is an ongoing effort to reimplement Nix, from the ground up, in Rust.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://cs.tvl.fyi/depot/-/tree/tvix tvix]
* [https://cs.tvl.fyi/depot/-/tree/tvix tvix]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Il existe également une version dérivée de Nix 2.18 développée par la communauté, baptisée Lix, qui met l'accent sur la fiabilité, la facilité d'utilisation et la croissance. Bien qu'elle ait également porté certains composants de Nix vers Rust, il ne s'agit pas d'une réécriture complète comme Tvix.
There is also a community-led fork of Nix 2.18 named Lix, focused on correctness, usability, and growth. While it has also ported some components of Nix to Rust, it is not a ground-up rewrite like Tvix.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://lix.systems/ lix]
* [https://lix.systems/ lix]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Des essais préliminaires peuvent être trouvés sur [https://riir-nix.github.io/ riir-nix]
Earlier attempts can be found on [https://riir-nix.github.io/ riir-nix]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
==Notes==
==Notes==
<references />
<références />
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
[[Category:Pedias]]
[[Category:Pedias]]
[[Category:Nix]]
[[Category:Nix]]
[[Category:Incomplete]]
[[Category:Incomplete]]
[[Category:Software]]
[[Category:Software]]
</div>