Nix - Onye njikwa ngwugwu na-arụ ọrụ nke ọma maka Linux


Nix bụ usoro njikwa ngwugwu dị ike, na-arụ ọrụ nke ọma emebere maka njikwa ngwugwu a pụrụ ịdabere na ya na nke enwere ike imepụtaghachi, ewepụtara n'okpuru usoro GNU LGPLv2.1. Ọ bụ usoro njikwa ngwugwu bụ isi na NixOS, nkesa Linux amachaghị ama.

Nix na-enye nkwalite atọmịk na mpịakọta azụ, ọtụtụ ụdị nke nrụnye ngwugwu, njikwa ngwugwu ọtụtụ onye ọrụ na nrụsi mbọ ike iji wuo gburugburu maka ngwugwu, n'agbanyeghị asụsụ mmemme na ngwaọrụ onye nrụpụta na-eji.

N'okpuru Nix, a na-ewu ngwugwu site na asụsụ ngwugwu na-arụ ọrụ nke a na-akpọ\Okwu Nix Usoro a na-arụ ọrụ maka njikwa ngwugwu na-ekwe nkwa na ịwụnye ma ọ bụ ịkwalite otu ngwugwu enweghị ike imebi ngwugwu ndị ọzọ.

Nix nwekwara nkwado ọtụtụ ndị ọrụ, nke na-egosi na ndị ọrụ sistemu nkịtị (ma ọ bụ ndị na-enweghị ihe ùgwù) nwere ike ịwụnye ngwugwu na onye ọrụ ọ bụla site na profaịlụ (nchịkọta ngwugwu na ụlọ ahịa Nix nke na-apụta na PATH onye ọrụ).

Ọ bụrụ na otu onye ọrụ etinyela ngwungwu, ọ bụrụ na onye ọrụ ọzọ nwaa ịwụnye otu ngwugwu ahụ, a gaghị ewupụta ngwugwu ahụ ma ọ bụ budata ya nke ugboro abụọ.

Ọ na-akwado Linux ugbu a (i686, x86_64) na Mac OS X (x86_64). Agbanyeghị, ọ bụ obere ibugharị, ị nwere ike ịnwale ya n'ọtụtụ nyiwe na-akwado eriri POSIX ma nwee mkpokọta C ++ 11.

N'ime edemede a, anyị ga-egosi otu esi etinye (na ọnọdụ onye ọrụ ọtụtụ) ma jiri njikwa ngwugwu Nix na Linux. Anyị ga-atụle ụfọdụ n'ime isi ọrụ njikwa ngwugwu n'ihe metụtara ngwaọrụ ndị a na-ejikarị eme ihe.

Otu esi etinye onye njikwa ngwugwu Nix na Linux

Anyị ga-etinye ụdị Nix kachasị ọhụrụ (v2.1.3 n'oge ederede) na ọnọdụ onye ọrụ ọtụtụ. Ọ dabara nke ọma, enwere edemede nrụnye dị njikere nke ị nwere ike ịgba ọsọ site na shei gị dị ka onye ọrụ nkịtị site na iji iwu curl na sistemụ gị.

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

Ịgba iwu a dị n'elu ga-ebudata nix binary tarball kacha ọhụrụ, ị ga-abanyekwa na ihuenyo nrụnye nix multi-user dị ka egosiri na nseta ihuenyo.

Ka ilele ndepụta zuru ezu nke ihe ga-eme n'oge usoro nrụnye, pịnye y wee pịa Tinye. Ọ bụrụ na afọ juru gị ma dị njikere ịga n'ihu, pịnye y wee pịa Tinye.

Edemede a ga-akpọku sudo iwu ọtụtụ oge ka achọrọ. Ịkwesịrị ịhapụ ya ka ọ jiri sudo site na ịza y wee pịa Tinye.

Onye nrụnye ga-eme ule ole na ole wee mepụta akụkọ nhazi Nix, mepụta ndị ọrụ nrụpụta n'etiti ID onye ọrụ 30001 na 30032, yana otu nwere ID 30000. Tinye y ka ịga n'ihu mgbe kpaliri. Ọ ga-edobe otu ndị na-ewu ụlọ maka ndị ọrụ dị iche iche na-ewu ụlọ, mee nhazi ndekọ aha nke Nix.

Ọ ga-agbanwe faịlụ /etc/bashrc, (na /etc/zshrc maka zsh) ma ọ bụrụ na ha dị. Rịba ama na ọ na-ebu ụzọ kwado faịlụ ndị a kpọtụrụ aha na mgbakwunye .backup-before-nix na installer na-emepụtakwa faịlụ /etc/profile.d/nix.sh.

Onye nrụnye ahụ ga-edozikwa ọrụ nix-daemon na ọrụ socket nix-daemon, na-ebukwa sistemu sistemu maka nix-daemon wee malite ọrụ abụọ ahụ a kpọtụrụ aha n'elu.

Ozugbo echichi mechara, ịkwesịrị imepe windo ọnụ ọhụrụ ka ịmalite iji Nix. N'aka nke ọzọ, mechie ma meghee shei gị ka itinye mgbanwe ndị na-adịbeghị anya. Wee wepụta faịlụ ahụ /etc/profile.d/nix.sh (n'ihi na ọ bụghị faịlụ mmalite shei, imepe shei ọhụrụ agaghị enweta ya).

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

Na-esote, gbaa iwu a ka ibudata ụfọdụ ụzọ site na webụsaịtị ọrụ gọọmentị, achọrọ ka Nix rụọ ọrụ. Mgbe ebudatara ma depụtaghachi ụzọ niile na ebe ziri ezi, ị ga-ahụ usoro na ụdị nrụnye nix dị ka egosiri na nseta ihuenyo.

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

Otu esi eji Nix Package Manager na Linux

N'okpuru Nix, njikwa ngwugwu na-arụ ọrụ nix-env. A na-eji ya wụnye, kwalite, na wepụ/ihichapụ ngwugwu, yana ịjụ ajụjụ ihe ngwugwu arụnyere ma ọ bụ dị maka nrụnye.

Ngwunye niile dị na ọwa Nix, nke bụ URL nke na-arụtụ aka na ebe nchekwa nwere ma nchịkọta nke okwu Nix na ntụnye aka na cache ọnụọgụ abụọ.

Ọwa ndabara bụ Nixpkgs na ndepụta nke ọwa ndị debanyere aha na-echekwa na ~/.nix-channels, ị nwere ike depụta ha site na iji iwu na-esonụ (enweghị mmepụta pụtara enweghị ọwa).

$ nix-channel --list

Ka ịgbakwunye ọwa Nix, jiri iwu na-esonụ.

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

Tupu ị wụnye ngwugwu ọ bụla, malite site na imelite ọwa Nix; nke a yiri imelite apt update n'okpuru njikwa ngwugwu APT.

$ nix-channel --update

Ị nwere ike jụọ ajụjụ nke ngwugwu dị maka nwụnye site na iji iwu na-esonụ.

$ nix-env -qa

N'ihe atụ a, anyị ga-etinye grep ka ịchọta ngwugwu dị maka ịwụnye dị ka egosiri.

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

Iji wụnye ngwugwu, jiri iwu na-esonụ site na ịkọwapụta ụdị ngwugwu, dịka ọmụmaatụ apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Na usoro mpaghara, Nix na-echekwa ngwugwu na ụlọ ahịa Nix, nke bụ na ndabara/nix/akwụkwọ ndekọ aha, ebe ngwugwu ọ bụla nwere akwụkwọ ndekọ aha ya pụrụ iche. Dịka ọmụmaatụ, a na-echekwa ngwugwu apache-tomcat na:

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

N'ụzọ a, mkpụrụedemede 95gmgnxlrcpkhlm00fa5ax8kvd6189py bụ ihe nchọpụta pụrụ iche maka ngwugwu na-eburu n'uche dabere na ya niile.

Ị nwere ike depụta ngwugwu arụnyere na iwu na-esonụ.

$ nix-env -q

Iji kwalite ngwugwu apache-tomcat, ị nwere ike iji -u mgba ọkụ dị ka egosiri.

$ nix-env -u apache-tomcat

Ọ bụrụ na ịchọrọ iwepụ/hichapụ apache-tomcat, jiri ọkọlọtọ -e. N'ebe a, a naghị ehichapụ ngwugwu ozugbo na sistemụ ahụ, a na-eme ya naanị ka ejighi ya. Nke a bara uru n'ihi na ịchọrọ ịmegharịgharị, ma ọ bụ ọ nwere ike ịdị na profaịlụ nke ndị ọrụ ndị ọzọ.

$ nix-env -e apache-tomcat

Mgbe ewepụchara ngwugwu, ị nwere ike iji ngwa nix-anakọta-ihe mkpofu mee ihe mkpofu.

$ nix-collect-garbage

Otu esi ewepu Nix Package Manager na Linux

Iji wepụ Nix, wepụ faịlụ niile metụtara nix n'otu oge.

$ 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 sistemu nwere sistemu, mee iwu ndị a ka ịkwụsị ọrụ niile metụtara nix wee gbanyụọ ha.

$ 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

Na mgbakwunye, ịkwesịrị iwepu ntụaka ọ bụla na Nix na faịlụ ndị a: /etc/profile, /etc/bashrc, na /etc/zshrc.

Maka ozi ndị ọzọ, lee nwoke peeji nke utilities n'elu anyị lere anya.

$ man nix-channel
$ man nix-env

Ị nwere ike ịchọta akwụkwọ njikwa ngwugwu Nix na webụsaịtị ọrụ: https://nixos.org/nix/.

Nix bụ njikwa ngwugwu na-arụ ọrụ nke ọma emebere maka njikwa ngwugwu a pụrụ ịdabere na ya na nke enwere ike imepụtaghachi. Ọ na-enye echiche na-adọrọ mmasị banyere njikwa ngwugwu, dị nnọọ iche na ngwaọrụ ndị a na-ejikarị na Linux dị ka APT, na ọtụtụ ndị ọzọ.

N'isiokwu a, anyị gosipụtara otu esi etinye nix na ọnọdụ onye ọrụ multi ma kwurịta otu esi eme njikwa ngwugwu na Nix. Gwa anyị echiche gị ma ọ bụ jụọ ajụjụ ọ bụla site na ụdị nkọwa n'okpuru. N'ikpeazụ, n'ime edemede na-abịanụ, anyị ga-akọwakwu iwu njikwa ngwugwu Nix. Ruo mgbe ahụ, nọrọ na njikọ.