Gå till innehåll

Nix

Pakethanteraren Nix är ett avancerat verktyg för avancerade användare som kan användas för att hämta praktiskt taget alla tänkbara fria programvarupaket från dess stora, gemenskapsdrivna arkiv.

Den kan installeras på KDE Linux för ett system med en användare. Nix lagrar programvara och beroenden under /nix/store och håller sökvägen uppdaterad automatiskt när verktyg läggs till eller tas bort.

Installation

Pakethanteraren Nix kan installeras för aktuell användare så här:

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

Logga ut och tillbaka in igen, prova sedan:

nix-shell -p mc emacs-nox  # du är nu inne i ett skal med mc och emacs

Observera att när skalet avslutas finns mc och emacs inte längre i skalets sökväg. Se nästa avsnitt för att göra sådana verktyg permanent tillgängliga.

Se https://nixos.org/download/#nix-install-linux för ytterligare information.

Permanenta paketinstallationer

Använd nix-env -iA eller nix-env --install --attr för att installera paket i /nix/store och gör dem tillgängliga i användares sökväg:

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

Det skapar en ny "miljö" som innehåller alla ändringar av tillståndet som krävs för att göra paketet mc tillgängligt, och de kan rullas framåt eller bakåt. Det är den "verkliga" attraktionen med pakethanteringssystemet Nix, men det är utanför ramen för den här handledningen.

Verifiera att kommandot mc är nu tillgängligt för användaren:

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

Ta bort paket med nix-env --uninstall eller nix-env -e:

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

Se avsnittet om [[#garbage-collection|skräpsamling]] nedan för hur man frigör utrymme som används av paket som inte längre används.

Se https://nix.dev/manual/nix/latest/command-ref/nix-env.html för ytterligare information.

Använda nix profile

Gränssnittet nix <command> är tekniskt sett fortfarande ansett experimentellt (mer sammanhang om den “experimentella” statusen för nix profile finns i den här RFC:n), men i praktiken används det flitigt och är mer ergonomisk. Tabulatorkomplettering och väljaren --help för de olika delkommandona i nix fungerar också direkt i en ny installation. Liksom nix-env, installerar nix profile paket i /nix/store och gör dem tillgängliga i sökvägen, så att de behålls mellan inloggningssessioner.

Här är ett trivialt exempel som använder nix profile för att installera kodsökverktyget 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)
  Code-searching tool similar to ack, but faster

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

Så här listas installerade paket eller tas bort:

$ 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

Se avsnittet om [skräpsamling|(#garbage collection) nedan för hur man frigör utrymme som används av paket som inte längre används.

Se https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html för ytterligare information.

Installera om Nix

Om man har aktiverat den "experimentella" funktionen nix-profil måste den inaktiveras och filerna med tillståndet som är kopplade till användarprofilen tas bort innan det installeras om, annars får man ett felmeddelande som:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Varning: det glömmer bort alla tidigare installerade paket!

Kommentera bort raden experimental-features i inställningsfilen för Nix, och ta sedan bort profilens katalog med tillståndet:

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

Nu kan installationsstegen upprepas.

Skräpsamling för att frigöra diskutrymme

Observera att nix-env -e och nix profile remove båda tar bort kommandon som tillhandahålls av ett paket från användarens nuvarande miljö, men programvaran förblir faktiskt installerad i /nix/store tills den skräpinsamlas.

Man kan tvinga skräpinsamling att frigöra diskutrymme med ett av följande kommandon:

nix-store --gc           # vanlig skräpsamling
nix-collect-garbage -d   # ta bort paket som inte är möjliga att nå från lagringen

Tar bort Nix

För att ta bort pakethanteraren Nix, kör följande kommandon:

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

run0 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 run0 userdel nixbld$i; done

run0 groupdel nixbld

Se också


Artikel bidragen av Ernstki med licens CC-BY-4.0.