NixOS

Vývojové prostredia NixOS

Vývojové prostredia NixOS
Pri vývoji a používaní softvéru mnohokrát potrebujete vo svojom prostredí veľmi konkrétnu sadu knižníc. Dosiahnete to pomocou virtuálnych prostredí, kontajnerov a iných trikov. To všetko však nevyhnutne nepotrebujete. Jedným z bežných prípadov je, keď programujete v Pythone, musíte si vybrať z dvoch veľkých verzií. To spôsobilo veľa bolesti hlavy pre používateľov aj vývojárov. Tomuto všetkému sa môžete vyhnúť, ak sú vaše knižnice určené, najmä na jeden chod. Môže to znieť nemožné alebo zbytočné, ale je to veľmi výhodné pre zriedkavé prípady použitia a vývoj.

Revízne peklo

Každý, kto si to prečíta, bude oboznámený s problémom používania inej verzie jazyka v jazyku Python. Je to len jeden do očí bijúci príklad, kedy sú ovplyvnení aj používatelia. Môžu za to staré vynikajúce projekty, ktoré prestali udržiavať softvér. V mnohých iných situáciách tiež potrebujete veľkú kontrolu nad tým, čo beží a aké knižnice sú k dispozícii. Programovanie v jazykoch C a C ++ využíva knižnice, ktoré pri kompilácii musia často vyžadovať presnú verziu. V opačnom prípade budete znova písať časti softvéru, ktorých ste sa nikdy nemali v úmysle dotknúť. Mnoho vývojárov používa kontajner so všetkými knižnicami a všetky ďalšie práce prebiehajú na hostiteľskom počítači.

Nix Fix

Ako sa nix stará o tento problém? Všetky súbory majú v obchode s hashmi na identifikáciu presnej verzie. Prostredie, ktoré budete používať, potom prepojíte s knižnicou alebo spustíte, je prostredie, ktoré by ste chceli použiť pre svoju aktuálnu situáciu. Pre spustený systém potom môžete použiť mnoho verzií aplikácie a dokonca aj knižníc. Ak sa chcete vyvíjať, vytvorte konfiguračný súbor, ktorý pokryje potreby vášho aktuálneho projektu.

Konfiguračné súbory

Keď máte nainštalovaný NixOS, konfigurácia.nix bude riadiť vaše prostredie pre celý počítač. Vďaka tomu môžete ovládať všetky inštancie vášho shellu. Bez ohľadu na to, či máte NixOS alebo spustíte inú distribúciu, môžete použiť iný súbor nix. Súbor sa nazýva predvolený.predvolene nix. Môžete to použiť na vytvorenie adresárovej štruktúry, ktorá má konkrétne prostredie. Pracovným postupom je vytvoriť predvolený súbor nix tak, aby odrážal to, čo má vaše prostredie podporovať. Potom zmeňte adresár a spustite nix-build, potom spustite nix-shell. Môžete tiež použiť ľubovoľný názov súboru, ak ho zadáte v príkazovom riadku.

$ cd MyProject /
$ nix-build # Raz, keď ste niečo zmenili.
$ nix-shell predvolené.nix

Parameter pre nix-shell bude implicitný, ale ak chcete mať niekoľko v jednom adresári, môžete použiť prepínač. So správnymi hodnotami nastavenými máte teraz svoje prostredie rovnaké pri každom spustení programu nix-shell. Ak presuniete súbor nix, budete môcť dostať to isté kamkoľvek! Veľkým problémom sa stáva; čo vložím do súborov nix?

Súbory používajú výrazový jazyk Nix, je to takmer programovací jazyk.

Niekoľko príkladov

Ďalej uvádzame niekoľko príkladov, ktoré vám môžu pomôcť. Existuje mnoho ďalších vecí, ktoré môžete urobiť, aby ste vylepšili svoje prostredie. Toto je dlhá vzrušujúca cesta, ale pravdepodobne vás od začiatku spomalí. Skôr ako sa tam dostanete, použite kód iných ľudí. Tento zoznam je krátky, takže hľadajte nápady na webe.

Python

Ak chcete vytvoriť projekt v jazyku Python, zvyčajne by ste použili virtuálne prostredia. V prípade Nix to nie je potrebné. Namiesto toho môžete vytvoriť škrupinu.súbor nix, ktorý deklaruje, ktorú verziu chcete. Najjednoduchší spôsob, ako to urobiť, je použiť python38Full.

pkgs ? dovoz :
pkgs.mkShell
# nativeBuildInputs je zvyčajne to, čo chcete - nástroje, ktoré musíte spustiť
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Toto zostavuje prostredie so všetkými časťami Pythonu 3.8, ktorý je dodávaný so systémom NixOS. Ak chcete minimalizovať svoje prostredie, môžete si zvoliť jeho konkrétne časti. Svoj zdrojový kód môžete tiež pridať na diaľku pomocou funkcií načítania.

Pythonova banka

Príkladom vývoja webu je banka. Je to veľmi výkonný balík na vytváranie webových stránok, aj tých skutočne zložitých, bez veľkého úsilia. Pretože je Flask populárny rámec, existuje preň pripravený balík NixOS. Súbor na riadenie tohto zostavenia sa nazýva predvolený.nix.

pkgs ? dovoz :
pkgs.python38Packages.buildPythonApplication
pname = "NixApp";
src = ./.;
verzia = "0.1 ";
propagatedBuildInputs = [pkgs.python38Packages.banka];

Ako vidíte, existujú balíčky od nixpkgs, ktoré pokrývajú banku. Ak chcete použiť niečo iné, pridajte ich do hranatých zátvoriek. To platí pre všetky typy balíkov, ktoré sú obsiahnuté v úložisku NixPkgs. Ak balík neexistuje, použite načítanie.

Vývoj v Pythone

Ak chcete spustiť vývojové prostredie Pythonu, pridáte potrebné balíčky podľa revízie a ďalšie.

s dovozom ;
s pkgs.python37Packages;
stdenv.mkDerivation
name = "python-devel";
req = ./ požiadavky.TXT;
builder = "$ bash / bin / bash";
nastavenie = ./ setup_venv.sh;
buildInputs = [
python37Full
python37Packages.pip
];
system = builtins.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (dátum +% s)
";

Do shellHook môžete medzi dvojité apostrofy (”) vložiť ľubovoľné skripty, ktoré sa vám páčia. Znova premýšľajte o tom, čo už môže existovať, pretože existuje veľa inteligentných ľudí, ktorí sa už vyvíjajú pomocou systému NixOS.

JavaScript

Štandardná verzia na použitie JavaScriptu, presnejšie nodejs, je nižšie uvedený skript nix. Pomenujte to mušľa.nix a umiestnite ho do adresára projektu, potom začnite príkazom nix-shell.

s dovozom ;
stdenv.mkDerivation
meno = "uzol";
buildInputs = [
nodejs
];
shellHook = "
export PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Toto je najjednoduchší možný trik, aj keď je ich oveľa viac. Uvidíte, ako pridať skript, ktorý by ste inak spustili manuálne. Používajte to opatrne a skôr, ako to urobíte, hľadajte úplné alternatívy.

Jupyter

Nižšie uvedený skript inicializuje adresár na hostenie viacerých funkcií, kde môžete spustiť Jupyter. Ostatné balíčky sú určené na štatistiku a strojové učenie. Môžete tiež odstrániť a pridať podľa svojich potrieb.

s dovozom ;
(
nechajme
v python38.withPackages (ps: with ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandy seaborn toolz])
).env

Konfigurácie

Pre svoj IDE, editor alebo čokoľvek iné môžete skutočne piecť vo svojich nastaveniach. Pre vývojárov budú vim a Emacs prvými kandidátmi na túto špecializáciu. Vim má vlastnú sadu doplnkov dostupných ako nixpkgs.

Načítavače

Základom balíkov v NixOS sú súbory, ktoré smerujú na zdroje a čo je potrebné na kompiláciu balíkov. Môžete to použiť, ak vám chýba balík. Pokiaľ nájdete zdrojový balík, môžete ho nainštalovať pomocou načítača. Štandardné načítanie načítava tarbally, ale volá sa fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
meno = "ahoj";
src = fetchurl
url = "http: // www.príklad.org / ahoj.decht.gz ";
sha256 = "111111111111111111111111111111111111111111111111111111";
;

Môžete ho použiť tak, ako je to vo vyššie uvedenom kóde. Máte tiež fetchgit a ďalšie systémy na správu verzií. Okrem toho sú hlavné služby git pokryté programami fetchFromGitHub, fetchFromGitLab a ďalšími. So všetkými týmito načítavačmi by ste mali byť schopní nájsť akýkoľvek požadovaný balík pre NixOS.

Záver

Používanie NixOS vyžaduje trochu viac úsilia ako iné distribúcie. To znamená, že ak chcete vyvíjať softvér, stojí to za to. Váš hlavný systém bude stále čistejší a môžete preskakovať medzi projektmi bez vytvárania nepríjemných konfliktov medzi prostrediami.

Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...