Přejít na obsah

Nix

Správce balíčků Nix je pokročilý nástroj pro zkušené uživatele, pomocí kterého lze získat prakticky jakýkoli balíček svobodného softwaru, jaký si dokážete představit, z jeho rozsáhlého repozitáře spravovaného komunitou.

Lze jej nainstalovat na systém KDE Linux v režimu pro jednoho uživatele. Nix ukládá software a závislosti do adresáře /nix/store a automaticky aktualizuje vaši vyhledávací cestu při přidávání či odstraňování nástrojů.

Instalace

Správce balíčků Nix lze pro aktuálního uživatele nainstalovat takto:

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

Odhlaste se a znovu se přihlaste, poté proveďte test:

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

Upozorňujeme, že po ukončení tohoto shellu již mc a emacs nebudou součástí vyhledávací cesty vašeho shellu. Informace o tom, jak zajistit trvalou dostupnost těchto nástrojů, najdete v následující části.

Další podrobnosti najdete na adrese https://nixos.org/download/#nix-install-linux.

Trvalá instalace balíčků

K instalaci balíčků do adresáře /nix/store a k jejich zpřístupnění ve vyhledávací cestě vašeho uživatele použijte příkaz nix-env -iA nebo nix-env --install --attr:

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

Tím se vytvoří nové "prostředí", které obsahuje všechny změny stavu nezbytné k tomu, aby byl balíček mc k dispozici, a tyto změny lze provádět dopředu i dozadu. Právě v tom spočívá "skutečná" přitažlivost systému správy balíčků Nix, což však přesahuje rámec tohoto průvodce.

Ověřte, zda je pro vašeho uživatele nyní k dispozici příkaz mc:

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

Balíčky odinstalujte pomocí příkazu nix-env --uninstall nebo nix-env -e:

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

V níže uvedené části o [[#garbage-collection|vyčišťování paměti]] se dozvíte, jak uvolnit místo zabrané balíčky, které již nepoužíváte.

Další podrobnosti najdete na adrese https://nix.dev/manual/nix/latest/command-ref/nix-env.html.

Použití nix profile

Rozhraní nix <command> je z technického hlediska stále považováno za experimentální (více informací o "experimentálním" stavu nix profile najdete v tomto RFC), ale v praxi je široce používáno a je ergonomičtější. Automatické doplňování pomocí klávesy Tab a volby --help pro různé nix podpříkazy budou fungovat ihned po instalaci i na čerstvě nainstalovaném systému. Stejně jako nix-env nainstaluje i nix profile balíčky do /nix/store a zpřístupní je ve vaší vyhledávací cestě, přičemž tyto balíčky zůstanou zachovány i mezi jednotlivými sezeními.

Zde je jednoduchý příklad, jak pomocí nix profile nainstalovat nástroj pro vyhledávání v 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

Chcete-li zobrazit seznam nainstalovaných balíčků nebo je odinstalovat:

$ 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

V níže uvedené části o vyčištění paměti najdete informace o tom, jak uvolnit místo zabrané balíčky, které již nepoužíváte.

Další podrobnosti najdete na adrese https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html.

Přeinstalování Nixu

Pokud jste povolili "experimentální" funkci nix profile, budete ji muset před přeinstalací deaktivovat a smazat stavové soubory spojené s profilem vašeho uživatele, jinak se vám zobrazí následující chybová zpráva:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead

V konfiguračním souboru Nixu zakomentujte řádek experimental-features a poté smažte stavový adresář profilu:

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

Nyní můžete zopakovat kroky instalace.

Vyčištění paměti za účelem uvolnění místa na disku

Všimněte si, že oba příkazy nix-env -e a nix profile remove odstraní příkazy poskytované balíčkem z aktuálního uživatelského prostředí, avšak samotný software zůstává nainstalován v adresáři /nix/store až do doby, než bude odstraněn v rámci úklidu paměti.

Tuto automatickou likvidaci odpadu můžete spustit ručně, abyste uvolnili místo na disku, a to pomocí jednoho z následujících příkazů:

nix-store --gc           # rutinní odstraňování odpadu
nix-collect-garbage -d   # odstranění "nedostupných" balíčků z obchodu

Odstranění Nixu

Chcete-li odinstalovat správce balíčků Nix, spusťte následující příkazy:

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

Více informací


Tento přípěvek napsal Ernstki pod licencí CC-BY-4.0.