Nix - Oluṣakoso Package Iṣẹ-ṣiṣe Mimọ fun Lainos


Nix jẹ alagbara, eto iṣakoso package iṣiṣẹ iṣẹ-ṣiṣe ti a ṣe apẹrẹ fun igbẹkẹle ati iṣakoso package ti o le ṣe atunṣe, ti a tu silẹ labẹ awọn ofin ti GNU LGPLv2.1. O jẹ eto iṣakoso package akọkọ ni NixOS, pinpin Lainos ti o mọ diẹ.

Nix nfunni awọn iṣagbega atomiki ati awọn ifẹhinti pada, awọn ẹya pupọ ti fifi sori ẹrọ package, iṣakoso package olumulo pupọ ati iṣeto ailagbara ti awọn agbegbe kọ fun package kan, laibikita iru awọn ede siseto ati awọn irinṣẹ ti olugbala kan nlo.

Labẹ Nix, a kọ awọn idii lati ede idii iṣẹ ti a pe ni\"Awọn ifihan Nix" .Ọna iṣẹ-ṣiṣe yii si iṣakoso iṣakojọpọ ṣe onigbọwọ pe fifi sori ẹrọ tabi igbesoke ọkan ko le fọ awọn idii miiran.

Nix tun ni atilẹyin ọpọlọpọ-olumulo, eyiti o tumọ si pe awọn olumulo eto deede (tabi ti kii ṣe anfani) awọn olumulo le fi awọn idii sori ẹrọ ni aabo ati pe olumulo kọọkan ni idanimọ nipasẹ profaili kan (ikojọpọ awọn idii ninu ile itaja Nix ti o han ni PATH ti olumulo).

Ni ọran ti olumulo kan ba ti fi package sii, ti olumulo miiran ba gbiyanju lati fi package kanna sori ẹrọ, package naa ko ni kọ tabi ṣe igbasilẹ lati igba keji.

Lọwọlọwọ o ṣe atilẹyin Linux (i686, x86_64) ati Mac OS X (x86_64). Bibẹẹkọ, o ṣee ṣee gbe, o le gbiyanju lori ọpọlọpọ awọn iru ẹrọ ti o ṣe atilẹyin awọn okun POSIX ati pe o ni akopọ C ++ 11.

Ninu nkan yii, a yoo fihan bi a ṣe le fi sori ẹrọ (ni ipo olumulo pupọ) ati lo oluṣakoso package Nix ni Lainos. A yoo jiroro diẹ ninu awọn iṣẹ ṣiṣe iṣakoso package ni ibatan si awọn irinṣẹ ti a lo nigbagbogbo.

Bii o ṣe le Fi Oluṣakoso Package Nix sori Linux

A yoo fi sori ẹrọ ẹya tuntun ti Nix (v2.1.3 ni akoko kikọ) ni ipo olumulo pupọ. Ni akoko, iwe afọwọkọ ti a pese silẹ ti o le ṣiṣẹ lati ikarahun rẹ bi olumulo deede nipa lilo pipaṣẹ curl atẹle lori eto rẹ.

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

Ṣiṣe pipaṣẹ ti o wa loke yoo ṣe igbasilẹ bọọlu afẹsẹgba nix binary tuntun, ati pe iwọ yoo de sinu iboju fifi sori ẹrọ nix ti ọpọlọpọ-olumulo bi o ṣe han ninu sikirinifoto.

Lati wo atokọ alaye ti ohun ti yoo ṣẹlẹ lakoko ilana fifi sori ẹrọ, tẹ y ki o tẹ Tẹ. Ti o ba ni itẹlọrun ati ṣetan lati tẹsiwaju, tẹ y ki o tẹ Tẹ.

Iwe afọwọkọ naa yoo bẹbẹ pipaṣẹ sudo ni ọpọlọpọ awọn igba bi o ṣe nilo. O nilo lati gba laaye lati lo sudo nipa didahun y ati kọlu Tẹ.

Olupilẹṣẹ naa yoo ṣiṣe awọn idanwo diẹ ki o ṣe agbekalẹ iroyin atunto Nix, ṣẹda awọn olumulo ti o kọ laarin awọn ID olumulo 30001 ati 30032, ati ẹgbẹ kan pẹlu ID ẹgbẹ 30000. Tẹ y sii lati tẹsiwaju nigbati o ba ṣetan. Yoo ṣeto awọn ẹgbẹ kikọ fun awọn olumulo agbekọja oriṣiriṣi, ṣe ilana ilana ipilẹ ti Nix.

Yoo ṣe atunṣe faili/ati be be lo/bashrc, (ati/ati be be lo/zshrc fun zsh) ti wọn ba wa tẹlẹ. Akiyesi pe o kọkọ ṣe afẹyinti awọn faili ti a mẹnuba pẹlu itẹsiwaju .backup-before-nix ati olupilẹṣẹ tun ṣẹda faili /etc/profile.d/nix.sh.

Olupilẹṣẹ yoo tun ṣeto iṣẹ nix-daemon ati iṣẹ iho nix-daemon, awọn ẹrù eto eto fun nix-daemon ati bẹrẹ awọn iṣẹ meji ti a ti sọ tẹlẹ.

Lọgan ti fifi sori ẹrọ ba pari, o nilo lati ṣii window ebute tuntun lati bẹrẹ lilo Nix. Ni omiiran, sunmọ ati tun ṣii ikarahun rẹ lati lo awọn ayipada to ṣẹṣẹ. Lẹhinna orisun faili /etc/profile.d/nix.sh (nitori kii ṣe faili ibẹrẹ ikarahun kan, ṣiṣi ikarahun tuntun kii yoo ṣe orisun rẹ).

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

Nigbamii, ṣiṣe aṣẹ atẹle lati ṣe igbasilẹ diẹ ninu awọn ọna lati oju opo wẹẹbu iṣẹ akanṣe osise, ti o nilo fun Nix lati ṣiṣẹ. Lẹhin ti a gba gbogbo awọn ọna ati daakọ si awọn ipo to tọ, iwọ yoo wo eto kan ati akopọ iru fifi sori ẹrọ nix bi o ṣe han ninu sikirinifoto.

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

Bii o ṣe le Lo Nix Package Manager ni Linux

Labẹ Nix, iṣakoso package jẹ ṣiṣe nipasẹ iwulo nix-env. O ti lo lati fi sori ẹrọ, igbesoke, ati yọ/paarẹ awọn idii, ati lati beere kini awọn idii ti fi sori ẹrọ tabi wa fun fifi sori ẹrọ.

Gbogbo awọn idii wa ni ikanni Nix kan, eyiti o jẹ URL ti o tọka si ibi-ipamọ ti o ni awọn akopọ mejeeji ti awọn ifihan Nix ati ijuboluwo si kaṣe alakomeji kan.

Ikanni aiyipada ni Nixpkgs ati atokọ ti awọn ikanni ti a ṣe alabapin ti wa ni fipamọ ni awọn ikanni ~/.nix, o le ṣe atokọ wọn nipa lilo pipaṣẹ atẹle (ko si iṣejade tumọ si ko si awọn ikanni).

$ nix-channel --list

Lati ṣafikun ikanni Nix, lo aṣẹ atẹle.

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

Ṣaaju ki o to fi awọn idii eyikeyi sii, bẹrẹ nipa mimu imudojuiwọn ikanni Nix; eyi jẹ iru si ṣiṣe imudojuiwọn apt labẹ oluṣakoso package APT.

$ nix-channel --update

O le beere kini awọn idii ti o wa fun fifi sori ẹrọ nipa lilo pipaṣẹ atẹle.

$ nix-env -qa

Ninu apẹẹrẹ yii, a yoo fi grep sori ẹrọ lati wa pe package wa lati fi sori ẹrọ bi o ti han.

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

Lati fi package sii, lo aṣẹ atẹle nipa sisọ ẹya package, fun apẹẹrẹ apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Lori eto agbegbe, Nix n ṣajọ awọn idii ni ile itaja Nix, eyiti o jẹ nipa aiyipada itọsọna/nix/ile itaja, nibiti package kọọkan ni ipin-itọsọna alailẹgbẹ tirẹ. Fun apeere, awọn idii apache-tomcat ti wa ni fipamọ ni:

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

Ni ọna yii, awọn ohun kikọ laileto 95gmgnxlrcpkhlm00fa5ax8kvd6189py jẹ idanimọ alailẹgbẹ fun package ti o mu iroyin ni gbogbo awọn igbẹkẹle rẹ.

O le ṣe atokọ awọn idii ti a fi sii pẹlu aṣẹ atẹle.

$ nix-env -q

Lati ṣe igbesoke package apache-tomcat, o le lo -u igbesoke igbesoke bi o ti han.

$ nix-env -u apache-tomcat

Ti o ba fẹ yọkuro/paarẹ apache-tomcat, lo Flag -e . Nibi, a ko paarẹ kan kuro ninu eto lẹsẹkẹsẹ, o jẹ ki a sọ di asan. Eyi wulo nitori o fẹ ṣe ifasẹyin, tabi o le wa ninu awọn profaili ti awọn olumulo miiran.

$ nix-env -e apache-tomcat

Lẹhin yiyọ package kan, o le ṣe diẹ gbigba idọti pẹlu iwulo idoti nix-collect-.

$ nix-collect-garbage

Bii o ṣe le Yọ Oluṣakoso Package Nix ni Lainos

Lati yọkuro Nix, yọ gbogbo awọn faili ti o jọmọ nix kuro ni ẹẹkan.

$ 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

Lori awọn eto pẹlu siseto, ṣiṣe awọn ofin wọnyi lati da gbogbo awọn iṣẹ ti o jọmọ nix duro ki o mu wọn ṣiṣẹ.

$ 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

Ni afikun, o nilo lati yọ awọn itọkasi eyikeyi si Nix ninu awọn faili wọnyi:/ati be be/profaili,/ati be be/bashrc, ati/ati be be/zshrc.

Fun alaye diẹ sii, wo awọn oju-iwe eniyan ti awọn ohun elo ti o wa loke ti a ti wo.

$ man nix-channel
$ man nix-env

O le wa awọn iwe Oluṣakoso Package Nix ni oju opo wẹẹbu iṣẹ akanṣe: https://nixos.org/nix/.

Nix jẹ oluṣakoso package iṣẹ-ṣiṣe odasaka ti a ṣe apẹrẹ fun igbẹkẹle ati iṣakoso package ti o ṣe atunṣe. O pese imọran ti o nifẹ si ti iṣakoso package, iyatọ pupọ si awọn irinṣẹ ti a lo ni igbagbogbo ni Linux bii APT, ati ọpọlọpọ awọn omiiran.

Ninu àpilẹkọ yii, a fihan bi a ṣe le fi sori ẹrọ nix ni ipo olumulo pupọ ati ṣe ijiroro bii o ṣe ṣe iṣakoso package pẹlu Nix. Pin awọn ero rẹ pẹlu wa tabi beere eyikeyi awọn ibeere nipasẹ fọọmu asọye ni isalẹ. Ni ikẹhin, ninu nkan ti n bọ, a yoo ṣe alaye diẹ sii awọn aṣẹ iṣakoso package Nix. Titi di igba naa, wa ni asopọ.