Nix - Čisto funkcionalni upravitelj paketa za Linux


Nix je snažan, čisto funkcionalan sustav za upravljanje paketima dizajniran za pouzdano i ponovljivo upravljanje paketima, objavljen pod uvjetima GNU LGPLv2.1. To je primarni sustav za upravljanje paketima u NixOS, manje poznatoj distribuciji Linuxa.

Nix nudi atomske nadogradnje i povrate, višestruke verzije instalacije paketa, višekorisničko upravljanje paketima i lako postavljanje okruženja za izgradnju paketa, bez obzira na to koje programske jezike i alate programer koristi.

Pod Nixom, paketi su izgrađeni od funkcionalnog paketnog jezika pod nazivom “Nix izrazi”. Ovaj funkcionalni pristup upravljanju paketima jamči da instaliranje ili nadogradnja jednog paketa ne može pokvariti druge pakete.

Nix također ima višekorisničku podršku, što podrazumijeva da normalni (ili neprivilegirani) korisnici sustava mogu sigurno instalirati pakete, a svaki korisnik je identificiran profilom (kolekcija paketa u Nix trgovini koji se pojavljuju u korisničkom PATH-u).

U slučaju da je jedan korisnik instalirao paket, ako drugi korisnik pokuša instalirati isti paket, paket se neće izgraditi ili preuzeti 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 ćemo članku pokazati kako instalirati (u višekorisničkom načinu) i koristiti Nix upravitelj paketa u Linuxu. Raspravljat ćemo o nekim 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 pripremljena instalacijska skripta koju možete pokrenuti iz svoje ljuske kao običan korisnik koristeći sljedeću naredbu curl na vašem sustavu.

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

Pokretanjem gornje naredbe preuzet će se najnoviji nix binarni tarball i doći ćete do višekorisničkog zaslona nix instalacije kao što je prikazano na snimci zaslona.

Za prikaz detaljnog popisa onoga što će se dogoditi tijekom procesa instalacije, upišite y i pritisnite Enter. Ako ste zadovoljni i spremni za nastavak, upišite y i pritisnite Enter.

Skripta će po potrebi pozvati sudo naredbu mnogo puta. Morate mu dopustiti korištenje sudo tako da odgovorite na y i pritisnete Enter.

Instalater će zatim pokrenuti nekoliko testova i generirati izvješće o Nix konfiguraciji, stvoriti korisnike među korisničkim ID-ovima 30001 i 30032 i grupu s ID-om grupe 30000. Unesite y za nastavak kada se to od vas zatraži. Postavit će grupe za izradu za različite korisnike za izradu, napraviti osnovnu strukturu direktorija Nixa.

Modificirat će datoteku /etc/bashrc (i /etc/zshrc za zsh) ako postoje. Imajte na umu da prvo sigurnosno kopira spomenute datoteke s ekstenzijom .backup-before-nix, a instalacijski program također stvara datoteku /etc/profile.d/nix.sh.

Instalater će također postaviti uslugu nix-daemon i uslugu utičnice nix-daemon, učitava jedinicu systemd za nix-daemon i pokreće dvije gore navedene usluge.

Kada instalacija završi, morate otvoriti novi prozor terminala da biste počeli koristiti Nix. Alternativno, zatvorite i ponovno otvorite ljusku da primijenite nedavne promjene. Zatim izvor datoteke /etc/profile.d/nix.sh (budući da to nije datoteka za pokretanje ljuske, otvaranje nove ljuske neće je izvoriti).

source /etc/profile.d/nix.sh

Zatim pokrenite sljedeću naredbu za preuzimanje nekih staza sa službene web stranice projekta, potrebnih za rad Nix. Nakon što se sve staze preuzmu i kopiraju na ispravne lokacije, vidjet ćete sažetak vrste instalacije sustava i nixa kao što je prikazano na snimci zaslona.

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

Kako koristiti Nix Package Manager u Linuxu

Pod Nix, upravljanje paketima se vrši pomoću pomoćnog programa nix-env. Koristi se za instaliranje, nadogradnju i uklanjanje/brisanje paketa te za upit koji su paketi instalirani ili dostupni za instalaciju.

Svi paketi nalaze se u Nix kanalu, što je URL koji upućuje na repozitorij koji sadrži i zbirke Nix izraza i pokazivač na binarnu predmemoriju.

Zadani kanal je Nixpkgs, a popis kanala na koje ste pretplaćeni pohranjeni su u ~/.nix-channels, možete ih navesti pomoću sljedeće naredbe (bez izlaza znači da nema kanala) .

nix-channel --list

Za dodavanje Nix kanala upotrijebite sljedeću naredbu.

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

Prije nego instalirate bilo koji paket, počnite s ažuriranjem Nix kanala; ovo je slično pokretanju apt ažuriranja pod APT upraviteljem paketa.

nix-channel --update

Možete pitati koji su paketi dostupni za instalaciju pomoću sljedeće naredbe.

nix-env -qa

U ovom primjeru ćemo instalirati Apache Tomcat poslužitelj koristeći prethodnu naredbu u kombinaciji s grep kako bismo pronašli da je paket dostupan za instalaciju kao što je prikazano.

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

Da biste instalirali paket, koristite sljedeću naredbu navodeći verziju paketa, na primjer apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Na lokalnom sustavu Nix pohranjuje pakete u Nix trgovinu, koja je prema zadanim postavkama /nix/store direktorij, gdje svaki paket ima svoj jedinstveni poddirektorij. Na primjer, paketi apache-tomcat pohranjeni su u:

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

Na ovom putu, nasumični znakovi 95gmgnxlrcpkhlm00fa5ax8kvd6189py jedinstveni su identifikator za paket koji uzima u obzir sve svoje ovisnosti.

Možete ispisati instalirane pakete pomoću sljedeće naredbe.

nix-env -q

Za nadogradnju paketa apache-tomcat možete upotrijebiti prekidač nadogradnje -u kao što je prikazano.

nix-env -u apache-tomcat

Ako želite ukloniti/izbrisati apache-tomcat, upotrijebite oznaku -e. Ovdje se paket ne briše odmah iz sustava, samo se čini neiskorištenim. Ovo je korisno jer želite napraviti povrat ili se može nalaziti u profilima drugih korisnika.

nix-env -e apache-tomcat

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

nix-collect-garbage

Kako ukloniti Nix Package Manager u Linuxu

Da biste deinstalirali 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 sustavima sa systemd, pokrenite sljedeće naredbe da biste zaustavili sve usluge vezane uz nix i onemogućili 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

Osim toga, trebate ukloniti sve reference na Nix u ovim datotekama: /etc/profile, /etc/bashrc i /etc/zshrc .

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

man nix-channel
man nix-env

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

Sažetak

Nix je čisto funkcionalni upravitelj paketa dizajniran za pouzdano i ponovljivo upravljanje paketima. Pruža zanimljiv koncept upravljanja paketima, vrlo različit od često korištenih alata u Linuxu kao što su YUM, APT i mnogi drugi.

U ovom smo članku pokazali kako instalirati nix u višekorisničkom načinu rada i raspravljali o tome kako upravljati paketima s Nixom. Podijelite svoje misli s nama ili postavite bilo kakva pitanja putem obrasca za komentare u nastavku. Na kraju, u nadolazećem članku objasnit ćemo više Nix naredbi za upravljanje paketima. Do tada, ostanite povezani.