Vyhledávání na webu

Nix – Čistě funkční správce balíčků pro Linux


Nix je výkonný, čistě funkční systém správy balíčků navržený pro spolehlivou a reprodukovatelnou správu balíčků, vydaný podle podmínek GNU LGPLv2.1. Je to primární systém správy balíčků v NixOS, méně známé distribuci Linuxu.

Nix nabízí atomické upgrady a vrácení zpět, více verzí instalace balíčků, správu balíčků pro více uživatelů a snadné nastavení prostředí sestavování balíčku, bez ohledu na to, jaké programovací jazyky a nástroje vývojář používá.

V části Nix jsou balíčky sestaveny z funkčního jazyka balíčků nazývaného „výrazy Nix“. Tento funkční přístup ke správě balíčků zaručuje, že instalace nebo aktualizace jednoho balíčku nemůže poškodit jiné balíčky.

Nix má také podporu pro více uživatelů, což znamená, že normální (nebo neprivilegovaní) uživatelé systému mohou bezpečně instalovat balíčky a každý uživatel je identifikován profilem (sbírka balíčků v obchodě Nix, které se objevují v uživatelské PATH).

V případě, že jeden uživatel nainstaloval balíček, pokud se jiný uživatel pokusí nainstalovat stejný balíček, balíček nebude sestaven ani stažen podruhé.

V současné době podporuje Linux (i686, x86_64) a Mac OS X (x86_64). Je však poměrně přenosný, můžete jej vyzkoušet na většině platforem, které podporují vlákna POSIX a mají kompilátor C++11.

V tomto článku si ukážeme, jak nainstalovat (ve víceuživatelském režimu) a používat správce balíčků Nix v Linuxu. Probereme některé základní úlohy správy balíčků ve vztahu k běžně používaným nástrojům.

Jak nainstalovat Nix Package Manager v Linuxu

Nainstalujeme nejnovější verzi Nix (v2.1.3 v době psaní tohoto článku) v režimu pro více uživatelů. Naštěstí existuje připravený instalační skript, který můžete spustit ze svého shellu jako běžný uživatel pomocí následujícího příkazu curl na vašem systému.

sh <(curl https://nixos.org/nix/install) --daemon

Spuštěním výše uvedeného příkazu se stáhne nejnovější binární tarball nixu a dostanete se na obrazovku instalace nixu pro více uživatelů, jak je znázorněno na snímku obrazovky.

Chcete-li zobrazit podrobný seznam toho, co se stane během procesu instalace, napište y a stiskněte Enter. Pokud jste spokojeni a jste připraveni pokračovat, napište y a stiskněte Enter.

Skript bude podle potřeby mnohokrát vyvolávat příkaz sudo. Musíte mu povolit použití sudo tak, že odpovíte y a stisknete Enter.

Instalační program poté provede několik testů a vygeneruje sestavu konfigurace Nix, vytvoří uživatele sestavení mezi ID uživatele 30001 a 30032 a skupinu s ID skupiny 30 000. Až budete vyzváni, zadejte y a pokračujte. Nastaví skupiny sestavení pro různé uživatele sestavení a vytvoří základní adresářovou strukturu Nix.

Změní soubor /etc/bashrc (a /etc/zshrc pro zsh), pokud existují. Všimněte si, že nejprve zazálohuje zmíněné soubory s příponou .backup-before-nix a instalátor také vytvoří soubor /etc/profile.d/nix.sh.

Instalační program také nastaví službu nix-daemon a službu soketu nix-daemon, načte jednotku systemd pro nix-daemon a spustí dvě výše uvedené služby.

Po dokončení instalace musíte otevřít nové okno terminálu, abyste mohli začít používat Nix. Případně zavřete a znovu otevřete svůj shell, abyste použili poslední změny. Pak zdrojový soubor /etc/profile.d/nix.sh (protože se nejedná o spouštěcí soubor shellu, otevření nového shellu jej nezíská).

source /etc/profile.d/nix.sh

Poté spusťte následující příkaz ke stažení některých cest z oficiálních webových stránek projektu, které jsou nutné pro fungování Nix. Po stažení všech cest a jejich zkopírování do správných umístění se zobrazí souhrn typu instalace systému a nix, jak je znázorněno na snímku obrazovky.

nix-shell -p nix-info --run "nix-info -m"

Jak používat Nix Package Manager v Linuxu

V části Nix provádí správu balíčků nástroj nix-env. Používá se k instalaci, aktualizaci a odstranění/vymazání balíčků ak dotazu, které balíčky jsou nainstalovány nebo jsou k dispozici pro instalaci.

Všechny balíčky jsou umístěny v kanálu Nix, což je adresa URL, která ukazuje na úložiště obsahující jak kolekce výrazů Nix, tak ukazatel na binární mezipaměť.

Výchozí kanál je Nixpkgs a seznam odebíraných kanálů je uložen v ~/.nix-channels, můžete je vypsat pomocí následujícího příkazu (žádný výstup znamená žádné kanály) .

nix-channel --list

Chcete-li přidat kanál Nix, použijte následující příkaz.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Před instalací jakýchkoli balíčků začněte aktualizací kanálu Nix; je to podobné jako spouštění apt update pod správcem balíčků APT.

nix-channel --update

Pomocí následujícího příkazu můžete zjistit, jaké balíčky jsou k dispozici pro instalaci.

nix-env -qa

V tomto příkladu nainstalujeme server Apache Tomcat pomocí předchozího příkazu ve spojení s grep, abychom zjistili, zda je balíček dostupný k instalaci, jak je znázorněno.

nix-env -qa | grep "apache-tomcat"

Chcete-li nainstalovat balíček, použijte následující příkaz zadáním verze balíčku, například apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

V místním systému Nix ukládá balíčky do Nix store, což je ve výchozím nastavení adresář /nix/store, kde má každý balíček svůj vlastní jedinečný podadresář. Například balíčky apache-tomcat jsou uloženy v:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

V této cestě jsou náhodné znaky 95gmgnxlrcpkhlm00fa5ax8kvd6189py jedinečným identifikátorem balíčku, který bere v úvahu všechny jeho závislosti.

Nainstalované balíčky můžete vypsat pomocí následujícího příkazu.

nix-env -q

Chcete-li upgradovat balíček apache-tomcat, můžete použít přepínač upgradu -u, jak je znázorněno na obrázku.

nix-env -u apache-tomcat

Pokud chcete odstranit/smazat apache-tomcat, použijte příznak -e. Zde není balíček okamžitě vymazán ze systému, pouze je vykreslen nepoužitý. To je užitečné, protože chcete provést vrácení zpět nebo to může být v profilech jiných uživatelů.

nix-env -e apache-tomcat

Po odebrání balíčku můžete provést sběr odpadu pomocí nástroje nix-collect-garbage.

nix-collect-garbage

Jak odebrat Nix Package Manager v Linuxu

Chcete-li odinstalovat Nix, odstraňte všechny soubory související s nix najednou.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Na systémech s systemd spusťte následující příkazy k zastavení všech služeb souvisejících s nixem a jejich deaktivaci.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Kromě toho musíte odstranit všechny odkazy na Nix v těchto souborech: /etc/profile, /etc/bashrc a /etc/zshrc .

Další informace naleznete v manuálových stránkách výše uvedených nástrojů, na které jsme se podívali.

man nix-channel
man nix-env

Dokumentaci Nix Package Manager naleznete na webových stránkách projektu: https://nixos.org/nix/.

souhrn

Nix je čistě funkční správce balíčků navržený pro spolehlivou a reprodukovatelnou správu balíčků. Poskytuje zajímavý koncept správy balíčků, velmi odlišný od běžně používaných nástrojů v Linuxu, jako je YUM, APT a mnoho dalších.

V tomto článku jsme ukázali, jak nainstalovat nix v režimu pro více uživatelů, a diskutovali o tom, jak provádět správu balíčků s Nix. Podělte se s námi o své myšlenky nebo se zeptejte na jakékoli dotazy prostřednictvím formuláře níže. Nakonec v nadcházejícím článku vysvětlíme další příkazy správy balíčků Nix. Do té doby zůstaňte ve spojení.