Preskočiť na obsah

Nix

Správca balíkov Nix je pokročilý nástroj pre pokročilých používateľov, ktorý možno použiť na získanie prakticky akéhokoľvek balíka slobodného softvéru, ktorý si viete predstaviť, z jeho veľkého repozitára spravovaného komunitou.

Možno ho nainštalovať na KDE Linux pre jednopoužívateľský systém. Nix ukladá softvér a závislosti pod /nix/store a automaticky aktualizuje vašu vyhľadávaciu cestu, keď sa pridávajú alebo odoberajú nástroje.

Inštalácia

Správcu balíkov Nix možno nainštalovať pre aktuálneho používateľa nasledovne:

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

Odhláste sa a znova prihláste, potom otestujte:

nix-shell -p mc emacs-nox  # teraz ste vnútri shellu s mc a emacs

Všimnite si, že keď opustíte tento shell, mc a emacs už nebudú vo vyhľadávacej ceste vášho shellu. Pozrite si nasledujúcu sekciu, ako sprístupniť takéto nástroje trvalo.

Ďalšie podrobnosti nájdete na https://nixos.org/download/#nix-install-linux.

Trvalé inštalácie balíkov

Použite nix-env -iA alebo nix-env --install --attr na inštaláciu balíkov do /nix/store a ich sprístupnenie vo vyhľadávacej ceste vášho používateľa:

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

Toto vytvorí nové "prostredie", ktoré obsahuje všetky zmeny stavu potrebné na sprístupnenie balíka mc, a tieto možno posunúť dopredu alebo dozadu. Toto je ''skutočná'' výhoda systému správy balíkov Nix, no je nad rámec tejto príručky.

Overte, že príkaz mc je teraz dostupný pre vášho používateľa:

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

Odstráňte balíky pomocou nix-env --uninstall alebo nix-env -e:

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

Pozrite si sekciu o [[#garbage-collection|zbere odpadkov]] nižšie, ako získať späť miesto použité balíkmi, ktoré už nepoužívate.

Ďalšie podrobnosti nájdete na https://nix.dev/manual/nix/latest/command-ref/nix-env.html.

Použitie nix profile

Rozhranie nix <command> je stále technicky považované za experimentálne (viac kontextu o "experimentálnom" stave nix profile nájdete v tomto RFC), v praxi je však široko používané a ergonomickejšie. Doplňovanie tabulátorom a možnosti --help pre rôzne nix podpríkazy budú tiež fungovať po čistej inštalácii. Rovnako ako nix-env, aj nix profile nainštaluje balíky do /nix/store a sprístupní ich vo vašej vyhľadávacej ceste, pričom pretrvajú medzi prihlasovacími reláciami.

Tu je triviálny príklad použitia nix profile na inštaláciu nástroja na vyhľadávanie kódu 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

Na zobrazenie zoznamu nainštalovaných balíkov alebo ich odstránenie:

$ 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

Pozrite si sekciu o zbere odpadkov nižšie, ako získať späť miesto použité balíkmi, ktoré už nepoužívate.

Ďalšie podrobnosti nájdete na https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html.

Preinštalovanie Nix

Ak ste povolili "experimentálnu" funkciu nix profile, musíte ju pred preinštalovaním zakázať a odstrániť stavové súbory spojené s profilom vášho používateľa, inak dostanete chybové hlásenie podobné tomuto:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Upozornenie: toto zabudne všetky predtým nainštalované balíky!

Zakomentujte riadok experimental-features vo vašom konfiguračnom súbore Nix a potom odstráňte adresár so stavom profilu:

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

Teraz môžete zopakovať kroky inštalácie.

Zber odpadkov na získanie miesta na disku

Všimnite si, že nix-env -e aj nix profile remove odstránia príkazy poskytované balíkom z aktuálneho prostredia vášho používateľa, avšak softvér zostáva skutočne nainštalovaný v /nix/store, kým sa neuskutoční zber odpadkov.

Zber odpadkov môžete vynútiť, aby ste získali späť miesto na disku, jedným z nasledujúcich príkazov:

nix-store --gc           # rutinný zber odpadkov
nix-collect-garbage -d   # odstrániť "nedosiahnuteľné" balíky z úložiska

Odstránenie Nix

Na odstránenie správcu balíkov Nix spustite nasledujúce príkazy:

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

Pozrite tiež


Článok napísal Ernstki pod licenciou CC-BY-4.0.