Nix - Čisto funkcionalni menadžer paketa za Linux


Nix je moćan, čisto funkcionalan sistem za upravljanje paketima dizajniran za pouzdano i ponovljivo upravljanje paketima, objavljen pod uslovima GNU LGPLv2.1. To je primarni sistem za upravljanje paketima u NixOSu, manje poznatoj Linux distribuciji.

Nix nudi atomske nadogradnje i vraćanja, više verzija instalacije paketa, upravljanje paketima za više korisnika i jednostavno postavljanje okruženja za izradu paketa, bez obzira na to koje programske jezike i alate programer koristi.

Pod Nix, paketi su napravljeni od funkcionalnog paketnog jezika koji se zove “Nix izrazi”. Ovaj funkcionalni pristup upravljanju paketima garantuje da instalacija ili nadogradnja jednog paketa ne može pokvariti druge pakete.

Nix takođe ima podršku za više korisnika, što implicira da normalni (ili neprivilegovani) korisnici sistema mogu bezbedno instalirati pakete i svaki korisnik je identifikovan profilom (kolekcija paketa u Nix prodavnici koji se pojavljuju u korisnikovoj PATH).

U slučaju da je jedan korisnik instalirao paket, ako drugi korisnik pokuša da instalira isti paket, paket neće biti izgrađen ili preuzet drugi put.

Trenutno podržava Linux (i686, x86_64) i Mac OS X (x86_64). Međutim, prilično je prenosiv, možete ga isprobati na većini platformi koje podržavaju POSIX niti i imaju C++11 kompajler.

U ovom članku ćemo pokazati kako instalirati (u višekorisničkom načinu) i koristiti Nix menadžer paketa u Linuxu. Razmotrit ćemo neke od osnovnih zadataka upravljanja paketima u odnosu na najčešće korištene alate.

Kako instalirati Nix Package Manager u Linux

Instalirat ćemo najnoviju verziju Nixa (v2.1.3 u vrijeme pisanja) u višekorisničkom načinu rada. Srećom, postoji spremna instalacijska skripta koju možete pokrenuti iz svoje ljuske kao običan korisnik koristeći sljedeću curl komandu na vašem sistemu.

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

Pokretanje gornje naredbe će preuzeti najnoviji nix binarni tarball i sletjet ćete na višekorisnički ekran za instalaciju nixa kao što je prikazano na snimku ekrana.

Da vidite detaljnu listu onoga što će se dogoditi tokom procesa instalacije, upišite y i pritisnite Enter. Ako ste zadovoljni i spremni da nastavite, upišite y i pritisnite Enter.

Skripta će po potrebi pozvati sudo komandu mnogo puta. Morate mu dozvoliti da koristi sudo tako što ćete odgovoriti na y i pritisnuti Enter.

Instalater će zatim pokrenuti nekoliko testova i generirati izvještaj o konfiguraciji Nixa, kreirati korisnike gradnje između korisničkih ID-ova 30001 i 30032 i grupu s ID-om grupe 30000. Unesite y da nastavite kada se to od vas zatraži. Postavit će grupe za izgradnju različitih korisnika, napraviti osnovnu strukturu direktorija Nix-a.

Modificirat će datoteku /etc/bashrc, (i /etc/zshrc za zsh) ako postoje. Imajte na umu da prvo pravi rezervnu kopiju pomenutih fajlova sa ekstenzijom .backup-before-nix, a instalater takođe kreira datoteku /etc/profile.d/nix.sh.

Instalater će također podesiti nix-daemon uslugu i nix-daemon socket uslugu, učitati systemd jedinicu za nix-daemon i pokrenuti dvije gore navedene usluge.

Kada se instalacija završi, morate otvoriti novi prozor terminala da biste počeli koristiti Nix. Alternativno, zatvorite i ponovo otvorite svoju ljusku da biste primijenili nedavne promjene. Zatim izvorni fajl /etc/profile.d/nix.sh (jer to nije datoteka za pokretanje ljuske, otvaranje nove ljuske neće je izvorno).

source /etc/profile.d/nix.sh

Zatim pokrenite sljedeću naredbu da preuzmete neke staze sa službene web stranice projekta, potrebne za rad Nixa. Nakon što se sve putanje preuzmu i kopiraju na ispravne lokacije, vidjet ćete sažetak o tipu instalacije sistema i nix-a kao što je prikazano na snimku ekrana.

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

Kako koristiti Nix Package Manager u Linuxu

Pod Nix, upravljanje paketima vrši uslužni program nix-env. Koristi se za instaliranje, nadogradnju i uklanjanje/brisanje paketa i za upit koji su paketi instalirani ili dostupni za instalaciju.

Svi paketi se nalaze u Nix kanalu, što je URL koji upućuje na spremište koje sadrži i kolekciju Nix izraza i pokazivač na binarni keš.

Zadani kanal je Nixpkgs i lista pretplaćenih kanala je pohranjena u ~/.nix-channels, možete ih navesti koristeći sljedeću naredbu (bez izlaza znači da nema kanala) .

nix-channel --list

Da biste dodali Nix kanal, koristite sljedeću naredbu.

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

Prije nego što instalirate bilo koji paket, počnite ažuriranjem Nix kanala; ovo je slično pokretanju apt update u APT paket menadžeru.

nix-channel --update

Možete pitati koji paketi su dostupni za instalaciju koristeći sljedeću naredbu.

nix-env -qa

U ovom primjeru ćemo instalirati Apache Tomcat server koristeći prethodnu naredbu u sprezi sa grep kako bismo utvrdili da je paket dostupan za instalaciju kao što je prikazano.

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

Da biste instalirali paket, koristite sljedeću naredbu tako što ćete navesti verziju paketa, na primjer apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Na lokalnom sistemu, Nix pohranjuje pakete u Nix store, koji je po defaultu direktorij /nix/store, gdje svaki paket ima svoj jedinstveni poddirektorij. Na primjer, apache-tomcat paketi su pohranjeni u:

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

Na ovoj putanji, nasumični znakovi 95gmgnxlrcpkhlm00fa5ax8kvd6189py su jedinstveni identifikator za paket koji uzima u obzir sve njegove zavisnosti.

Možete navesti instalirane pakete sa sljedećom naredbom.

nix-env -q

Za nadogradnju paketa apache-tomcat, možete koristiti prekidač za nadogradnju -u kao što je prikazano.

nix-env -u apache-tomcat

Ako želite ukloniti/obrisati apache-tomcat, koristite oznaku -e. Ovdje se paket ne briše odmah iz sistema, već se samo prikazuje neiskorištenim. Ovo je korisno jer želite da izvršite vraćanje unazad, ili može biti u profilima drugih korisnika.

nix-env -e apache-tomcat

Nakon uklanjanja paketa, možete obaviti sakupljanje smeća pomoću nix-collect-garbage uslužnog programa.

nix-collect-garbage

Kako ukloniti Nix Package Manager u Linuxu

Da deinstalirate Nix, uklonite sve datoteke povezane s Nixom odjednom.

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 sistemima sa systemd, pokrenite sljedeće komande da zaustavite sve usluge povezane s nixom i onemogućite ih.

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

Pored toga, morate ukloniti sve reference na Nix u ovim fajlovima: /etc/profile, /etc/bashrc i /etc/zshrc .

Za više informacija pogledajte man stranice gore navedenih uslužnih programa koje smo pogledali.

man nix-channel
man nix-env

Dokumentaciju za Nix Package Manager možete pronaći na web stranici projekta: https://nixos.org/nix/.

Sažetak

Nix je čisto funkcionalan paket menadžer dizajniran za pouzdano i ponovljivo upravljanje paketima. Pruža zanimljiv koncept upravljanja paketima, vrlo različit od uobičajenih alata u Linuxu kao što su YUM, APT i mnogi drugi.

U ovom članku smo pokazali kako instalirati nix u višekorisničkom modu i razgovarali o tome kako upravljati paketima s Nixom. Podijelite svoje mišljenje s nama ili postavite pitanje putem obrasca za komentare ispod. Na kraju, u narednom članku ćemo objasniti više naredbi za upravljanje Nix paketima. Do tada, ostanite povezani.