Nix - Managerul de pachete pur funcțional pentru Linux


Nix este un sistem de gestionare a pachetelor puternic, pur funcțional, conceput pentru gestionarea pachetelor fiabilă și reproductibilă, lansat în condițiile GNU LGPLv2.1. Este sistemul principal de gestionare a pachetelor din NixOS, o distribuție Linux mai puțin cunoscută.

Nix oferă upgrade-uri și rollback-uri atomice, versiuni multiple de instalare a pachetelor, gestionarea pachetelor multi-utilizator și configurarea fără efort a mediilor de compilare pentru un pachet, indiferent de limbajele de programare și instrumentele pe care le folosește un dezvoltator.

Sub Nix, pachetele sunt construite dintr-un limbaj funcțional de pachet numit „Expresii Nix”. Această abordare funcțională a gestionării pachetelor garantează că instalarea sau actualizarea unui pachet nu poate distruge alte pachete.

Nix are, de asemenea, suport pentru mai mulți utilizatori, ceea ce implică faptul că utilizatorii de sistem obișnuiți (sau fără privilegii) pot instala pachete în siguranță și fiecare utilizator este identificat printr-un profil (o colecție de pachete din magazinul Nix care apar în PATH-ul utilizatorului).

În cazul în care un utilizator a instalat un pachet, dacă un alt utilizator încearcă să instaleze același pachet, pachetul nu va fi construit sau descărcat a doua oară.

În prezent, acceptă Linux (i686, x86_64) și Mac OS X (x86_64). Cu toate acestea, este destul de portabil, îl puteți încerca pe majoritatea platformelor care acceptă fire POSIX și au un compilator C++11.

În acest articol, vom arăta cum să instalați (în modul multi utilizator) și să utilizați managerul de pachete Nix în Linux. Vom discuta câteva dintre sarcinile de bază de gestionare a pachetelor în legătură cu instrumentele utilizate în mod obișnuit.

Cum se instalează Nix Package Manager în Linux

Vom instala cea mai recentă versiune a Nix (v2.1.3 la momentul scrierii) în modul multi utilizator. Din fericire, există un script de instalare gata pregătit pe care îl puteți rula din shell ca utilizator normal, folosind următoarea comandă curl pe sistemul dumneavoastră.

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

Rularea comenzii de mai sus va descărca cel mai recent tarball binar nix și veți ajunge în ecranul de instalare nix cu mai mulți utilizatori, așa cum se arată în captură de ecran.

Pentru a vedea o listă detaliată a ceea ce se va întâmpla în timpul procesului de instalare, tastați y și apăsați pe Enter. Dacă sunteți mulțumit și gata să continuați, introduceți y și apăsați pe Enter.

Scriptul va invoca comanda sudo de multe ori după cum este necesar. Trebuie să îi permiteți să folosească sudo răspunzând la y și apăsând Enter.

Programul de instalare va rula apoi câteva teste și va genera un raport de configurare Nix, va crea utilizatori de compilare între ID-urile de utilizator 30001 și 30032 și un grup cu ID-ul de grup 30000. Introduceți y pentru a continua când vi se solicită. Acesta va configura grupurile de compilare pentru diferiți utilizatori de compilare, va face structura de bază a directoarelor Nix.

Acesta va modifica fișierul /etc/bashrc (și /etc/zshrc pentru zsh), dacă există. Rețineți că mai întâi face copii de rezervă pentru fișierele menționate cu o extensie .backup-before-nix, iar programul de instalare creează și fișierul /etc/profile.d/nix.sh.

Instalatorul va configura, de asemenea, serviciul nix-daemon și serviciul socket nix-daemon, încarcă unitatea systemd pentru nix-daemon și pornește cele două servicii menționate mai sus.

Odată ce instalarea este finalizată, trebuie să deschideți o nouă fereastră de terminal pentru a începe să utilizați Nix. Ca alternativă, închideți și redeschideți shell-ul pentru a aplica modificările recente. Apoi, sursă fișierul /etc/profile.d/nix.sh (deoarece nu este un fișier de pornire shell, deschiderea unui nou shell nu îl va sursa).

$ source /etc/profile.d/nix.sh

Apoi, rulați următoarea comandă pentru a descărca unele căi de pe site-ul web oficial al proiectului, necesare pentru ca Nix să funcționeze. După ce toate căile sunt descărcate și copiate în locațiile corecte, veți vedea un rezumat al tipului de instalare a sistemului și nix, așa cum se arată în captură de ecran.

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

Cum se utilizează Nix Package Manager în Linux

Sub Nix, gestionarea pachetelor este realizată de utilitarul nix-env. Este folosit pentru a instala, actualiza și șterge/șterge pachete și pentru a interoga ce pachete sunt instalate sau sunt disponibile pentru instalare.

Toate pachetele sunt localizate într-un canal Nix, care este o adresă URL care indică un depozit care cuprinde atât o colecție de expresii Nix, cât și un pointer către un cache binar.

Canalul implicit este Nixpkgs, iar lista canalelor abonate este stocată în ~/.nix-channels, le puteți lista folosind următoarea comandă (fără ieșire înseamnă că nu există canale) .

$ nix-channel --list

Pentru a adăuga canalul Nix, utilizați următoarea comandă.

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

Înainte de a instala orice pachet, începeți prin a actualiza canalul Nix; acest lucru este similar cu rularea apt update sub managerul de pachete APT.

$ nix-channel --update

Puteți întreba ce pachete sunt disponibile pentru instalare folosind următoarea comandă.

$ nix-env -qa

În acest exemplu, vom instala grep pentru a găsi că pachetul este disponibil pentru a fi instalat așa cum se arată.

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

Pentru a instala un pachet, utilizați următoarea comandă specificând versiunea pachetului, de exemplu apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Pe sistemul local, Nix stochează pachete în magazinul Nix, care este implicit directorul /nix/store, unde fiecare pachet are propriul său subdirector unic. De exemplu, pachetele apache-tomcat sunt stocate în:

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

În această cale, caracterele aleatoare 95gmgnxlrcpkhlm00fa5ax8kvd6189py sunt un identificator unic pentru pachet care ia în considerare toate dependențele acestuia.

Puteți lista pachetele instalate cu următoarea comandă.

$ nix-env -q

Pentru a actualiza pachetul apache-tomcat, puteți utiliza comutatorul de actualizare -u după cum se arată.

$ nix-env -u apache-tomcat

Dacă doriți să eliminați/ștergeți apache-tomcat, utilizați indicatorul -e. Aici, un pachet nu este șters imediat din sistem, este doar redat neutilizat. Acest lucru este util deoarece doriți să faceți o derulare înapoi sau ar putea fi în profilurile altor utilizatori.

$ nix-env -e apache-tomcat

După ce eliminați un pachet, puteți colecta gunoiul cu utilitarul nix-collect-garbage.

$ nix-collect-garbage

Cum să eliminați Nix Package Manager în Linux

Pentru a dezinstala Nix, eliminați toate fișierele legate de Nix dintr-o dată.

$ 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

Pe sistemele cu systemd, rulați următoarele comenzi pentru a opri toate serviciile legate de nix și pentru a le dezactiva.

$ 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

În plus, trebuie să eliminați orice referință la Nix din aceste fișiere: /etc/profile, /etc/bashrc și /etc/zshrc >.

Pentru mai multe informații, consultați paginile de manual ale utilitaților de mai sus pe care le-am analizat.

$ man nix-channel
$ man nix-env

Puteți găsi documentația Nix Package Manager pe site-ul web al proiectului: https://nixos.org/nix/.

rezumat

Nix este un manager de pachete pur funcțional, conceput pentru gestionarea de pachete fiabilă și reproductibilă. Oferă un concept interesant de management al pachetelor, foarte diferit de instrumentele utilizate în mod obișnuit în Linux, cum ar fi APT și multe altele.

În acest articol, am arătat cum să instalați nix în modul multi utilizator și am discutat cum să faceți gestionarea pachetelor cu Nix. Împărtășiți-vă gândurile cu noi sau adresați-vă întrebări prin intermediul formularului de comentarii de mai jos. În cele din urmă, într-un articol viitor, vom explica mai multe comenzi de gestionare a pachetelor Nix. Până atunci, rămâi conectat.