Passa al contenuto

Nix

Il gestore di pacchetti Nix è uno strumento avanzato, destinato a utenti avanzati, che può essere utilizzato per ottenere virtualmente qualsiasi pacchetto software libero presente nel suo vasto repository mantenuto dalla comunità.

Può essere installato su KDE Linux in un sistema a un singolo utente. Nix memorizza software e dipendenze in /nix/store, e mantiene automaticamente aggiornato il tuo percorso di ricerca quando vengono aggiunti o rimossi strumenti.

Installazione

Il gestore dei pacchetti Nix può essere installato per l'utente corrente in questo modo:

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

Esci e rientra, quindi prova:

nix-shell -p mc emacs-nox  # ora sei dentro una shell con mc ed emacs

Nota che quando esci da questa shell, mc e emacs non si trovano più nel percorso di ricerca della tua shell. Vedi il paragrafo successivo come rendere disponibili in modo permanente quegli strumenti.

Per altri dettagli, consulta https://nixos.org/download/#nix-install-linux.

Installazione di pacchetti persistenti

Usa nix-env -iA o nix-env --install --attr per installare i pacchetti in /nix/store renderli disponibili nel tuo percorso di ricerca utente:

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

Ciò crea un nuovo “ambiente” che contiene tutte le modifiche di stato necessarie per rendere disponibile il pacchetto mc, e queste possono essere applicate sia in avanti, sia all'indietro. Questo è il ''vero'' fascino del sistema di gestione di pacchetti Nix, ma va oltre lo scopo di questa guida.

Verifica che il comando mc sia ora disponibile per il tuo utente:

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

Rimuovi i pacchetti con nix-env --uninstall o nix-env -e:

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

Per sapere come recuperare lo spazio usato dai pacchetti che non stai più utilizzando, vedi il paragrafo sotto relativo alla pulizia del disco.

Per altri dettagli, consulta https://nix.dev/manual/nix/latest/command-ref/nix-env.html.

Uso di nix profile

L'interfaccia di nix <command> è ancora tecnicamente considerata sperimentale (maggiore contestualizzazione dello stato “sperimentale” di nix profile si trova in questo RFC), ma in pratica è utilizzata in modo esteso ed è più ergonomica. Il completamento con tabulazione e le opzioni --help per i vari comandi nix secondari funzionano pure senza problemi in una nuova installazione. Come nix-env, nix profile installerà i pacchetti in /nix/store e li renderà disponibili nel tuo percorso di ricerca, in modo persistente tra le sessioni di login.

Ecco un esempio banale che utilizza nix profile per installare lo strumenti di ricerca codice 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)
  Strumento di ricerca codice simile ad ack, ma più veloce

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

Per visualizzare l'elenco dei pacchetti installati o rimuoverli:

$ 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

Per sapere come recuperare lo spazio usato dai pacchetti che non stai più utilizzando, vedi il paragrafo sotto relativo alla pulizia del disco.

Per altri dettagli, vedi https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html.

Reinstallare Nix

Se hai abilitato la funzionalità nix profile “sperimentale”, dovrai disabilitarla ed eliminare i file di stato associati al profilo del tuo utente prima di reinstallare, in caso contrario otterrai un messaggio tipo questo:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Attenzione: in questo modo verranno eliminati tutti i pacchetti installati in precedenza!

Commenta la riga experimental-features nel tuo file di configurazione Nix, quindi elimina la cartella dello stato del profilo:

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

Ora puoi ripetere i passaggi di installazione.

Pulizia del disco per guadagnare spazio su disco

Nota che nix-env -e e nix profile remove rimuovono i comandi forniti da un pacchetto dall'ambiente corrente del tuo utente, ma il software resta installato in /nix/store fino a che non esegui una pulizia del disco.

Puoi forzare questa pulizia, in modo da guadagnare spazio sul disco, con uno dei comandi seguenti:

nix-store --gc           # routine di pulizia disco
nix-collect-garbage -d   # rimuove i pacchetti "non raggiungibili" dall'archiviazione

Rimuovere Nix

Per rimuovere il gestore di pacchetti Nix, esegui i comandi:

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

Vedi anche


Articolo scritto da Ernstki sotto licenza CC-BY-4.0.