Nix ou la gestion des paquets en question
A1 est mon dealer officiel d’outils et d’articles intéressants, il m’a rappelé l’existence de Nix. J’avais justement mis dans un coin (éloigné) de mon esprit de revenir sur Nix et NixOS. L’article présent n’ayant pas pour but de vous présenter NixOS, je vous invite à consulter cet article sur le sujet.
Je vais uniquement vous parler de son gestionnaire de paquets : Nix. Il a notamment la particularité de pouvoir s’installer sur n’importe quelle distribution facilement (Debian 8 minimum, Ubuntu, Fedora… même si actuellement à mon grand regret ce n’est pas possible sur Raspbian). Commençons par vous mettre le pied à l’étrier pour l’utiliser, après on causera.
Installation et utilisation
Installation
bash <(curl https://nixos.org/nix/install)
Pas de sudo avant, il demande si besoin. Il va créer un dossier nix à la racine donc /nix
nix-channel
nix-channel --list
Même principe qu’un sources.list
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --remove nixpkgs
nix-channel --update
nix-env
nix-env -i ranger ncdu # -i, --install
nix-env -e ranger # -e, --uninstall
nix-env -u ranger # -u, --upgrade package
nix-env -u # Upgrade all packages
nix-env -q # View installed packages
nix-env --rollback
Quelques commandes pour la maintenance
nix-channel --update && nix-env --upgrade
Perso j’utilise alias nn='nix-channel --update && nix-env --upgrade'
. Pour transposer à apt, ça correspondrait à apt update && apt upgrade
nix-env --list-generations # Print a list of all the currently existing generations for the active profile
nix-env --delete-generations old
nix-collect-garbage -d # Deletes all old generations of all profiles is a quick and easy way to clean up your system
C’est la base avec nix --help
et nix search nomdupackage
, la doc ici, deux articles (1, 2) très intéressants sur LinuxFr.org.
Pour être sûr du gestionnaire de packages que vous utilisez, which nomdupackage
. Si ça pointe vers /nix
l’application est gérée par nix. Précisons c’est pour une utilisation mono-utilisateur, pour du multi-user c’est plus compliqué, ça ne fonctionne pas encore pour l’utilisateur root.
Je ne rencontre aucun souci sur les packages suivants : fzf htop keychain ncdu peco ranger ripgrep vagrant zsh. Ça fonctionne pour firefox mais pas virtualbox chromium. Je songe à installer toutes mes applications en passant par Nix, le point négatif étant l’espace consommé.
Mais pour quoi faire ?
Nix permet d’installer des applications sans droit root, l’application est alors uniquement disponible pour l’utilisateur courant.
Cas d’utilisation N°1 : J’ai un conflit de dépendances avec mon gestionnaire de paquets (apt), je ne peux pas installer la dernière version de trucmachin => nix-env -i trucmachin
. On bypasse le gestionnaire de paquets
Cas d’utilisation N°2 : Je veux une version plus récente que le truc qui a 4 ans sur ma Debian 8, nix-env -i ranger ncdu terminator
. On bypasse gestionnaire de paquets et version de la distrib
Cas d’utilisation N°3 : J’ai peur de ce nouveau horrible Firefox 58 (compatibilité des extensions par exemple…), nix-env -i firefox
on teste puis si ça le fait pas nix-env --rollback
. C’est plus secure et plus souple que le gestionnaire de paquets
Vous voyez l’intérêt et le potentiel ? Vous vous dites purée je vais m’éclater sur ma vieille Debian et même sur Ubuntu, à moi les dernières versions sans rien casser (ni ajouter de PPA), en pouvant rollback et en m’emmerdant plus avec des problèmes de dépendances (même plus besoin d’apprendre la syntaxe pour utiliser apt, yum ou dnf). Dieu vous a ouvert les portes du paradis et embrassé sur le front, alléluia !!
Oui mais…
Les utilisateurs se focalisent sur ce qu’ils doivent utiliser et comment (apt par exemple) mais ne s’interrogent pas sur le pourquoi. On allume notre ordinateur pour l’utiliser ou pour galérer à installer des packages et faire leurs mises à jour ?
Avec une distribution des packages dans des écosystèmes différents (ppa pour Ubuntu, pip pour Python, npm pour Node, container pour Docker, etc.), l’utilisateur se retrouve à devoir utiliser, apprendre, comprendre 4 outils au lieu de 1. Je cherche à en utiliser le moins possible idéalement 2, avec Nix j’ai contourné le problème sans le résoudre. Aucun outil n’est parfait, citons nix-env -i chromium
qui ne fonctionne pas notamment.
On ne répond toujours pas au besoin et à la problématique de l’utilisateur de pouvoir installer un paquet récent simplement, sans problème de dépendances, peu importe l’écosystème. Demande déplacée, rêve éveillé, problème insoluble ?
Déjà 3 avis pertinents dans Nix ou la gestion des paquets en question
Les commentaires sont fermés.
J’utiliserais pas, trop peur que ça fasse mal le boulot ou que ça pète tout. C’est cependant réconfortant de voir que je ne suis pas le seul à pointer le problème et chercher une approche/solution pour le résoudre. Je me suis senti bien seul sur cet article lol.
Tcho !
Tcho !