Nix - Ang Purely Functional Package Manager alang sa Linux


Ang Nix usa ka gamhanan, lunsay nga functional nga sistema sa pagdumala sa pakete nga gidisenyo alang sa kasaligan ug reproducible nga pagdumala sa pakete, nga gipagawas ubos sa mga termino sa GNU LGPLv2.1. Kini ang nag-unang sistema sa pagdumala sa pakete sa NixOS, usa ka dili kaayo nailhan nga pag-apod-apod sa Linux.

Nagtanyag ang Nix og atomic upgrades ug rollbacks, daghang bersyon sa pag-install sa package, pagdumala sa package nga multi-user ug walay kahago nga pag-setup sa build environment para sa usa ka package, bisan unsa pa ang programming language ug tools nga gigamit sa developer.

Ubos sa Nix, ang mga pakete gihimo gikan sa usa ka functional nga package nga pinulongan nga gitawag og \Nix expressions. Kining functional nga pamaagi sa pagdumala sa package naggarantiya nga ang pag-instalar o pag-upgrade sa usa ka package dili makaguba sa ubang mga package.

Ang Nix usab adunay suporta sa multi-user, nga nagpasabot nga ang normal (o dili-pribilehiyo) nga mga tiggamit sa sistema mahimong luwas nga mag-install sa mga pakete ug ang matag user mailhan pinaagi sa usa ka profile (usa ka koleksyon sa mga pakete sa tindahan sa Nix nga makita sa PATH sa user).

Kung ang usa ka user nag-install ug package, kung ang laing user mosulay sa pag-install sa parehas nga package, ang package dili matukod o ma-download sa ikaduhang higayon.

Kini karon nagsuporta sa Linux (i686, x86_64) ug Mac OS X (x86_64). Bisan pa, kini medyo madaladala, mahimo nimong sulayan kini sa kadaghanan nga mga platform nga nagsuporta sa mga thread sa POSIX ug adunay usa ka C++ 11 compiler.

Niini nga artikulo, ipakita namon kung giunsa ang pag-install (sa multi user mode) ug paggamit sa Nix package manager sa Linux. Atong hisgotan ang pipila sa mga batakang buluhaton sa pagdumala sa pakete nga may kalabotan sa kasagarang gigamit nga mga himan.

Giunsa ang Pag-install sa Nix Package Manager sa Linux

Atong i-install ang pinakabag-o nga bersyon sa Nix (v2.1.3 sa panahon sa pagsulat) sa multi user mode. Maayo na lang, adunay usa ka andam nga giandam nga script sa pag-install nga mahimo nimong madagan gikan sa imong kabhang ingon usa ka normal nga tiggamit gamit ang pagsunod sa curl command sa imong sistema.

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

Ang pagpadagan sa sugo sa ibabaw mag-download sa pinakabag-o nga nix binary tarball, ug mapunta ka sa multi-user nix installation screen sama sa gipakita sa screenshot.

Aron matan-aw ang usa ka detalyado nga lista kung unsa ang mahitabo sa panahon sa proseso sa pag-install, i-type ang y ug pindota ang Enter. Kung natagbaw ka ug andam nga magpadayon, i-type ang y ug pindota ang Enter.

Ang script mogamit sa sudo nga mando sa daghang mga higayon kung gikinahanglan. Kinahanglan nimo nga tugutan kini nga mogamit sudo pinaagi sa pagtubag sa y ug pag-igo sa Enter.

Ang installer modagan dayon og pipila ka mga pagsulay ug makamugna og report sa Nix config, maghimo og build user tali sa user IDs 30001 ug 30032, ug usa ka grupo nga adunay group ID 30000. Isulod ang y aron magpadayon kung giaghat. Kini magbutang sa mga grupo sa pagtukod alang sa lainlaing mga tiggamit sa pagtukod, paghimo sa sukaranan nga istruktura sa direktoryo sa Nix.

Kini mag-usab sa file /etc/bashrc, (ug /etc/zshrc para sa zsh) kung anaa. Timan-i nga kini una nga nag-back up sa nahisgutang mga file gamit ang .backup-before-nix extension ug ang installer nagmugna usab sa file /etc/profile.d/nix.sh.

I-set up usab sa installer ang serbisyo sa nix-daemon ug serbisyo sa socket nix-daemon, i-load ang systemd unit para sa nix-daemon ug sugdan ang duha nga nahisgutan nga serbisyo.

Kung kompleto na ang pag-install, kinahanglan nimo nga ablihan ang usa ka bag-ong terminal window aron magsugod sa paggamit sa Nix. Sa laing paagi, isira ug ablihi pag-usab ang imong kabhang aron magamit ang bag-ong mga pagbag-o. Dayon i-source ang file /etc/profile.d/nix.sh (tungod kay dili kini shell startup file, ang pag-abli sa bag-ong shell dili maggikan niini).

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

Sunod, pagdagan ang mosunud nga mando aron ma-download ang pipila nga mga agianan gikan sa opisyal nga website sa proyekto, gikinahanglan alang sa Nix nga molihok. Human ma-download ang tanan nga mga agianan ug makopya sa husto nga mga lokasyon, imong makita ang usa ka sistema ug nix nga tipo sa pag-install nga summary sama sa gipakita sa screenshot.

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

Giunsa Paggamit ang Nix Package Manager sa Linux

Ubos sa Nix, ang pagdumala sa package gihimo sa nix-env utility. Gigamit kini sa pag-instalar, pag-upgrade, ug pagtangtang/pagpapas sa mga pakete, ug sa pagpangutana kon unsa nga mga pakete ang gi-install o anaa alang sa pag-instalar.

Ang tanan nga mga pakete nahimutang sa usa ka channel sa Nix, nga usa ka URL nga nagpunting sa usa ka repositoryo nga naglangkob sa usa ka koleksyon sa mga ekspresyon sa Nix ug usa ka pointer sa usa ka binary cache.

Ang default channel mao ang Nixpkgs ug ang listahan sa mga subscribed channels gitipigan sa ~/.nix-channels, mahimo nimo kining ilista gamit ang mosunod nga command (walay output nagpasabot nga walay channels).

$ nix-channel --list

Aron idugang ang Nix channel, gamita ang mosunod nga sugo.

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

Sa dili pa nimo i-install ang bisan unsang mga pakete, sugdi pinaagi sa pag-update sa channel sa Nix; Kini susama sa pagpadagan sa apt update ubos sa APT package manager.

$ nix-channel --update

Mahimo nimong pangutana kung unsang mga pakete ang magamit alang sa pag-install gamit ang mosunud nga mando.

$ nix-env -qa

Sa kini nga pananglitan, among i-install ang grep aron makit-an ang package nga magamit aron ma-install sama sa gipakita.

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

Sa pag-instalar sa usa ka pakete, gamita ang mosunod nga sugo pinaagi sa pagtino sa bersyon sa pakete, pananglitan apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Sa lokal nga sistema, gitipigan ni Nix ang mga pakete sa tindahan sa Nix, nga pinaagi sa default ang direktoryo sa /nix/store, diin ang matag pakete adunay kaugalingon nga talagsaon nga sub-direktoryo. Pananglitan, ang apache-tomcat nga mga pakete gitipigan sa:

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

Niini nga dalan, ang random nga mga karakter 95gmgnxlrcpkhlm00fa5ax8kvd6189py usa ka talagsaon nga identifier alang sa package nga nagkuha sa tanan nga dependency niini.

Mahimo nimong ilista ang mga naka-install nga pakete gamit ang mosunud nga mando.

$ nix-env -q

Aron ma-upgrade ang apache-tomcat package, mahimo nimong gamiton ang -u upgrade switch sama sa gipakita.

$ nix-env -u apache-tomcat

Kung gusto nimong tangtangon/papas ang apache-tomcat, gamita ang -e nga bandera. Dinhi, ang usa ka pakete dili mapapas dayon gikan sa sistema, kini gihubad nga wala magamit. Mapuslanon kini tungod kay gusto nimo nga maghimo usa ka rollback, o mahimo kini sa mga profile sa ubang mga tiggamit.

$ nix-env -e apache-tomcat

Human makuha ang usa ka pakete, mahimo nimong buhaton ang pipila ka koleksyon sa basura gamit ang nix-collect-garbage utility.

$ nix-collect-garbage

Giunsa Pagtangtang ang Nix Package Manager sa Linux

Aron ma-uninstall ang Nix, kuhaa ang tanan nga mga file nga may kalabutan sa nix sa usa ka lakaw.

$ 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

Sa mga sistema nga adunay systemd, padagana ang mosunud nga mga mando aron mapahunong ang tanan nga mga serbisyo nga may kalabotan sa nix ug i-disable kini.

$ 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

Dugang pa, kinahanglan nimong tangtangon ang bisan unsang mga pakisayran sa Nix sa kini nga mga file: /etc/profile, /etc/bashrc, ug /etc/zshrc.

Para sa dugang nga impormasyon, tan-awa ang man page sa mga utility sa ibabaw nga among gitan-aw.

$ man nix-channel
$ man nix-env

Makita nimo ang dokumentasyon sa Nix Package Manager sa website sa proyekto: https://nixos.org/nix/.

Ang Nix usa ka lunsay nga functional package manager nga gidisenyo alang sa kasaligan ug mabag-o nga pagdumala sa pakete. Naghatag kini usa ka makapaikag nga konsepto sa pagdumala sa pakete, lahi kaayo sa kasagarang gigamit nga mga himan sa Linux sama sa APT, ug daghan pa.

Sa kini nga artikulo, gipakita namon kung giunsa ang pag-install nix sa multi user mode ug gihisgutan kung giunsa ang pagdumala sa package sa Nix. Ipakigbahin ang imong mga hunahuna kanamo o pangutana sa bisan unsang pangutana pinaagi sa porma sa komento sa ubos. Sa katapusan, sa umaabot nga artikulo, ipasabut namon ang daghang mga mando sa pagdumala sa pakete sa Nix. Hangtud niana, magpabilin nga konektado.