Preskoči na vsebino

Nix

Upravljalnik paketov Nix je napredno orodje za napredne uporabnike, ki ga je mogoče uporabiti za pridobitev praktično katerega koli prostega programskega paketa, ki si ga lahko zamislite, iz njegovega velikega repozitorija, ki ga vzdržuje skupnost.

Namestiti ga je mogoče v KDE Linux za sistem z enim uporabnikom. Nix shranjuje programsko opremo in odvisnosti v mapi /nix/store in samodejno posodablja vašo iskalno pot, ko so orodja dodana ali odstranjena.

Nameščanje

Upravljalnik paketov Nix lahko za trenutnega uporabnika namestite takole:

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

Odjavite se in se znova prijavite, nato pa preizkusite:

nix-shell -p mc emacs-nox  # you are now inside a shell with mc and emacs

Upoštevajte, da ko zapustite ta shell, mc in emacs nista več v iskalni poti vašega shella. Za trajno nastavitev teh orodij glejte naslednji razdelek.

Glejte https://nixos.org/download/#nix-install-linux za več podrobnosti.

Trajne namestitve paketov

Uporabite nix-env -iA ali nix-env --install --attr za namestitev paketov v /nix/store in njihovo dostopnost v iskalni poti uporabnika:

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

To ustvari novo "okolje", ki vsebuje vse spremembe stanja, potrebne za to, da je paket mc na voljo, in te je mogoče prenesti naprej ali nazaj. To je "prava" privlačnost sistema za upravljanje paketov Nix, vendar presega obseg tega priročnika.

Preverite, ali je ukaz mc zdaj na voljo vašemu uporabniku:

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

Pakete odstranite z ukazom nix-env --uninstall ali nix-env -e:

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

Za informacije o tem, kako ponovno pridobiti prostor, ki ga uporabljajo paketi, ki jih ne uporabljate več, glejte spodnji razdelek o [[#garbage-collection|garbage collection]].

Glejte https://nix.dev/manual/nix/latest/command-ref/nix-env.html za podrobnosti.

Uporaba nix profile

Vmesnik nix <command> tehnično še vedno velja za eksperimentalnega (več konteksta o "eksperimentalnem" statusu nix profile najdete v tem RFC), vendar je v praksi pogosto uporabljen in bolj ergonomičen. Dokončanje s tabulatorjem in možnosti --help za različne podukaze nix bodo prav tako delovale takoj po namestitvi. Tako kot nix-env bo tudi nix profile namestil pakete v /nix/store in jih omogočil v vaši iskalni poti, pri čemer bodo trajno ostali med prijavnimi sejami.

Tukaj je preprost primer uporabe nix profile za namestitev orodja za iskanje kode 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)
  Orodje za iskanje kode, podobno kot ack, vendar hitrejše

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

Če želite našteti nameščene pakete ali jih odstraniti:

$ 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

Za informacije o tem, kako ponovno pridobiti prostor, ki ga uporabljajo paketi, ki jih ne uporabljate več, glejte spodnji razdelek o zbiranju smeti.

Glejte https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html za podrobnosti.

Ponovno nameščanje Nixa

Če ste omogočili "eksperimentalno" funkcijo nix profile, jo morate onemogočiti in pred ponovno namestitvijo izbrisati datoteke stanja, povezane z vašim uporabniškim profilom, sicer boste prejeli sporočilo o napaki, kot je to:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Opozorilo: to bo pozabilo vse predhodno nameščene pakete!

Zakomentirajte vrstico experimental-features v vaši konfiguracijski datoteki Nix in nato izbrišite imenik s stanjem profila:

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

Zdaj lahko ponovite korake namestitve.

Zbiranje smeti za vračanje prostora na disku

Upoštevajte, da ukaza nix-env -e in nix profile remove odstranita paket iz trenutnega uporabniškega okolja, vendar programska oprema dejansko ostane nameščena v mapi /nix/store, dokler ni pobrana v smeti.

Zbiranje smeti lahko prisilite, da si povrnete prostor na disku, z enim od naslednjih ukazov:

nix-store --gc           # rutinsko zbiranje smeti
nix-collect-garbage -d   # odstrani "nedosegljive" pakete iz skladišča

Odstranjevanje Nixa

Če želite odstraniti upravljalnika paketov Nix, zaženite naslednje ukaze:

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

Glejte tudi


Članek je prispeval Ernstki z dovoljenjem CC-BY-4.0.