Nix - Il-Maniġer tal-Pakketti Purament Funzjonali għal Linux


Nix hija sistema qawwija ta' ġestjoni ta' pakketti purament funzjonali mfassla għal ġestjoni ta' pakketti affidabbli u riproduċibbli, rilaxxata taħt it-termini tal-GNU LGPLv2.1. Hija s-sistema primarja tal-ġestjoni tal-pakketti f'NixOS, distribuzzjoni Linux inqas magħrufa.

Nix joffri titjib atomiku u rollbacks, verżjonijiet multipli ta 'installazzjoni ta' pakketti, ġestjoni ta 'pakketti multi-utent u setup mingħajr sforz ta' ambjenti ta 'bini għal pakkett, irrispettivament minn liema lingwi ta' programmar u għodod qed juża żviluppatur.

Taħt Nix, il-pakketti huma mibnija minn lingwa tal-pakkett funzjonali msejħa \espressjonijiet Nix. Dan l-approċċ funzjonali għall-ġestjoni tal-pakketti jiggarantixxi li l-installazzjoni jew it-titjib ta' pakkett wieħed ma jistax ikisser pakketti oħra.

Nix għandu wkoll appoġġ għal diversi utenti, li jimplika li l-utenti tas-sistema normali (jew mhux privileġġjati) jistgħu jinstallaw pakketti b'mod sigur u kull utent huwa identifikat minn profil (ġabra ta 'pakketti fil-maħżen Nix li jidhru fil-PATH tal-utent).

F'każ li utent wieħed ikun installat pakkett, jekk utent ieħor jipprova jinstalla l-istess pakkett, il-pakkett ma jinbenax jew jitniżżel għat-tieni darba.

Bħalissa jappoġġja Linux (i686, x86_64) u Mac OS X (x86_64). Madankollu, huwa pjuttost portabbli, tista 'tipprovaha fuq il-biċċa l-kbira tal-pjattaformi li jappoġġjaw il-ħjut POSIX u għandhom kompilatur C++11.

F'dan l-artikolu, ser nuru kif tinstalla (f'modalità multi user) u nuża l-maniġer tal-pakketti Nix fil-Linux. Se niddiskutu xi wħud mill-kompiti bażiċi tal-ġestjoni tal-pakketti fir-rigward tal-għodod użati b'mod komuni.

Kif tinstalla Nix Package Manager fil-Linux

Aħna se ninstallaw l-aħħar verżjoni ta 'Nix (v2.1.3 fil-ħin tal-kitba) fil-modalità multi user. Fortunatament, hemm skript ta 'installazzjoni lest lest li tista' tmexxi mill-qoxra tiegħek bħala utent normali billi tuża l-kmand tal-curl li ġej fis-sistema tiegħek.

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

It-tħaddim tal-kmand ta 'hawn fuq se tniżżel l-aħħar tarball binarju nix, u int se tinżel fl-iskrin ta' installazzjoni ta 'nix b'ħafna utenti kif muri fil-screenshot.

Biex tara lista dettaljata ta' x'se jiġri matul il-proċess ta' installazzjoni, ikteb y u agħfas Enter. Jekk inti sodisfatt u lest biex tkompli, ittajpja y u agħfas Enter.

L-iskrittura se tinvoka kmand sudo ħafna drabi kif meħtieġ. Trid tħalliha tuża sudo billi twieġeb y u tolqot Enter.

L-installatur imbagħad iwettaq ftit testijiet u jiġġenera rapport tal-konfigurazzjoni Nix, joħloq utenti tal-bini bejn l-IDs tal-utent 30001 u 30032, u grupp bl-ID tal-grupp 30000. Daħħal y biex tkompli meta tintalab. Se twaqqaf il-gruppi tal-bini għall-utenti tal-bini differenti, tagħmel l-istruttura tad-direttorju bażiku ta 'Nix.

Se timmodifika l-fajl /etc/bashrc, (u /etc/zshrc għall-zsh) jekk jeżistu. Innota li l-ewwel issostni l-fajls imsemmija b'estensjoni .backup-before-nix u l-installatur joħloq ukoll il-fajl /etc/profile.d/nix.sh.

L-installatur se jwaqqaf ukoll is-servizz nix-daemon u s-servizz tas-socket nix-daemon, jgħabbi l-unità systemd għal nix-daemon u jibda ż-żewġ servizzi msemmija hawn fuq.

Ladarba l-installazzjoni titlesta, għandek bżonn tiftaħ tieqa terminali ġdida biex tibda tuża Nix. Inkella, agħlaq u terġa' tiftaħ il-qoxra tiegħek biex tapplika l-bidliet riċenti. Imbagħad iġib il-fajl /etc/profile.d/nix.sh (minħabba li mhuwiex fajl tal-istartjar tal-qoxra, il-ftuħ ta 'qoxra ġdida mhux se jġibha).

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

Sussegwentement, mexxi l-kmand li ġej biex tniżżel xi mogħdijiet mill-websajt uffiċjali tal-proġett, meħtieġa biex topera Nix. Wara li l-mogħdijiet kollha jitniżżlu u jiġu kkupjati fil-postijiet korretti, se tara sommarju tat-tip ta 'installazzjoni tas-sistema u nix kif muri fil-screenshot.

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

Kif tuża Nix Package Manager fil-Linux

Taħt Nix, il-ġestjoni tal-pakketti ssir mill-utilità nix-env. Jintuża biex jinstalla, jaġġorna, u jneħħi/tħassar pakketti, u biex jistaqsi liema pakketti huma installati jew huma disponibbli għall-installazzjoni.

Il-pakketti kollha jinsabu f'kanal Nix, li huwa URL li jindika repożitorju li jinkludi kemm kollezzjonijiet ta' espressjonijiet Nix kif ukoll pointer għal cache binarju.

Il-kanal default huwa Nixpkgs u l-lista ta 'kanali sottoskritti huma maħżuna f'~/.nix-channels, tista' telenkahom billi tuża l-kmand li ġej (l-ebda output ma jfisser l-ebda kanal).

$ nix-channel --list

Biex iżżid il-kanal Nix, uża l-kmand li ġej.

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

Qabel ma tinstalla xi pakketti, ibda billi taġġorna l-kanal Nix; dan huwa simili għat-tħaddim ta' apt update taħt il-maniġer tal-pakkett APT.

$ nix-channel --update

Tista 'titlob liema pakketti huma disponibbli għall-installazzjoni billi tuża l-kmand li ġej.

$ nix-env -qa

F'dan l-eżempju, aħna se ninstallaw il-grep biex insibu li l-pakkett huwa disponibbli biex jiġi installat kif muri.

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

Biex tinstalla pakkett, uża l-kmand li ġej billi tispeċifika l-verżjoni tal-pakkett, pereżempju apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Fis-sistema lokali, Nix jaħżen pakketti fil-maħżen Nix, li huwa awtomatikament id-direttorju /nix/store, fejn kull pakkett għandu s-subdirettorju uniku tiegħu stess. Pereżempju, il-pakketti apache-tomcat jinħażnu fi:

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

F'din it-triq, il-karattri każwali 95gmgnxlrcpkhlm00fa5ax8kvd6189py huwa identifikatur uniku għall-pakkett li jqis id-dipendenzi kollha tiegħu.

Tista' telenka pakketti installati bil-kmand li ġej.

$ nix-env -q

Biex taġġorna l-pakkett apache-tomcat, tista' tuża l-iswiċċ tal-aġġornament -u kif muri.

$ nix-env -u apache-tomcat

Jekk trid tneħħi/tħassar apache-tomcat, uża l-bandiera -e. Hawnhekk, pakkett ma jitħassarx mis-sistema immedjatament, huwa biss magħmul mhux użat. Dan huwa utli għaliex trid tagħmel rollback, jew jista 'jkun fil-profili ta' utenti oħra.

$ nix-env -e apache-tomcat

Wara li tneħħi pakkett, tista 'tagħmel xi ġbir taż-żibel bl-utilità nix-collect-garbage.

$ nix-collect-garbage

Kif tneħħi Nix Package Manager fil-Linux

Biex tneħħi Nix, neħħi l-fajls kollha relatati ma 'nix f'daqqa.

$ 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

Fuq sistemi b'systemd, mexxi l-kmandi li ġejjin biex twaqqaf is-servizzi kollha relatati ma 'nix u tiddiżattivahom.

$ 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

Barra minn hekk, trid tneħħi kwalunkwe referenza għal Nix f'dawn il-fajls: /etc/profile, /etc/bashrc, u /etc/zshrc.

Għal aktar informazzjoni, ara l-paġni man tal-utilitajiet ta 'hawn fuq li ħares lejn.

$ man nix-channel
$ man nix-env

Tista' ssib id-dokumentazzjoni ta' Nix Package Manager fil-websajt tal-proġett: https://nixos.org/nix/.

Nix huwa maniġer tal-pakketti purament funzjonali ddisinjat għal ġestjoni affidabbli u riproduċibbli tal-pakketti. Jipprovdi kunċett interessanti ta 'ġestjoni tal-pakketti, distint ħafna għal għodod użati komunement fil-Linux bħal APT, u ħafna oħrajn.

F'dan l-artikolu, urejna kif tinstalla nix fil-modalità multi user u ddiskutejna kif tagħmel ġestjoni tal-pakketti ma 'Nix. Aqsam il-ħsibijiet tiegħek magħna jew staqsi kwalunkwe mistoqsija permezz tal-formola tal-kummenti hawn taħt. Fl-aħħar nett, f'artiklu li ġej, se nispjegaw aktar kmandi tal-ġestjoni tal-pakketti Nix. Sa dakinhar, ibqgħu konnessi.