Nix (package manager)/fr: Difference between revisions
Created page with "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'arborescenc..." Tags: Mobile edit Mobile web edit |
Created page with "==== Nettoyage du Nix store ====" |
||
| Line 33: | Line 33: | ||
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 ». | 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 ». | ||
< | <span id="Cleaning_the_Nix_store"></span> | ||
==== | ==== Nettoyage du Nix store ==== | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Revision as of 12:02, 13 May 2026
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[1]qui prennent des dépendances en arguments et produisent une « 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) 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 l'enfer des dépendances.
Utilisation
Installation
Sous NixOS, Nix est installé automatiquement.
Sur d'autres distributions Linux ou sur macOS, vous pouvez installer Nix en suivant la section d'installation du manuel de Nix.
Commandes Nix
Les commandes Nix sont décrites dans le 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.
Configuration
Sous NixOS, Nix peut être configuré à l'aide de l'option nix.
Nix en mode autonome se configure via le fichier nix.conf (qui se trouve généralement dans /etc/nix/). Vous trouverez plus de détails sur les options disponibles dans le manuel de référence de Nix.
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 System Manager sous Linux et nix-darwin sous macOS.
En interne
Nix store
Les paquets compilés par Nix sont placés dans le « Nix store » en lecture seule, qui se trouve généralement dans /nix/store. 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 /nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1. 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 ».
Nettoyage du Nix store
For information relating to cleaning the Nix store, refer to NixOS Manual: Chapter - Cleaning the Nix Store.
Nix store corruption
For information relating to fixing a corrupted Nix store, refer to NixOS Manual: Chapter - Nix Store Corruption.
Valid Nix store names
- Main article: Valid Nix store path names
Profiles
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 /nix/var/nix/profiles, which are in turn symlinked to the user's ~/.nix-profile.
Sandboxing
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 fetch* 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).
Sandboxing is enabled by default on Linux, and disabled by default on macOS.
In pull requests for Nixpkgs people are asked to test builds with sandboxing enabled (see Tested using sandboxing in the pull request template) because in official Hydra builds sandboxing is also used.
To configure Nix for sandboxing, set sandbox = true in /etc/nix/nix.conf; to configure NixOS for sandboxing set nix.useSandbox = true; in configuration.nix. The nix.useSandbox option is true by default since NixOS 17.09.
Alternative Interpreters
There is an ongoing effort to reimplement Nix, from the ground up, in Rust.
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.
Earlier attempts can be found on riir-nix
Notes
- ↑ 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.
