Pārskatīšanas elle
Ikviens, kurš to lasa, būs iepazinies ar Python jautājumu par citas valodas versijas lietošanu. Tas ir tikai viens spilgts piemērs, kurā tiek ietekmēti pat lietotāji. Tas ir saistīts ar veciem izciliem projektiem, kas pārtrauca programmatūras uzturēšanu. Daudzās citās situācijās jums ir arī nepieciešama liela kontrole pār to, kas darbojas un kādas bibliotēkas ir pieejamas. Programmējot C un C ++, tiek izmantotas bibliotēkas, kurām apkopojot bieži jābūt precīzai versijai. Pretējā gadījumā jūs atkārtoti rakstīsit programmatūras daļas, kurām nekad nebija paredzēts pieskarties. Daudzi izstrādātāji izmanto konteineru ar visām bibliotēkām, un visi pārējie darbi notiek resursdatorā.
Nix Fix
Kā nix rūpējas par šo problēmu? Nu, viņiem ir visi faili veikalā ar jaukšanu, lai noteiktu precīzu versiju. Vide, kuru izmantosit, pēc tam izveidojiet saiti uz bibliotēku vai izpildiet, ir kaut kas tāds, ko vēlaties izmantot pašreizējā situācijā. Darbojošai sistēmai pēc tam varat izmantot daudzas lietojumprogrammas versijas un pat bibliotēkas. Ja vēlaties attīstīties, izveidojat konfigurācijas failu, kas aptver jūsu pašreizējā projekta vajadzības.
Konfigurācijas faili
Kad esat instalējis NixOS, konfigurācija.nix kontrolēs jūsu vidi visam datoram. Pateicoties tam, jūs varat to kontrolēt visos čaulas gadījumos. Neatkarīgi no tā, vai jums ir NixOS vai darbojas kāds cits izplatītājs, varat izmantot citu nix failu. Fails tiek saukts par noklusējumu.nix pēc noklusējuma. To var izmantot, lai izveidotu direktoriju struktūru, kurai ir noteikta vide. Darbplūsmas mērķis ir izveidot noklusējuma nix failu, lai atspoguļotu to, ko vēlaties, lai jūsu vide atbalstītu. Pēc tam mainiet direktoriju un palaidiet nix-build, pēc tam palaidiet nix-shell. Failam var izmantot arī jebkuru nosaukumu, ja to norādāt komandrindā.
$ cd MyProject /$ nix-build # Reiz, kad kaut ko esat mainījis.
noklusējuma $ nix-shell.nix
Tiks izteikts nix-shell parametrs, bet, ja vēlaties, lai vienā direktorijā būtu vairāki, tad varat izmantot slēdzi. Ja ir iestatītas pareizās vērtības, jūsu vide tagad ir vienāda katru reizi, kad sākat nix-shell. Pārvietojot nix failu, to varēsiet iegūt jebkurā vietā! Lielais jautājums kļūst; ko es ievietoju nix failos?
Failos tiek izmantota Nix izteiksmes valoda, tā ir gandrīz programmēšanas valoda.
Daži piemēri
Zemāk ir daži piemēri, kas jums var palīdzēt. Lai uzlabotu savu vidi, varat darīt vēl daudz citu lietu. Šis ir garš aizraujošs ceļojums, taču tas, iespējams, palēninās jūs no paša sākuma. Pirms jūs tur nokļūstat, izmantojiet citu personu kodu. Šis saraksts ir īss, tāpēc meklējiet idejas tīmeklī.
Python
Ja vēlaties izveidot Python projektu, parasti izmantojat virtuālās vides. Izmantojot Nix, tas nav nepieciešams. Tā vietā jūs varat izveidot čaulu.nix fails, kas paziņo, kuru versiju vēlaties. Vienkāršākais veids, kā to izdarīt, ir izmantot python38Full.
pkgs ? importētpkgs.mkShell
# nativeBuildInputs parasti ir tas, ko vēlaties - rīki, kas jums jāpalaiž
nativeBuildInputs = [pkgs.buildPackages.python38Full];
Tas apkopo vidi ar visām Python 3 daļām.8, kas nāk ar NixOS. Ja vēlaties samazināt savu vidi, varat izvēlēties tās konkrētās daļas. Jūs varat arī pievienot savu avota kodu attālināti, izmantojot ienesšanas funkcijas.
Python kolba
Tīmekļa izstrādes piemērs ir kolba. Tā ir ļoti spēcīga pakete, lai izveidotu tīmekļa lapas, pat patiešām sarežģītas, bez īpašām pūlēm. Tā kā kolba ir populārs ietvars, tam ir gatava NixOS pakete. Fails, kas kontrolē šī būvējuma izveidi, tiek saukts par noklusējumu.nix.
pkgs ? importētpkgs.python38Packages.buildPythonApplication
pname = "NixApp";
src = ./.;
versija = "0.1 ";
propagatedBuildInputs = [pkgs.python38Packages.kolba];
Kā redzat, ir nixpkgs iepakojumi, kas pārklāj kolbu. Ja vēlaties izmantot kaut ko citu, pievienojiet tos kvadrātiekavās. Tas attiecas uz visu veidu pakotnēm, kas ir iekļautas NixPkgs krātuvē. Ja pakete nepastāv, izmantojiet ienesēju.
Python izstrāde
Ja vēlaties sākt Python izstrādes vidi, pievienojiet nepieciešamās paketes atbilstoši pārskatīšanai un citām.
ar importuar pkgs.python37Packages;
stdenv.mkDerivation
nosaukums = "python-devel";
req = ./ prasības.txt;
celtnieks = "$ bash / bin / bash";
iestatīšana = ./ setup_venv.sh;
buildInputs = [
python37Pilnīgs
python37Packages.pip
];
sistēma = iebūvētie.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (datums +% s)
";
ShellHook, starp dubultajiem apostrofiem (”), varat ievietot visus skriptus, kas jums patīk. Atkal padomājiet par to, kas jau varētu pastāvēt, jo tur ir daudz gudru cilvēku, kas jau attīstās, izmantojot NixOS.
JavaScript
Standarta versija JavaScript vai precīzāk nodejs lietošanai ir zemāk esošais nix skripts. Nosauciet to apvalks.nix un ievietojiet to projekta direktorijā, pēc tam sāciet ar komandu nix-shell.
ar importustdenv.mkDerivation
nosaukums = "mezgls";
buildInputs = [
nodejs
];
shellHook = "
eksportēt PATH = "$ PWD / mezgla_moduļi /.bin /: $ PATH "
";
Tas ir vienkāršākais, iespējamais triks, lai gan to ir daudz vairāk. Jūs varat uzzināt, kā pievienot skriptu, kuru citādi palaistu manuāli. Pirms to izmantojiet uzmanīgi un meklējiet pilnas alternatīvas.
Jupyter
Zemāk esošais skripts inicializē direktoriju, lai mitinātu funkciju kopu, kurā var palaist Jupyter. Pārējās paketes paredzētas statistikai un mašīnmācībai. Jūs varat arī noņemt un pievienot atbilstoši savām vajadzībām.
ar importu(
ļaujiet
pitonā38.arPackages (ps: ar ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env
Konfigurācijas
Jūsu IDE, redaktoram vai jebkuram citam patiešām varat cept arī iestatījumos. Izstrādātājiem VIM un Emacs būs pirmie kandidāti uz šo specializāciju. Vim ir savs spraudņu komplekts, kas pieejams kā nixpkgs.
Fetchers
Paketes NixOS pamatā ir faili, kas norāda uz avotiem un to, kas nepieciešams pakotņu sastādīšanai. To var izmantot, ja trūkst paketes. Kamēr jūs varat atrast avota pakotni, tās instalēšanai varat izmantot ienesēju. Standarta ienesējs ienes patērētājus, bet tiek dēvēts par fetchurl.
stdenv, fetchurl:stdenv.mkDerivation
vārds = "sveiki";
src = fetchurl
url = "http: // www.piemērs.org / labdien.darva.gz ";
sha256 = "1111111111111111111111111111111111111111111111111111111111";
;
Jūs varat to izmantot tā, kā tas ir iepriekšminētajā kodā. Jums ir arī fetchgit un citas versiju kontroles sistēmas. Papildus tam galvenie git pakalpojumi ir pārklāti ar fetchFromGitHub, fetchFromGitLab un citiem. Izmantojot visus šos ienesējus, jums vajadzētu būt iespējai atrast jebkuru nepieciešamo paketi NixOS.
Secinājums
NixOS izmantošana prasa nedaudz vairāk pūļu nekā citi sadalījumi. Tomēr, ja vēlaties izstrādāt programmatūru, pūles ir tā vērts. Jūs uzturēsiet galveno sistēmu tīrāku un varēsit lēkāt starp projektiem, neradot traucējošus konfliktus starp vidēm.