[LINUX] Comment utiliser Nix Package Manager

Nix est bon

J'utilise Windows (fourni par l'entreprise) pour le travail, MacBook Pro (donné par un ami) pour un usage quotidien et Manjaro Linux (donné par un responsable de l'entreprise) pour l'expérimentation, qui sont tous des gestionnaires de paquets. J'utilise nix. (Cependant, Windows utilise Nix dans Ubuntu sur WSL2)

La raison pour laquelle j'utilise Nix au lieu d'utiliser tranquillement apt et homebrew est

  1. Environnement facile à reproduire car l'environnement peut être géré de manière déclarative
  2. Hautement personnalisable
  3. Pas besoin de docker
  4. Aucune poussière ne reste dans des endroits inattendus lors de la désinstallation
  5. L'environnement peut être restauré à tout moment

J'en suis content.

Je veux que Nix devienne plus populaire, je vais donc vous montrer comment installer Nix Package Manager et comment utiliser les commandes de base.

Installer Nix

Linux

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

Une mise en garde est qu'il ne peut pas être utilisé avec une coquille de poisson.

macOS

$ sh <(curl -L https://nixos.org/nix/install) --darwin-use-unencrypted-nix-store-volume

Ajout à .bashrc

Dans ~ / .bashrc pour définir les variables d'environnement nécessaires pour utiliser nix sur Linux et Mac

if [ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]; then
    . $HOME/.nix-profile/etc/profile.d/nix.sh;
fi

Ajoutons.

Enregistrement de la chaîne

Tout d'abord, vous devez vous abonner à la chaîne de paquets Nix pour l'utiliser. Utilisez la commande nix-channel pour faire fonctionner le canal.

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

nix-channel --update est comme sudo apt update.

Gestion des paquets

La commande principale pour la gestion des paquets est nix-env. Vous pouvez utiliser nix-env pour installer, mettre à niveau, supprimer, rechercher des packages, etc.

Chercher

Vous pouvez parcourir tous les paquets installables avec nix-env -qa. La même chose est vraie pour nix-env --query --available.

$ nix-env -qa
aterm-2.2
bash-3.0
binutils-2.15
bison-1.875d
blackdown-1.4.2
bzip2-1.0.2
...

Vous pouvez rechercher un package spécifique en mettant le nom du package après -qa.

$ nix-env -qa firefox
firefox-68.11.0esr
firefox-78.1.0esr
firefox-79.0

Vous pouvez également utiliser des expressions régulières pour la recherche.

$ nix-env -qa 'firefox-.*'

Installation du package

Vous pouvez installer le paquet avec nix-env -i ou nix-env --install.

Au fait, vous n'avez pas besoin de sudo. Les packages installés sont installés par l'utilisateur et non par le système. Il n'y a (probablement) aucun impact sur l'ensemble du système.

$ nix-env -i subversion

Vous pouvez vérifier tous les paquets installés avec nix-env -q.

$ nix-env -q
nix-2.3.7
subversion-1.12.2

améliorer

Vous pouvez mettre à jour votre environnement avec nix-env -u ou nix-env --upgrade.

Lors de la mise à niveau d'un package spécifique,

$ nix-env -u subversion

Lors de la mise à niveau de tous les packages installés

$ nix-env -u

Désinstaller

Vous pouvez désinstaller le paquet avec nix-env -e ou nix-env --erase.

nix-env -e subversion
uninstalling 'subversion-1.12.2'

rollback

Nix crée une génération pour votre environnement chaque fois que vous ajoutez ou supprimez un package. Et vous pouvez revenir à ces générations à tout moment.

Par exemple, il est utile lorsque vous avez installé un package et que vous avez un bogue et que vous souhaitez le restaurer avant l'installation qui a bien fonctionné.

Vérifier les générations nix-env --list-generations

$ nix-env --list-generations
   1   2020-08-03 23:36:12   
   2   2020-08-06 19:15:43   
   3   2020-08-06 19:55:13   
   4   2020-08-09 18:33:59   
   5   2020-08-09 18:34:46   (current)

(current) est l'environnement actuel.

Utilisez nix-env --rollback pour revenir à l'environnement précédent.

$ nix-env --rollback
switching from generation 5 to 4

$ nix-env --list-generations
   1   2020-08-03 23:36:12   
   2   2020-08-06 19:15:43   
   3   2020-08-06 19:55:13   
   4   2020-08-09 18:33:59   (current)
   5   2020-08-09 18:34:46   

Pour passer à une génération spécifique, utilisez nix-env --switch-generation.

$ nix-env --switch-generation 2
switching from generation 4 to 2

Recommended Posts

Comment utiliser Nix Package Manager
Comment utiliser le gestionnaire de contexte de Python
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser pytest_report_header
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser le package de drapeau Golang (connaissances minimales)
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser IPython Notebook
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Aller] Comment utiliser "... (3 périodes)"
Comment faire fonctionner GeoIp2 de Django
[Python] Comment utiliser input ()
Comment utiliser le décorateur
[Introduction] Comment utiliser open3d
Comment utiliser Python lambda
Comment utiliser Jupyter Notebook
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python
Comment utiliser cron (mémo personnel)
Python: comment utiliser async avec
Comment utiliser la fonction zip