GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec le gestionnaire de paquets Nix

Ce didacticiel explique comment effectuer des opérations de gestion de packages telles que l'installation, la suppression, la mise à jour et la mise à niveau de packages à l'aide du gestionnaire de packages Nix. Si vous n'avez pas encore installé le gestionnaire de packages Nix, reportez-vous à notre guide précédent "Nix - Un gestionnaire de packages puissant pour Linux et Unix" . Comme vous le savez peut-être déjà, vous n'avez pas besoin d'être un utilisateur root ou sudo pour effectuer toutes les opérations de gestion de paquets à l'aide de Nix.

Démarrer avec le gestionnaire de packages Nix

Nix a de nombreuses commandes. La commande principale pour la gestion des packages est nix-env . Cette commande est utilisée pour répertorier, installer, mettre à jour, restaurer, supprimer, interroger des packages. Voyons quelques commandes avec des exemples.

Mettre à jour les chaînes Nix

Un canal Nix est juste une URL qui pointe vers un endroit qui contient un ensemble d'expressions Nix et un manifeste. Par défaut, Nixpkgs chaîne est automatiquement ajoutée à votre liste de chaînes "abonnées" lorsque vous installez Nix.

Pour rester à jour avec le canal Nix, exécutez la commande suivante :

$ nix-channel --update

Exemple de résultat :

downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’...
downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s]
unpacking channels...

Vous pouvez également ajouter manuellement une chaîne à votre système comme indiqué ci-dessous.

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

Après avoir souscrit (ajouté) un canal, n'oubliez pas de mettre à jour le canal pour obtenir les dernières expressions Nix disponibles à l'aide de la commande :

$ nix-channel --update

Pour supprimer une chaîne, exécutez simplement :

$ nix-channel --remove nixpkgs

Rechercher/interroger les packages disponibles

Pour afficher la liste des packages disponibles dans la chaîne abonnée, exécutez :

$ nix-env -qa

Un exemple de sortie de la commande ci-dessus serait :

2048-in-terminal-2015-01-15
2bwm-0.2
389-ds-base-1.3.5.15
3dpong-0.5
4store-1.1.6
8086tiny-1.25
90secondportraits-1.01b
915resolution-0.5.3
9pfs
a2jmidid-8
a2ps-4.14
a52dec-0.7.4p4
aacgain-1.9.0
aacskeys-0.4.0e
aalib-1.4rc5
abc-verifier-20160818
abcde-2.7.2
abcl-1.4.0

[...]

Ici, "-q" indique l'opération de requête. "-a" indique tous les packages disponibles (c'est-à-dire installables).

Vous pouvez interroger un package particulier, comme indiqué ci-dessous.

$ nix-env -qa chromium

Sortie :

chromium-58.0.3029.110

Vous pouvez également utiliser la commande suivante pour rechercher un package particulier.

$ nix-env -qaP | grep python3-3

Exemple de résultat :

nixpkgs.python33 python3-3.3.6
nixpkgs.python33Full python3-3.3.6
nixpkgs.python34 python3-3.4.6
nixpkgs.python34Full python3-3.4.6
nixpkgs.python35 python3-3.5.3
nixpkgs.python35Full python3-3.5.3
nixpkgs.python3Full python3-3.6.1
nixpkgs.python36Full python3-3.6.1
nixpkgs.python3 python3-3.6.1

Pour lister tous les packages installés, exécutez simplement :

$ nix-env -q

Il est également possible de voir l'état du package disponible. Regardez l'exemple ci-dessous.

$ nix-env -qas gcc

Exemple de résultat :

IPS gcc-5.4.0

Ici, "I" indique que le package spécifié est installé, "P" indique que le package est présent sur notre système et "S" indique s'il existe un soi-disant substitut pour le colis.

Vous pouvez interroger/lister les packages à l'aide d'expressions régulières. Voici quelques exemples d'expressions régulières.

chrome

Correspond au nom du package chromium et à toute version.

chrome-58.0

Correspond au nom du package chromium et à la version 58.0.

Exemple :

$ nix-env -qa chromium-58.0

gtk\\+

Correspond au nom du package gtk+ . Le caractère + doit être échappé à l'aide d'une barre oblique inverse pour éviter qu'il ne soit interprété comme un quantificateur, et la barre oblique inverse doit être échappée à son tour avec une autre barre oblique inverse pour s'assurer que le shell le transmet.

.\*

Correspond à n'importe quel nom de package. C'est la valeur par défaut pour la plupart des commandes.

'.*zip.*'

Correspond à tout nom de package contenant la chaîne zip . Notez les points :'*zip*' ne fonctionne pas, car dans une expression régulière, le caractère * est interprété comme un quantificateur.

'.*(firefox|chrome).*'

Correspond à tout nom de package contenant les chaînes firefox ou chrome .

Installer des packages

Comme je l'ai mentionné dans le tutoriel précédent, tous les packages seront stockés dans Nix Store , généralement le répertoire /nix/store .

Pour installer un package, exécutez simplement :

$ nix-env --install gcc

Ou,

$ nix-env -i gcc

La commande ci-dessus installera le dernier package gcc disponible.

Un exemple de sortie de la commande ci-dessus serait :

installing ‘gcc-5.4.0’
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds...
these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked):
 /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin
 /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0
 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11
 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25
 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man
 /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10
 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev
 /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib
 /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info
fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’...

[...]

fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...

*** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...
 % Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k

building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’
created 78 symlinks in user environment

Vérifions si gcc est installé ou non en utilisant la commande :

$ gcc -v

Exemple de résultat :

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: 
Thread model: posix
gcc version 5.4.0 (GCC)

Comme vous l'avez remarqué dans la sortie ci-dessus, le gcc se trouvait dans un sous-répertoire nommé "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" sous /nix/store . Ici, nous appelons dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 comme identifiant unique. Ce sous-répertoire contient toutes les dépendances et bibliothèques requises du paquet gcc.

Tester les packages sans les installer

Une autre caractéristique notable du gestionnaire de packages Nix est que vous pouvez tester un package sans l'installer sur votre système. Reportez-vous au guide suivant pour savoir comment tester un package sans l'installer.

  • Comment tester un package sans l'installer sous Linux

Mettre à jour les packages

Pour mettre à niveau un package vers la prochaine version disponible, exécutez simplement :

$ nix-env --upgrade vim

Ou simplement :

$ nix-env -u vim

La commande ci-dessus ne mettra à jour que vim package s'il existe une version "plus récente".

Vous pouvez également mettre à niveau tous les packages installés en une seule fois en exécutant la commande suivante :

$ nix-env -u

Rouler les packages

Vous avez installé un package, mais il n'est pas utile ou ne fonctionne pas correctement. Vous avez besoin de la version inférieure du même package. Que vas-tu faire? Simple. Revenez simplement à la version de travail précédente à l'aide de la commande suivante :

$ nix-env --rollback

Désinstaller des packages

Pour désinstaller un package, exécutez :

$ nix-env -e gcc

La commande ci-dessus désinstallera le package appelé gcc de votre système.

Vous pouvez supprimer plusieurs packages comme indiqué ci-dessous.

$ nix-env -e gcc vim

Exemple de résultat :

uninstalling ‘vim-8.0.0442’
uninstalling ‘gcc-5.4.0’
building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’
created 6 symlinks in user environment

Suppression des packages inutilisés

Lorsqu'un paquet est désinstallé, il n'est pas supprimé de Nix Store (c'est-à-dire le répertoire /nix/store/). Seuls, les liens symboliques seront supprimés de votre profil.

Pour réellement supprimer les packages désinstallés, exécutez :

$ nix-collect-garbage -d

Exemple de résultat :

finding garbage collector roots...
deleting garbage...
deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’
deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’
deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’

[...]

deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’
deleting ‘/nix/store/trash’
deleting unused links...
note: currently hard linking saves -0.00 MiB
1447 store paths deleted, 12.65 MiB freed

Vous devez exécuter cette commande périodiquement pour vous débarrasser des packages inutilisés de votre système.

Et, c'est tout pour le moment. J'espère que vous avez une idée de l'utilisation de base du gestionnaire de paquets Nix. Ce que je viens de couvrir ici est suffisant pour démarrer avec le gestionnaire de packages Nix. Bien sûr, il existe de nombreuses commandes. Pour en savoir plus sur les commandes Nix, reportez-vous au manuel officiel Nix fourni à la fin de ce guide.

Si vous trouvez ce guide utile, partagez-le sur vos réseaux sociaux et professionnels et soutenez OSTechNix. Plus de bonnes choses à venir. Restez à l'écoute !

Santé !


Linux
  1. Premiers pas avec Zsh

  2. Démarrer avec le Gestionnaire de fichiers Plesk

  3. Démarrer avec ls

  4. Premiers pas avec Samba pour l'interopérabilité

  5. Premiers pas avec PostgreSQL sous Linux

Premiers pas avec GIT sous Linux

Premiers pas avec le système d'exploitation Linux

Premiers pas avec GitHub

Premiers pas avec systemctl

Premiers pas avec les exemples de commandes Alpine Linux Apk

Premiers pas avec la commande Tar