Tento tutoriál vysvětluje, jak provádět operace správy balíčků, jako je instalace, odstranění, aktualizace a aktualizace balíčků pomocí správce balíčků Nix. Pokud jste ještě nenainstalovali správce balíčků Nix, přečtěte si naši předchozí příručku "Nix – výkonný správce balíčků pro Linux a Unix" . Jak už možná víte, nemusíte být uživatel root nebo sudo, abyste mohli provádět všechny operace správy balíčků pomocí Nix.
Začínáme s Nix Package Manager
Nix má mnoho příkazů. Hlavním příkazem pro správu balíčků je nix-env . Tento příkaz se používá k vypsání, instalaci, aktualizaci, vrácení zpět, odstranění, dotazu na balíčky. Podívejme se na některé příkazy s příklady.
Aktualizace kanálů Nix
Kanál Nix je pouze adresa URL, která ukazuje na místo, které obsahuje sadu výrazů Nix a manifest. Ve výchozím nastavení Nixpkgs kanál se automaticky přidá do vašeho seznamu „odebíraných“ kanálů, když si nainstalujete Nix.
Chcete-li zůstat v obraze o kanálu Nix, spusťte následující příkaz:
$ nix-channel --update
Ukázkový výstup:
downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s] unpacking channels...
Kanál můžete do systému přidat také ručně, jak je znázorněno níže.
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
Po přihlášení (přidání) kanálu nezapomeňte kanál aktualizovat, abyste získali nejnovější dostupné Nix výrazy pomocí příkazu:
$ nix-channel --update
Chcete-li kanál odstranit, stačí spustit:
$ nix-channel --remove nixpkgs
Vyhledat/dotazovat se na dostupné balíčky
Chcete-li zobrazit seznam dostupných balíčků v odebíraném kanálu, spusťte:
$ nix-env -qa
Ukázkový výstup výše uvedeného příkazu by byl:
2048-in-terminal-2015-01-15 2bwm-0.2 389-ds-base-1.3.5.15 3dpong-0.5 4store-1.1.6 8086tiny-1.25 90secondportraits-1.01b 915resolution-0.5.3 9pfs a2jmidid-8 a2ps-4.14 a52dec-0.7.4p4 aacgain-1.9.0 aacskeys-0.4.0e aalib-1.4rc5 abc-verifier-20160818 abcde-2.7.2 abcl-1.4.0 [...]
Zde "-q" označuje operaci dotazu. "-a" označuje všechny dostupné (tj. instalovatelné) balíčky.
Můžete se dotazovat na konkrétní balíček, jak je uvedeno níže.
$ nix-env -qa chromium
Výstup:
chromium-58.0.3029.110
Také můžete použít následující příkaz k vyhledání konkrétního balíčku.
$ nix-env -qaP | grep python3-3
Ukázkový výstup:
nixpkgs.python33 python3-3.3.6 nixpkgs.python33Full python3-3.3.6 nixpkgs.python34 python3-3.4.6 nixpkgs.python34Full python3-3.4.6 nixpkgs.python35 python3-3.5.3 nixpkgs.python35Full python3-3.5.3 nixpkgs.python3Full python3-3.6.1 nixpkgs.python36Full python3-3.6.1 nixpkgs.python3 python3-3.6.1
Chcete-li zobrazit seznam všech nainstalovaných balíčků, jednoduše spusťte:
$ nix-env -q
Je také možné vidět stav dostupného balíčku. Podívejte se na níže uvedený příklad.
$ nix-env -qas gcc
Ukázkový výstup:
IPS gcc-5.4.0
Zde „I“ označuje, že je zadaný balíček nainstalován, „P“ označuje, že balíček je v našem systému přítomen, a „S“ označuje, zda existuje takzvaná náhrada pro balíček.
Balíčky můžete dotazovat/vypisovat pomocí regulárních výrazů. Zde je několik příkladů regulárních výrazů.
chrom
Odpovídá názvu balíčku chromium a jakékoli verzi.
chrom-58.0
Odpovídá názvu balíčku chromium a verzi 58.0.
Příklad:
$ nix-env -qa chromium-58.0
gtk\\+
Odpovídá názvu balíčku gtk+ . Znak + musí být escapován pomocí zpětného lomítka, aby se zabránilo jeho interpretaci jako kvantifikátoru, a zpětné lomítko musí být escapováno dalším zpětným lomítkem, aby se zajistilo, že jej shell předá dál.
.\*
Odpovídá libovolnému názvu balíčku. Toto je výchozí hodnota pro většinu příkazů.
'.*zip.*'
Odpovídá libovolnému názvu balíčku obsahujícího řetězec zip . Všimněte si teček:'*zip*' nefunguje, protože v regulárním výrazu je znak * interpretován jako kvantifikátor.
'.*(firefox|chromium).*'
Odpovídá libovolnému názvu balíčku obsahujícího řetězce firefox nebo chromium .
Instalace balíčků
Jak jsem zmínil v předchozím tutoriálu, všechny balíčky budou uloženy v Nix Store , obvykle adresář /nix/store .
Chcete-li nainstalovat balíček, stačí spustit:
$ nix-env --install gcc
Nebo,
$ nix-env -i gcc
Výše uvedený příkaz nainstaluje nejnovější dostupný balíček gcc.
Ukázkový výstup výše uvedeného příkazu by byl:
installing ‘gcc-5.4.0’ download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds... these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked): /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’... [...] fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... *** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’ created 78 symlinks in user environment
Zkontrolujeme, zda je gcc nainstalováno nebo ne pomocí příkazu:
$ gcc -v
Ukázkový výstup:
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: Thread model: posix gcc version 5.4.0 (GCC)
Jak jste si všimli ve výše uvedeném výstupu, gcc byl v podadresáři s názvem "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" pod /nix/store . Zde nazýváme dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 jako jedinečný identifikátor. Tento podadresář obsahuje všechny požadované závislosti a knihovny balíčku gcc.
Testujte balíčky bez instalace
Další pozoruhodnou funkcí správce balíčků Nix je, že můžete balíček otestovat, aniž byste jej instalovali do systému. V následující příručce se dozvíte, jak otestovat balíček bez jeho instalace.
- Jak otestovat balíček bez jeho instalace v systému Linux
Upgradování balíčků
Chcete-li upgradovat balíček na další dostupnou verzi, stačí spustit:
$ nix-env --upgrade vim
Nebo jen:
$ nix-env -u vim
Výše uvedený příkaz upgraduje pouze vim balíček, pokud existuje „novější“ verze.
Také můžete upgradovat všechny nainstalované balíčky najednou spuštěním následujícího příkazu:
$ nix-env -u
Vrácené balíčky
Nainstalovali jste balíček, ale ten není užitečný nebo nefunguje správně. Potřebujete nižší verzi stejného balíčku. Co budeš dělat? Jednoduchý. Stačí se vrátit k předchozí pracovní verzi pomocí následujícího příkazu:
$ nix-env --rollback
Odinstalování balíčků
Chcete-li balíček odinstalovat, spusťte:
$ nix-env -e gcc
Výše uvedený příkaz odinstaluje balíček s názvem gcc z vašeho systému.
Můžete odebrat více balíčků, jak je uvedeno níže.
$ nix-env -e gcc vim
Ukázkový výstup:
uninstalling ‘vim-8.0.0442’ uninstalling ‘gcc-5.4.0’ building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’ created 6 symlinks in user environment
Odebrání nepoužívaných balíčků
Když je balíček odinstalován, není odstraněn z Nix Store (tj. adresář /nix/store/). Pouze symbolické odkazy budou odstraněny z vašeho profilu.
Chcete-li skutečně odstranit odinstalované balíčky, spusťte:
$ nix-collect-garbage -d
Ukázkový výstup:
finding garbage collector roots... deleting garbage... deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’ deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’ deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’ [...] deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’ deleting ‘/nix/store/trash’ deleting unused links... note: currently hard linking saves -0.00 MiB 1447 store paths deleted, 12.65 MiB freed
Tento příkaz byste měli spouštět pravidelně, abyste se zbavili nepoužívaných balíčků z vašeho systému.
A to je zatím vše. Doufám, že máte představu o základním použití správce balíčků Nix. To, co jsem zde právě popsal, stačí k tomu, abyste mohli začít se správcem balíčků Nix. Příkazů je samozřejmě mnoho. Chcete-li se dozvědět více o příkazech Nix, podívejte se na oficiální příručku Nix na konci této příručky.
Pokud považujete tuto příručku za užitečnou, sdílejte ji na svých sociálních a profesních sítích a podpořte OSTechNix. Přijdou další dobré věci. Zůstaňte naladěni!
Na zdraví!