Salta al contingut

Nix

El gestor de paquets Nix és una eina avançada per a usuaris experimentats que es pot utilitzar per a obtenir pràcticament qualsevol paquet de programari lliure que pugueu imaginar des del seu repositori gros i mantingut per la comunitat.

Es pot instal·lar a KDE Linux per a un sistema d'usuari individual. El Nix emmagatzema el programari i les dependències a /nix/store, i manté el camí de cerca actualitzat automàticament a mesura que s'afegeixen o s'eliminen les eines.

Instal·lació

El gestor de paquets Nix es pot instal·lar per a l'usuari actual així:

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon

Tanqueu la sessió i torneu a entrar, i després proveu:

nix-shell -p mc emacs-nox  # ara esteu dins un intèrpret d'ordres amb mc i emacs

Tingueu en compte que quan sortiu d'aquest intèrpret d'ordres, mc i emacs ja no són al camí de cerca de l'intèrpret d'ordres. Vegeu la secció següent per a fer que aquestes eines estiguin disponibles de manera persistent.

Vegeu https://nixos.org/download/#nix-install-linux per a més detalls.

Instal·lació persistent de paquets

Utilitzeu nix-env -iA o nix-env --install --attr per a instal·lar paquets a /nix/store i fer-los disponibles al camí de cerca del vostre usuari:

$ nix-env -f '' -iA mc
⋮
building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...

Això crea un «entorn» nou que conté tots els canvis d'estat necessaris per a fer que el paquet mc estigui disponible, i aquests es poden fer avançar o tirar enrere. Aquest és l'atractiu «real» del sistema de gestió de paquets Nix, però queda més enllà de l'àmbit d'aquesta guia.

Verifiqueu que l'ordre mc ja està disponible per a l'usuari:

$ which mc
/home/username/.nix-profile/bin/mc

Elimineu els paquets amb nix-env --uninstall o nix-env -e:

$ nix-env -e mc
uninstalling 'mc-4.8.33'
building '/nix/store/rqbghiyds6f7a49qiwi9gmq7bnkgn9qi-user-environment.drv'...

Vegeu la secció sobre la [[#garbage-collection|recollida de brossa]] a continuació per veure com recuperar l'espai utilitzat pels paquets que ja no esteu utilitzant.

Vegeu https://nix.dev/manual/nix/latest/command-ref/nix-env.html per a més detalls.

Utilitzant un perfil de nix

La interfície nix <command> encara es considera tècnicament experimental (es pot trobar més context sobre l'estat «experimental» del perfil nix) en aquest RFC), però a la pràctica és àmpliament utilitzat i més ergonòmic. La compleció de pestanyes i les opcions --help per a les diverses subordres nix també funcionaran directament en una instal·lació nova. Igual que nix-env, nix profile instal·larà paquets a /nix/store i els farà disponibles al vostre camí de cerca, persistent entre sessions d'inici de sessió.

Heus aquí un exemple trivial que utilitza nix profile per a instal·lar l'eina de cerca de codi ag:

$ mkdir -p ~/.config/nix
$ cat >> ~/.config/nix/nix.conf <<EOF
experimental-features = nix-command flakes
EOF

$ nix search nixpkgs silver searcher
⋮
* legacyPackages.x86_64-linux.silver-searcher (2.2.0)
  Eina de cerca de codi similar a ack, però més ràpida

$ nix profile add nixpkgs#silver-searcher
$ which ag
/home/username/.nix-profile/bin/ag

Per a llistar els paquets instal·lats o eliminar-los:

$ nix profile list
⋮
Name:               silver-searcher
Flake attribute:    legacyPackages.x86_64-linux.silver-searcher
Original flake URL: flake:nixpkgs
Locked flake URL:   github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D
Store paths:        /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0

$ nix profile remove silver-searcher

Vegeu la secció sobre la recollida de brossa a continuació sobre com recuperar l'espai utilitzat pels paquets que ja no esteu utilitzant.

Vegeu https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html per a més detalls.

Reinstal·lació del Nix

Si heu activat la funció «experimental» nix profile, haureu de desactivar-la i suprimir els fitxers d'estat associats amb el perfil del vostre usuari abans de tornar a instal·lar-la, en cas contrari obtindreu un missatge d'error com aquest:

error: el perfil '/home/username/.local/state/nix/profiles/profile' és incompatible amb 'nix-env'; feu servir 'nix profile' en el seu lloc
Avís: s'oblidarà de qualsevol paquet instal·lat prèviament!

Comenteu la línia experimental-features al fitxer de configuració del Nix i suprimiu el directori d'estat del perfil:

$ sed -i'' 's/^experimental-features = nix-command flakes$/#&/' ~/.config/nix/nix.conf
$ rm -rf ~/.local/state/nix/profiles/profile

Ara podeu repetir els passos d'instal·lació.

Recollida de brossa per a recuperar espai de disc

Tingueu en compte que nix-env -e i nix profile remove ambdós suprimeixen les ordres proporcionades per un paquet des de l'entorn actual del vostre usuari, però el programari en realitat roman instal·lat a /nix/store fins que es reculli la brossa.

Podeu forçar aquesta recollida de brossa per a recuperar espai en disc amb una de les ordres següents:

nix-store --gc           # recollida rutinària de brossa
nix-collect-garbage -d   # elimina paquets «no accessibles» de la botiga

Suprimir el Nix

Per a eliminar el gestor de paquets Nix, executeu les ordres següents:

sudo systemctl disable --now nix-daemon.service nix-daemon.socket

sudo rm -rf /nix /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix /root/.nix-channels /root/.nix-defexpr /root/.nix-profile /root/.cache/nix ~/.nix-channels ~/.nix-defexpr ~/.nix-profile ~/.cache/nix

for i in $(seq 1 32); do sudo userdel nixbld$i; done

sudo groupdel nixbld

Vegeu també


Article escrit per Ernstki d'acord amb la llicència CC-BY-4.0.