NixOS

NixOS razvojna okruženja

NixOS razvojna okruženja
Prilikom razvoja i pokretanja softvera, i mnogo puta, potreban vam je vrlo određen skup knjižnica u vašem okruženju. To postižete virtualnim okruženjima, spremnicima i drugim trikovima. Međutim, sve to vam nije nužno potrebno. Jedan od čestih slučajeva je kada programirate na Pythonu, morate birati između dvije velike verzije. To je uzrokovalo brojne glavobolje kako korisnicima tako i programerima. Sve to možete izbjeći ako su vaše knjižnice određene, posebno za jedno pokretanje. To može zvučati nemoguće ili nepotrebno, ali je vrlo povoljno za rijetke slučajeve upotrebe i razvoj.

Revizija Pakao

Svatko tko ovo pročita bit će upoznat s problemom Pythona korištenja druge verzije jezika. To je samo jedan eklatantan primjer u kojem su pogođeni čak i korisnici. To je zbog starih briljantnih projekata koji su prestali održavati softver. U mnogim drugim situacijama također vam je potrebna velika kontrola nad onim što se izvodi i koje su knjižnice dostupne. Programiranje na C i C ++ koristi knjižnice koje često trebaju biti točna verzija kada kompajlirate. U suprotnom ćete prepisivati ​​dijelove softvera koje nikada niste namjeravali dodirnuti. Mnogi programeri koriste spremnik sa svim knjižnicama, a svi ostali radovi događaju se na glavnom računalu.

Popravak Nix

Kako se nix brine o ovom problemu? Pa, oni imaju sve datoteke u trgovini s hashovima kako bi identificirali točnu verziju. Okruženje koje ćete koristiti, a zatim povezati s knjižnicom ili izvršiti, nešto je što biste željeli koristiti za svoju trenutnu situaciju. Za pokrenut sustav tada možete koristiti mnoge verzije aplikacije, pa čak i knjižnice. Kada se želite razvijati, stvarate konfiguracijsku datoteku koja pokriva potrebe vašeg trenutnog projekta.

Datoteke za konfiguraciju

Kada instalirate NixOS, konfiguracija.nix će kontrolirati vaše okruženje za cijelo računalo. Uz to, možete ga kontrolirati u svakoj instanci svoje ljuske. Bez obzira imate li NixOS ili pokrećete bilo koju drugu distribuciju, možete koristiti drugu nix datoteku. Datoteka se naziva zadana.nix prema zadanim postavkama. To možete koristiti za izradu strukture direktorija koja ima određeno okruženje. Tok rada je stvaranje zadane nix datoteke koja odražava ono što želite da vaše okruženje podržava. Zatim promijenite direktorij i pokrenite nix-build, nakon čega slijedi izvođenje nix-ljuske. Također možete koristiti bilo koje ime datoteke ako ga navedete u naredbenom retku.

$ cd MyProject /
$ nix-build # Jednom, kad ste nešto promijenili.
$ nix-ljuska zadana.nix

Podrazumijevat će se parametar za nix-ljusku, ali ako želite imati nekoliko u jednom direktoriju, tada možete koristiti prekidač. S postavljenim ispravnim vrijednostima, sada imate svoje okruženje isto svaki put kad pokrenete nix-shell. Ako premjestite nix datoteku, moći ćete je dobiti bilo gdje! Veliki problem postaje; što da stavim u nix datoteke?

Datoteke koriste Nixov izrazni jezik, to je gotovo programski jezik.

Nekoliko primjera

U nastavku slijedi nekoliko primjera koji vam mogu pomoći. Mnogo je više stvari koje možete učiniti za prilagodbu okoline. Ovo je dugo uzbudljivo putovanje, ali vjerojatno će vas usporiti od početka. Prije nego što stignete, upotrijebite kod drugih ljudi. Ovaj je popis kratak, pa potražite ideje na webu.

Piton

Kada želite stvoriti Python projekt, obično biste koristili virtualna okruženja. S Nixom to nije potrebno. Umjesto toga, možete stvoriti ljusku.nix datoteka koja deklarira koju verziju želite. Najjednostavniji način za to je korištenje python38Full.

pkgs ? uvoz :
pkgs.mkShell
# nativeBuildInputs je obično ono što želite - alati koji su vam potrebni za pokretanje
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Ovo sastavlja okruženje sa svim dijelovima Pythona 3.8 koji dolazi s NixOS-om. Ako želite minimalizirati svoje okruženje, možete odabrati njegove određene dijelove. Izvorni kod možete dodati i daljinski pomoću funkcija dohvaćanja.

Python tikvica

Primjer web razvoja je tikvica. To je vrlo moćan paket za izradu web stranica, čak i doista složenih, bez puno truda. Budući da je Flask popularan okvir, za njega postoji spreman NixOS paket. Datoteka za kontrolu gradnje za to naziva se zadana.nix.

pkgs ? uvoz :
pkgs.python38Paketovi.buildPythonApplication
pname = "NixApp";
src = ./.;
inačica = "0.1 ";
propagatedBuildInputs = [pkgs.python38Paketi.tikvica];

Kao što vidite, postoje paketi od nixpkgs koji pokrivaju tikvicu. Ako želite upotrijebiti nešto drugo, dodajte ih unutar uglatih zagrada. To vrijedi za sve vrste paketa koji su uključeni u spremište NixPkgs. Ako paket ne postoji, upotrijebite dohvatač.

Razvoj Pythona

Ako želite pokrenuti Python razvojno okruženje, dodajete pakete potrebne prema reviziji i drugima.

s uvozom ;
s pkgs.python37Paketovi;
stdenv.mkDerivacija
ime = "python-devel";
req = ./ zahtjevi.txt;
graditelj = "$ bash / bin / bash";
postava = ./ setup_venv.sh;
buildInputs = [
python37Full
python37Paketi.pip
];
sustav = ugrađeni.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (datum +% s)
";

U shellHook, između dvostrukih apostrofa (”), možete staviti sve skripte koje želite. Opet, razmislite o tome što bi moglo već postojati, jer postoji mnogo pametnih ljudi koji se već razvijaju koristeći NixOS.

JavaScript

Standardna verzija za upotrebu JavaScript-a, ili preciznije, nodejs-a, je nix skripta u nastavku. Nazovite ga ljuskom.nix i smjestite ga u svoj direktorij projekta, a zatim započnite s naredbom nix-shell.

s uvozom ;
stdenv.mkDerivacija
name = "čvor";
buildInputs = [
nodejs
];
shellHook = "
izvoz PATH = "$ PWD / node_modules /.kanta /: $ PATH "
";

Ovo je najjednostavniji, mogući trik, iako ih ima puno više. Možete vidjeti kako dodati skriptu koju biste inače pokrenuli ručno. Koristite ovo pažljivo i potražite potpune alternative prije nego što to učinite.

Jupyter

Skripta u nastavku inicijalizira direktorij za smještaj skupa funkcija u kojima možete pokrenuti Jupyter. Ostali su paketi za statistiku i strojno učenje. Također možete ukloniti i dodati prema svojim potrebama.

s uvozom ;
(
neka
u python38.withPackages (ps: s ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Konfiguracije

Za svoj IDE, uređivač ili bilo što drugo, u stvarnosti također možete ispeći u svojim postavkama. Za programere, vim i Emacs bit će prvi kandidati za ovu specijalizaciju. Vim ima svoj vlastiti dodatak dostupan kao nixpkgs.

Dohvatači

Temelj paketa u NixOS-u su datoteke koje upućuju na izvore i ono što je potrebno za sastavljanje paketa. To možete koristiti ako vam nedostaje paket. Sve dok možete pronaći izvorni paket, možete ga koristiti za dohvaćanje da biste ga instalirali. Standardni dohvatač dohvaća tarballe, ali se zove fetchurl.

stdenv, fetchurl:
stdenv.mkDerivacija
name = "zdravo";
src = fetchurl
url = "http: // www.primjer.org / zdravo.katran.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;

Možete ga koristiti onakvog kakav je u gornjem kodu. Također imate fetchgit i druge sustave za kontrolu verzija. Povrh svega, glavne git usluge pokrivene su fetchFromGitHub, fetchFromGitLab i mnogim drugim. Uz sve ove dohvatače, trebali biste moći pronaći bilo koji paket koji želite za NixOS.

Zaključak

Korištenje NixOS-a zahtijeva malo više napora od ostalih distribucija. Kad to kažete, ako želite razvijati softver, trud se isplati. Vaš ćete glavni sustav održavati čišćim i možete skakati između projekata bez stvaranja problematičnih sukoba između okolina.

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...