Revision Hell
Aki ezt elolvassa, ismeri a Python kérdését, hogy a nyelv más változatát használja. Ez csak egy kirívó példa, amely még a felhasználókat is érinti. Ennek oka a régi remek projektek, amelyek leállították a szoftver karbantartását. Sok más helyzetben nagy ellenőrzésre van szüksége a futó és elérhető könyvtárak felett is. A C és C ++ programozás olyan könyvtárakat használ, amelyek fordításakor gyakran a pontos verziónak kell lenniük. Ellenkező esetben újraírja a szoftver olyan részeit, amelyekhez soha nem kívánt érinteni. Sok fejlesztő egy tárolót használ az összes könyvtárral, és minden más munka a gazdagépen történik.
A Nix Fix
Hogyan gondoskodik a nix erről a problémáról? Nos, az összes fájl egy hash-szal rendelkezik a pontos verzió azonosításához. A használni kívánt környezetet, majd kapcsolja össze a könyvtárral vagy futtassa azt, amelyet az aktuális helyzetéhez szeretne használni. Futó rendszer esetén ezután egy alkalmazás számos verzióját, sőt könyvtárakat is használhat. Amikor fejleszteni kíván, létrehoz egy konfigurációs fájlt, amely lefedi az aktuális projekt igényeit.
Konfigurációs fájlok
Ha a NixOS telepítve van, a konfiguráció.a nix az egész számítógépen irányítja a környezetét. Ezzel azt mondhatja, hogy a héja minden példányában vezérelheti. Függetlenül attól, hogy rendelkezik-e NixOS-szal, vagy bármilyen más disztribúciót futtat, használhat egy másik nix fájlt. A fájlt alapértelmezettnek hívják.nix alapértelmezés szerint. Ezzel létrehozhat egy olyan könyvtárstruktúrát, amelynek van egy adott környezete. A munkafolyamat az alapértelmezett nix fájl létrehozása annak tükrözése érdekében, hogy mit szeretne támogatni a környezete. Ezután változtassa meg a könyvtárat, és futtassa a nix-build szoftvert, majd futtassa a nix-shellt. Bármely nevet használhat a fájlhoz, ha megadja a parancssorban.
$ cd MyProject /$ nix-build # Egyszer, amikor valamit megváltoztattál.
$ nix-shell alapértelmezett.semmi
A nix-shell paramétere implicit lesz, de ha többet akarsz elhelyezni egy könyvtárban, használhatod a kapcsolót. A helyes értékek megadásával a környezet minden alkalommal ugyanaz, amikor elindítja a nix-shellt. Ha áthelyezi a nix fájlt, akkor bárhová ugyanezt tudja kapni! A nagy kérdés válik; mit tegyek a nix fájlokba?
A fájlok a Nix kifejezés nyelvét használják, ez szinte programozási nyelv.
Néhány példa
Az alábbiakban néhány példa segíthet. Még sok mindent megtehetsz a környezeted módosítása érdekében. Ez egy hosszú izgalmas út, de valószínűleg már a kezdetektől lelassítja. Mielőtt odaérne, használja mások kódját. Ez a lista rövid, ezért keressen ötleteket az interneten.
Piton
Amikor Python-projektet szeretne létrehozni, akkor általában virtuális környezeteket használ. A Nix esetében ez nem szükséges. Ehelyett létrehozhat egy héjat.nix fájl, amely deklarálja, hogy melyik verziót szeretné. Ennek legegyszerűbb módja a python38Full használata.
pkgs ? importpkgs.mkShell
A # nativeBuildInputs általában az, amire vágysz - a futtatáshoz szükséges eszközök
nativeBuildInputs = [pkgs.buildPackages.python38Teljes];
Ez összeállítja a Python 3 összes részével rendelkező környezetet.8, amely a NixOS-szal jön. Ha minimalizálni szeretné a környezetét, kiválaszthatja annak bizonyos részeit. A forráskódot távolról is hozzáadhatja a letöltési függvényekkel.
Python lombik
A webfejlesztés példája egy lombik. Ez egy nagyon hatékony csomag weboldalak készítésére, még az igazán összetett oldalakra is, különösebb erőfeszítés nélkül. Mivel a Flask egy népszerű keretrendszer, kész NixOS csomag is rendelkezésre áll hozzá. Az ennek felépítését vezérlő fájlt alapértelmezettnek nevezzük.semmi.
pkgs ? importpkgs.python38Packages.buildPythonApplication
pname = "NixApp";
src = ./.;
verzió = "0.1 ";
propagatedBuildInputs = [pkgs.python38Packages.lombik];
Amint láthatja, a nixpkgs-től vannak olyan csomagok, amelyek lefedik a lombikot. Ha valami mást szeretne használni, akkor a szögletes zárójelek közé írja be őket. Ez vonatkozik minden olyan csomagtípusra, amely szerepel a NixPkgs adattárban. Ha a csomag nem létezik, használjon letöltőt.
Python fejlesztés
Ha el akar indítani egy Python fejlesztői környezetet, akkor hozzáadhat a revíziónak és másoknak megfelelő csomagokat.
importtalpkgs-szal.python37Packages;
stdenv.mkDerivation
név = "python-devel";
req = ./ követelmények.txt;
építő = "$ bash / bin / bash";
beállítás = ./ setup_venv.SH;
buildInputs = [
python37Teljes
python37Packages.csipog
];
rendszer = beépített.jelenlegi rendszer;
shellHook = "
SOURCE_DATE_EPOCH = $ (dátum +% s)
";
A shellHook-ban a kettős aposztrófok (”) közé tetszőleges szkripteket tehet. Ismét gondoljon arra, ami már létezhet, mivel sok okos ember van odakint, akik már fejlesztenek a NixOS használatával.
JavaScript
A JavaScript, pontosabban a nodejs használatához használt standard verzió az alábbi nix szkript. Nevezze el a héjat.nix, és helyezze a projekt könyvtárába, majd kezdje a nix-shell paranccsal.
importtalstdenv.mkDerivation
név = "csomópont";
buildInputs = [
nodejs
];
shellHook = "
export PATH = "$ PWD / node_modules /.bin /: $ PATH "
";
Ez a legegyszerűbb, lehetséges trükk, bár sokkal több elérhető. Láthatja, hogyan adhat hozzá olyan szkriptet, amelyet egyébként manuálisan futtatna. Használja ezt körültekintően, és keressen teljes alternatívákat, mielőtt ezt megtenné.
Jupyter
Az alábbi szkript inicializálja a könyvtárat egy olyan funkciók tárolására, amelyeken a Jupyter futtatható. A többi csomag a statisztikákhoz és a gépi tanuláshoz készült. Az igényeinek megfelelően eltávolíthatja és hozzáadhatja.
importtal(
hadd
a python38-ban.withPackages (ps: ps-vel; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env
Konfigurációk
IDE-jéhez, szerkesztőjéhez vagy bármi máshoz valójában süthet a beállításaiban is. A fejlesztők számára a Vim és az Emacs lesz az első jelölt erre a szakra. A Vim saját pluginekkel rendelkezik, amelyek nixpkgs néven érhetők el.
Fetchers
A NixOS csomagjainak alapja a fájlok, amelyek a forrásokra mutatnak, és amelyekre a csomagok fordításához van szükség. Használhatja ezt, ha hiányzik egy csomag. Mindaddig, amíg megtalálja a forráscsomagot, egy letöltő segítségével telepítheti azt. A szokásos beolvasó lekéri a tarballokat, de fetchurl névre hallgat.
stdenv, fetchurl:stdenv.mkDerivation
név = "szia";
src = fetchurl
url = "http: // www.példa.org / hello.kátrány.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;
Használhatja úgy, ahogy a fenti kódban van. Önnek van fetchgit és más verziókezelő rendszere is. Ezen felül a főbb git szolgáltatásokat lefedik a fetchFromGitHub, a fetchFromGitLab és még sok mással. Mindezen beolvasókkal képesnek kell lennie megtalálni a NixOS számára kívánt csomagokat.
Következtetés
A NixOS használata valamivel több erőfeszítést igényel, mint a többi disztribúció. Ennek ellenére, ha szoftvert akar fejleszteni, akkor az erőfeszítés megéri. Tisztábban fogja tartani a fő rendszerét, és ugrálhat a projektek között anélkül, hogy problémás konfliktusokat okozna a környezetek között.