NixOS

Vývojová prostředí NixOS

Vývojová prostředí NixOS
Při vývoji a spouštění softwaru a mnohokrát potřebujete ve svém prostředí velmi konkrétní sadu knihoven. Toho dosáhnete pomocí virtuálních prostředí, kontejnerů a dalších triků. To však nutně nepotřebujete. Běžným případem je, když programujete v Pythonu, musíte si vybrat mezi dvěma velkými verzemi. To způsobilo mnoho bolesti hlavy pro uživatele i vývojáře. Tomu se můžete vyhnout, pokud jsou vaše knihovny určeny, zejména pro jeden běh. To může znít nemožné nebo zbytečné, ale je to velmi výhodné pro vzácné případy použití a vývoj.

Revizní peklo

Každý, kdo si to přečte, bude obeznámen s pythonovským problémem používání jiné verze jazyka. To je jen jeden do očí bijící příklad, kdy jsou ovlivněni i uživatelé. To je způsobeno starými brilantními projekty, které přestaly udržovat software. V mnoha dalších situacích také potřebujete velkou kontrolu nad tím, co běží a jaké knihovny jsou k dispozici. Programování v C a C ++ používá knihovny, které při kompilaci často musí být přesnou verzí. Jinak přepíšete části softwaru, kterých jste se nikdy neměli dotknout. Mnoho vývojářů používá kontejner se všemi knihovnami a všechny ostatní práce probíhají na hostitelském počítači.

Oprava Nix

Jak se nix o tento problém stará? Mají všechny soubory v obchodě s hashy, aby identifikovali přesnou verzi. Prostředí, které budete používat, pak propojte knihovnu nebo proveďte, je něco, co byste chtěli použít pro vaši aktuální situaci. Pro běžící systém pak můžete použít mnoho verzí aplikace a dokonce i knihoven. Pokud chcete vyvíjet, vytvoříte konfigurační soubor, který pokrývá potřeby vašeho aktuálního projektu.

Konfigurační soubory

Když máte nainstalovaný NixOS, konfigurace.nix bude ovládat vaše prostředí pro celý počítač. Díky tomu můžete ovládat v každém případě vašeho shellu. Bez ohledu na to, zda máte NixOS nebo používáte jinou distribuci, můžete použít jiný soubor nix. Soubor se nazývá výchozí.nix ve výchozím nastavení. Můžete to použít k vytvoření adresářové struktury, která má konkrétní prostředí. Pracovní postup spočívá v vytvoření výchozího souboru nix tak, aby odrážel to, co má vaše prostředí podporovat. Poté změňte adresář a spusťte nix-build, poté spusťte nix-shell. Můžete také použít libovolný název souboru, pokud jej zadáte na příkazovém řádku.

$ cd MyProject /
$ nix-build # Jednou, když jste něco změnili.
$ nix-shell výchozí.nix

Parametr pro nix-shell bude implikovaný, ale pokud chcete mít několik v jednom adresáři, můžete použít přepínač. Se správnými hodnotami nastavenými máte nyní své prostředí stejné pokaždé, když spustíte nix-shell. Pokud přesunete soubor nix, budete mít stejný přístup kdekoli! Velkým problémem se stává; co vložím do souborů nix?

Soubory používají výrazový jazyk Nix, je to téměř programovací jazyk.

Několik příkladů

Níže uvádíme několik příkladů, které vám mohou pomoci. Existuje mnoho dalších věcí, které můžete udělat, abyste vylepšili své prostředí. Toto je dlouhá vzrušující cesta, ale pravděpodobně vás od začátku zpomalí. Než se tam dostanete, použijte kód jiných lidí. Tento seznam je krátký, takže hledejte nápady na webu.

Krajta

Pokud chcete vytvořit projekt v Pythonu, obvykle byste používali virtuální prostředí. U Nix to není nutné. Místo toho můžete vytvořit shell.soubor nix, který deklaruje, kterou verzi chcete. Nejjednodušší způsob, jak to udělat, je použít python38Full.

pkgs ? import :
pkgs.mkShell
# nativeBuildInputs je obvykle to, co chcete - nástroje, které musíte spustit
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Toto kompiluje prostředí se všemi částmi Pythonu 3.8, který je dodáván s NixOS. Pokud chcete minimalizovat své prostředí, můžete si vybrat jeho konkrétní části. Zdrojový kód můžete také přidat na dálku pomocí funkcí načítání.

Pythonova baňka

Příkladem vývoje webu je baňka. Jedná se o velmi výkonný balíček pro vytváření webových stránek, i těch opravdu složitých, bez větší námahy. Vzhledem k tomu, že Flask je populární framework, je pro něj připraven balíček NixOS. Soubor, který řídí sestavení, se nazývá výchozí.nix.

pkgs ? import :
pkgs.python38Packages.buildPythonApplication
pname = "NixApp";
src = ./.;
verze = "0.1 ";
propagatedBuildInputs = [pkgs.python38Packages.baňka];

Jak vidíte, existují balíčky od nixpkgs, které pokrývají banku. Pokud chcete použít něco jiného, ​​přidejte je do hranatých závorek. To platí pro všechny typy balíčků, které jsou zahrnuty v úložišti NixPkgs. Pokud balíček neexistuje, použijte načtení.

Vývoj v Pythonu

Pokud chcete spustit vývojové prostředí Pythonu, přidáte balíčky, které potřebujete podle revize a dalších.

s importem ;
s pkgs.python37Packages;
stdenv.mkDerivation
name = "python-devel";
req = ./ požadavky.txt;
builder = "$ bash / bin / bash";
nastavení = ./ setup_venv.sh;
buildInputs = [
python37Full
python37Packages.pip
];
system = builtins.současný systém;
shellHook = "
SOURCE_DATE_EPOCH = $ (datum +% s)
";

Do shellHook můžete mezi dvojité apostrofy (”) vložit libovolné skripty, které se vám líbí. Znovu přemýšlejte o tom, co již může existovat, protože existuje mnoho chytrých lidí, kteří se již vyvíjejí pomocí NixOS.

JavaScript

Standardní verze pro použití JavaScriptu, přesněji nodejs, je níže uvedený skript nix. Pojmenujte to shell.nix a umístěte jej do adresáře projektu, poté začněte příkazem nix-shell.

s importem ;
stdenv.mkDerivation
name = "uzel";
buildInputs = [
nodejs
];
shellHook = "
export PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Toto je nejjednodušší možný trik, i když jich je k dispozici mnohem více. Můžete vidět, jak přidat skript, který byste jinak spustili ručně. Používejte to opatrně a než to uděláte, podívejte se na úplné alternativy.

Jupyter

Níže uvedený skript inicializuje adresář pro hostování dávky funkcí, kde můžete spustit Jupyter. Ostatní balíčky jsou pro statistiku a strojové učení. Můžete také odebrat a přidat podle svých potřeb.

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

Konfigurace

Ve skutečnosti můžete IDE, editor nebo cokoli jiného také upéct ve svém nastavení. Pro vývojáře budou vim a Emacs prvními kandidáty na tuto specializaci. Vim má vlastní sadu doplňků dostupných jako nixpkgs.

Naběrače

Základem balíčků v NixOS jsou soubory, které odkazují na zdroje a co je potřeba pro kompilaci balíčků. Můžete jej použít, pokud vám chybí balíček. Dokud najdete zdrojový balíček, můžete k jeho instalaci použít načtení. Standardní načítání načítá tarbally, ale jmenuje se fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
name = "ahoj";
src = fetchurl
url = "http: // www.příklad.org / ahoj.dehet.gz ";
sha256 = "111111111111111111111111111111111111111111111111111111";
;

Můžete jej použít tak, jak je to ve výše uvedeném kódu. Máte také fetchgit a další systémy pro správu verzí. Kromě toho jsou hlavní služby git pokryty fetchFromGitHub, fetchFromGitLab a dalšími. Se všemi těmito načítači byste měli být schopni najít jakýkoli balíček, který chcete pro NixOS.

Závěr

Používání NixOS vyžaduje trochu většího úsilí než jiné distribuce. Pokud však chcete vyvíjet software, stojí to za to. Udržujete svůj hlavní systém čistší a můžete přecházet mezi projekty, aniž byste vytvářeli problematické konflikty mezi prostředími.

V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...