GNU/Linux >> Znalost Linux >  >> Linux

Začínáme s Nix Package Manager

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í!


Linux
  1. Začínáme se Zsh

  2. Začínáme se Správcem souborů Plesk

  3. Začínáme se Sambou pro interoperabilitu

  1. Začínáme s ls

  2. Začínáme s PostgreSQL na Linuxu

  3. Začínáme s SSH v Linuxu

  1. Začínáme s GnuCash

  2. Začínáme s správcem oken i3 v systému Linux

  3. Jak na to:Začínáme s Ansible