NixOS

NixOS fejlesztői környezetek

NixOS fejlesztői környezetek
Szoftver fejlesztésekor és futtatásakor, és sokszor, a környezetének nagyon meghatározott könyvtárakra van szüksége. Ezt virtuális környezetekkel, tárolókkal és egyéb trükkökkel érheti el. Arra azonban nem feltétlenül van szükséged. Az egyik gyakori eset, amikor Python-ban programoz, akkor a két nagy verzió közül kell választania. Ez sok fejfájást okozott a felhasználóknak és a fejlesztőknek egyaránt. Mindezt elkerülheti, ha a könyvtárakat kijelöli, főleg egy futásra. Ez lehetetlennek vagy feleslegesnek hangozhat, de nagyon kényelmes ritka felhasználási esetek és fejlesztések esetén.

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 ? import :
pkgs.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 ? import :
pkgs.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.

importtal ;
pkgs-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.

importtal ;
stdenv.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.

A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...
5 legjobb arcade játék Linuxhoz
Manapság a számítógépek komoly gépek, amelyeket játékra használnak. Ha nem sikerül megszerezni az új magas pontszámot, akkor tudni fogja, mire gondolo...
Csata a Wesnothért 1.13.6 Megjelent a fejlesztés
Csata a Wesnothért 1.13.A múlt hónapban megjelent 6 a hatodik fejlesztési kiadás az 1-ben.13.x sorozat, és számos fejlesztést hajt végre, nevezetesen ...