Nix (gestionnaire de paquets)

Un article de Wikipédia, l'encyclopédie libre.
Nix

Informations
Développé par Eelco Dolstra (d)Voir et modifier les données sur Wikidata
Première version [1]Voir et modifier les données sur Wikidata
Dernière version 2.12.0 ()[2]Voir et modifier les données sur Wikidata
Dépôt github.com/NixOS/nixVoir et modifier les données sur Wikidata
Écrit en C++ et PerlVoir et modifier les données sur Wikidata
Système d'exploitation Linux et DarwinVoir et modifier les données sur Wikidata
Type Gestionnaire de paquets purement fonctionnel (d)
Langage de programmationVoir et modifier les données sur Wikidata
Licence Licence publique générale limitée GNU version 2.1Voir et modifier les données sur Wikidata
Documentation nix.devVoir et modifier les données sur Wikidata
Site web nixos.orgVoir et modifier les données sur Wikidata

Nix est un gestionnaire de paquets multiplateforme qui utilise un modèle de déploiement dans lequel le logiciel est installé dans des répertoires uniques générés via des fonctions de hachages cryptographiques. C'est aussi le nom du langage de programmation de l'outil. Le hachage d'un paquet prend en compte les dépendances, ce qui est censé éliminer l'enfer des dépendances[3], comme alternative à la solution typique consistant à installer plusieurs versions de dépendances en même temps. Ce modèle de gestion de paquets annonce des paquets plus fiables, reproductibles et portables[4].

Les paquets Nix sont définis via un langage de programmation fonctionnel paresseux spécialement conçu pour la gestion des paquets. Les dépendances sont suivies directement dans ce langage via un format intermédiaire appelé « dérivations ». Un environnement Nix garde automatiquement une trace des références, ce qui permet aux paquets inutilisés d'être récupérés lorsqu'aucun autre n'en dépend. Au prix de besoins de stockage plus importants, toutes les mises à niveau de Nix sont garanties à la fois atomiques et capables d'une restauration efficace. Cela permet également à plusieurs utilisateurs d'installer des logiciels en toute sécurité sur le même système sans privilèges d'administrateur.

Nix prend entièrement en charge Linux et macOS et peut être installé en toute sécurité côte à côte avec un gestionnaire de paquets existant.

Nix est utilisé pour l'empaquetage et la distribution de logiciels dans l'expérience LHCb du CERN[5].

NixOS[modifier | modifier le code]

NixOS [6] est une distribution Linux utilisant Nix pour gérer les logiciels du système, y compris le noyau Linux[7].

Nixpkgs[modifier | modifier le code]

Nixpkgs est le référentiel de paquets construit sur le gestionnaire de paquets Nix. Selon Repology, en mars 2023, il contient plus de 80 000 paquets [8] et en possède un nombre à jour plus élevé que tout autre référentiel de paquets[9]. Les architectures prises en charge par Nixpkgs sont x86_64-linux, aarch64-linux, x86_64-darwin et aarch64-darwin. Les paquets pour ces architectures sont régulièrement construits, à l'aide d'un service d'intégration continue appelé Hydra[10], et les résultats de ces builds sont téléchargés dans un cache binaire public[11]. Lorsque Nix installe un paquet, il vérifie son cache et télécharge le paquet à partir de là au lieu de le construire localement.

Nixpkgs est développé dans un seul référentiel git sur GitHub[12]. Outre les paquets, il contient également le code source de NixOS.

Références[modifier | modifier le code]

  1. « https://github.com/NixOS/nix/releases/tag/0.1 »
  2. « https://github.com/NixOS/nix/releases/tag/2.12.0 »
  3. Prins, Suresh et Dolstra, « Nix fixes dependency hell on all Linux distributions », Linux.com, (consulté le )
  4. Eelco Dolstra et Merijn de Jonge « Nix: A Safe and Policy-Free System for Software Deployment » () (lire en ligne, consulté le )
    « (ibid.) », dans LISA '04: Proceedings of the 18th USENIX Conference on System Administration, p. 79–92
  5. Burr, Clemencic et Couturier, « Software packaging and distribution for LHCb using Nix »,
  6. « Nix & NixOS | Reproducible builds and deployments », nixos.org
  7. Eelco Dolstra et Andres Löh « NixOS: A Purely Functional Linux Distribution » () (lire en ligne)
    ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming
  8. « Nixpkgs unstable repository information - Repology »
  9. « Repository statistics - Repology »
  10. « RFC 0046 - Platform Support Tiers », GitHub
  11. « NixOS official binary cache »
  12. « Nixpkgs github repository », GitHub

Voir également[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

  • GNU Guix : un autre gestionnaire de paquets déclaratif, utilisant GNU Guile pour la configuration et la personnalisation.
  • Maak : un utilitaire d'automatisation de build similaire à make, conçu pour construire des systèmes logiciels complexes.
  • Automatisation des runbooks

Liens externes[modifier | modifier le code]