Recherche de site Web

Nix - Le gestionnaire de packages purement fonctionnel pour Linux


Nix est un système de gestion de paquets puissant et purement fonctionnel conçu pour une gestion de paquets fiable et reproductible, publié selon les termes de GNU LGPLv2.1. Il s'agit du principal système de gestion de packages de NixOS, une distribution Linux moins connue.

Nix propose des mises à niveau et des restaurations atomiques, plusieurs versions d'installation de packages, une gestion de packages multi-utilisateurs et une configuration sans effort des environnements de construction pour un package, quels que soient les langages et outils de programmation utilisés par un développeur.

Sous Nix, les packages sont construits à partir d'un langage de package fonctionnel appelé « Expressions Nix ». Cette approche fonctionnelle de la gestion des packages garantit que l'installation ou la mise à niveau d'un package ne peut pas interrompre d'autres packages.

Nix prend également en charge plusieurs utilisateurs, ce qui implique que les utilisateurs du système normaux (ou non privilégiés) peuvent installer des packages en toute sécurité et que chaque utilisateur est identifié par un profil (une collection de packages dans le magasin Nix qui apparaissent dans le PATH de l'utilisateur).

Dans le cas où un utilisateur a installé un package, si un autre utilisateur tente d'installer le même package, le package ne sera pas construit ou téléchargé une seconde fois.

Il prend actuellement en charge Linux (i686, x86_64) et Mac OS X (x86_64). Cependant, il est assez portable, vous pouvez l'essayer sur la plupart des plates-formes prenant en charge les threads POSIX et disposant d'un compilateur C++11.

Dans cet article, nous allons montrer comment installer (en mode multi-utilisateur) et utiliser le gestionnaire de packages Nix sous Linux. Nous discuterons de certaines des tâches de base de gestion des packages en relation avec les outils couramment utilisés.

Comment installer le gestionnaire de packages Nix sous Linux

Nous installerons la dernière version de Nix (v2.1.3 au moment de la rédaction) en mode multi-utilisateur. Heureusement, il existe un script d'installation prêt à l'emploi que vous pouvez exécuter à partir de votre shell en tant qu'utilisateur normal à l'aide de la commande curl suivante sur votre système.

sh <(curl https://nixos.org/nix/install) --daemon

L'exécution de la commande ci-dessus téléchargera la dernière archive tar binaire nix et vous atterrirez dans l'écran d'installation multi-utilisateurs nix, comme indiqué dans la capture d'écran.

Pour afficher une liste détaillée de ce qui se passera pendant le processus d'installation, tapez y et appuyez sur Entrée. Si vous êtes satisfait et prêt à continuer, tapez y et appuyez sur Entrée.

Le script appellera la commande sudo plusieurs fois selon les besoins. Vous devez lui permettre d'utiliser sudo en répondant y et en appuyant sur Entrée.

Le programme d'installation exécutera ensuite quelques tests et générera un rapport de configuration Nix, créera des utilisateurs de build entre les ID utilisateur 30001 et 30032, ainsi qu'un groupe avec l'ID de groupe . 30 000. Entrez y pour continuer lorsque vous y êtes invité. Il configurera les groupes de build pour les différents utilisateurs de build et créera la structure de répertoires de base de Nix.

Il modifiera le fichier /etc/bashrc, (et /etc/zshrc pour le zsh) s'ils existent. Notez qu'il sauvegarde d'abord les fichiers mentionnés avec une extension .backup-before-nix et que le programme d'installation crée également le fichier /etc/profile.d/nix.sh.

Le programme d'installation configurera également le service nix-daemon et le service de socket nix-daemon, chargera l'unité systemd pour nix-daemon et démarrera les deux services susmentionnés.

Une fois l'installation terminée, vous devez ouvrir une nouvelle fenêtre de terminal pour commencer à utiliser Nix. Vous pouvez également fermer et rouvrir votre shell pour appliquer les modifications récentes. Ensuite, sourcez le fichier /etc/profile.d/nix.sh (car ce n'est pas un fichier de démarrage du shell, l'ouverture d'un nouveau shell ne le sourcera pas).

source /etc/profile.d/nix.sh

Ensuite, exécutez la commande suivante pour télécharger certains chemins depuis le site Web officiel du projet, nécessaires au fonctionnement de Nix. Une fois que tous les chemins ont été téléchargés et copiés aux emplacements corrects, vous verrez un résumé du type d'installation du système et de nix, comme indiqué dans la capture d'écran.

nix-shell -p nix-info --run "nix-info -m"

Comment utiliser le gestionnaire de packages Nix sous Linux

Sous Nix, la gestion des packages est effectuée par l'utilitaire nix-env. Il est utilisé pour installer, mettre à niveau et supprimer/effacer des packages, ainsi que pour demander quels packages sont installés ou disponibles pour l'installation.

Tous les packages sont situés dans un canal Nix, qui est une URL qui pointe vers un référentiel comprenant à la fois une collection d'expressions Nix et un pointeur vers un cache binaire.

La chaîne par défaut est Nixpkgs et la liste des chaînes auxquelles vous êtes abonné est stockée dans ~/.nix-channels, vous pouvez les lister à l'aide de la commande suivante (aucune sortie signifie aucune chaîne) .

nix-channel --list

Pour ajouter le canal Nix, utilisez la commande suivante.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Avant d'installer des packages, commencez par mettre à jour le canal Nix ; cela revient à exécuter apt update sous le gestionnaire de packages APT.

nix-channel --update

Vous pouvez demander quels packages sont disponibles pour l'installation à l'aide de la commande suivante.

nix-env -qa

Dans cet exemple, nous installerons le serveur Apache Tomcat à l'aide de la commande précédente en conjonction avec grep pour trouver que le package est disponible pour l'installation, comme indiqué.

nix-env -qa | grep "apache-tomcat"

Pour installer un package, utilisez la commande suivante en spécifiant la version du package, par exemple apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Sur le système local, Nix stocke les packages dans le Nix store, qui est par défaut le répertoire /nix/store, où chaque package possède son propre sous-répertoire unique. Par exemple, les packages apache-tomcat sont stockés dans :

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

Dans ce chemin, le caractère aléatoire 95gmgnxlrcpkhlm00fa5ax8kvd6189py est un identifiant unique du package qui prend en compte toutes ses dépendances.

Vous pouvez lister les packages installés avec la commande suivante.

nix-env -q

Pour mettre à niveau le package apache-tomcat, vous pouvez utiliser le commutateur de mise à niveau -u comme indiqué.

nix-env -u apache-tomcat

Si vous souhaitez supprimer/effacer apache-tomcat, utilisez l'indicateur -e. Ici, un package n’est pas immédiatement effacé du système, il est simplement rendu inutilisé. Ceci est utile car vous souhaitez effectuer une restauration, ou cela peut se trouver dans les profils d'autres utilisateurs.

nix-env -e apache-tomcat

Après avoir supprimé un package, vous pouvez effectuer un garbage collection avec l'utilitaire nix-collect-garbage.

nix-collect-garbage

Comment supprimer le gestionnaire de packages Nix sous Linux

Pour désinstaller Nix, supprimez tous les fichiers liés à nix en une seule fois.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Sur les systèmes avec systemd, exécutez les commandes suivantes pour arrêter tous les services liés à nix et les désactiver.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

De plus, vous devez supprimer toutes les références à Nix dans ces fichiers : /etc/profile, /etc/bashrc et /etc/zshrc .

Pour plus d'informations, consultez les pages de manuel des utilitaires ci-dessus que nous avons examinés.

man nix-channel
man nix-env

Vous pouvez trouver la documentation Nix Package Manager sur le site Web du projet : https://nixos.org/nix/.

Résumé

Nix est un gestionnaire de paquets purement fonctionnel conçu pour une gestion fiable et reproductible des paquets. Il fournit un concept intéressant de gestion de paquets, très distinct des outils couramment utilisés sous Linux tels que YUM, APT et bien d'autres.

Dans cet article, nous avons montré comment installer nix en mode multi-utilisateur et expliqué comment gérer les packages avec Nix. Partagez vos réflexions avec nous ou posez vos questions via le formulaire de commentaires ci-dessous. Enfin, dans un prochain article, nous expliquerons davantage de commandes de gestion de packages Nix. D’ici là, restez connecté.