Spring naar inhoud

Nix

De Nix-pakketbeheerder is een geavanceerd hulpmiddel voor gevorderde gebruikers waarmee vrijwel elk denkbaar gratis softwarepakket kan worden verkregen uit de grote, door de gemeenschap onderhouden opslagruimte.

Het kan worden geïnstalleerd op KDE Linux voor een systeem met één gebruiker. Nix slaat software en afhankelijkheden op onder /nix/store en houdt uw zoekpad automatisch bijgewerkt wanneer tools worden toegevoegd of verwijderd.

Installatie

De Nix-pakketbeheerder kan als volgt voor de huidige gebruiker worden geïnstalleerd:

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

Meld u af en weer aan en test het vervolgens:

nix-shell -p mc emacs-nox  # u bent nu in een shell met mc en emacs

Houd er rekening mee dat wanneer u deze shell afsluit, mc en emacs niet langer in het zoekpad van uw shell staan. Zie de volgende sectie om deze hulpmiddelen permanent beschikbaar te maken.

Zie https://nixos.org/download/#nix-install-linux voor verdere details.

Blijvende pakketinstallaties

Gebruik nix-env -iA of nix-env --install --attr om pakketten te installeren in /nix/store en ze beschikbaar te maken in het zoekpad van uw gebruiker:

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

Dit creëert een nieuwe "omgeving" die alle statuswijzigingen bevat die nodig zijn om het mc-pakket beschikbaar te maken, en deze kunnen vooruit of achteruit worden gerold. Dit is de "echte" aantrekkingskracht van het Nix-pakketbeheersysteem, maar valt buiten het bestek van deze handleiding.

Controleer of de opdracht mc nu beschikbaar is voor uw gebruiker:

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

Verwijder pakketten met nix-env --uninstall of nix-env -e:

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

Zie het gedeelte over [[#garbage-collection|garbage collection]] hieronder voor meer informatie over hoe u ruimte kunt vrijmaken die wordt gebruikt door pakketten die u niet langer gebruikt.

Zie https://nix.dev/manual/nix/latest/command-ref/nix-env.html voor verdere details.

Gebruikmakend van een nix-profiel

De nix <command> interface wordt technisch gezien nog steeds als experimenteel beschouwd (meer context over de “experimentele” status van het nix-profiel is te vinden in deze RFC), maar in de praktijk wordt deze veel gebruikt en is hij ergonomischer. Tab-aanvulling en de --help opties voor de verschillende nix subcommando's werken ook direct na een nieuwe installatie. Net als nix-env zal nix-profiel pakketten installeren in /nix/store en ze beschikbaar maken in uw zoekpad, waarbij ze behouden blijven tussen inlogsessies.

Hier is een eenvoudig voorbeeld van het gebruik van een nix-profiel om het codezoekhulpmiddel te installeren 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)
  Codezoekhulpmiddel gelijk aan ack, maar sneller

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

Om de geïnstalleerde pakketten te tonen of ze te verwijderen:

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

$ nix profile remove silver-searcher

Zie het gedeelte over garbage collection hieronder voor meer informatie over hoe u ruimte kunt vrijmaken die wordt gebruikt door pakketten die u niet langer gebruikt.

Zie https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html voor verdere details.

Nix opnieuw installeren

Als u de functie 'experimenteel' nix-profiel hebt ingeschakeld, moet u deze uitschakelen en de statusbestanden verwijderen die aan uw gebruikersprofiel zijn gekoppeld voordat u opnieuw installeert. Anders krijgt u een foutmelding zoals deze:

fout: profile '/home/username/.local/state/nix/profiles/profile' is incompatibel met 'nix-env'; gebruik 'nix profile' in plaats daarvan
Waarschuwing: dit zal elke eerder geïnstalleerde pakketten vergeten!

Maak de regel <code>experimental-features</code> in uw Nix-configuratiebestand commentaar en verwijder vervolgens de map met de profielstatus:

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

Nu kunt u de installatiestappen herhalen.

Afvalverzameling om schijfruimte vrij te maken

Merk op dat nix-env -e en nix profile remove beide opdrachten van een pakket uit de huidige omgeving van de gebruiker verwijderen, maar de software blijft feitelijk geïnstalleerd in /nix/store totdat deze door de afvalverzamelaar wordt verwijderd.

U kunt de afvalverzameling forceren om schijfruimte vrij te maken met een van de volgende commando's:

nix-store --gc           # routine voor afval verzamelen
nix-collect-garbage -d   # verwijder "unreachable" pakketten uit de opslag

Nix verwijderen

Om de Nix pakketbeheerder te verwijderen, voer de volgende commando's uit:

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

Zie ook


Artikel bijgedragen door Ernstki onder de licentie CC-BY-4.0.