NixOS

Razvojna okolja NixOS

Razvojna okolja NixOS
Pri razvoju in zagonu programske opreme in večkrat potrebujete zelo natančen nabor knjižnic v svojem okolju. To dosežete z navideznimi okolji, vsebniki in drugimi triki. Vendar vam tega ni nujno treba. Eden najpogostejših primerov je, da ko programirate v Pythonu, morate izbirati med obema različicama. To je povzročilo veliko preglavic tako uporabnikom kot razvijalcem. Vsemu temu se lahko izognete, če so vaše knjižnice določene, zlasti za en zagon. To se morda sliši nemogoče ali nepotrebno, vendar je zelo primerno za redke primere uporabe in razvoj.

Revizija pekel

Kdor to prebere, bo seznanjen z vprašanjem Pythona o uporabi druge različice jezika. To je le en očiten primer, ko so prizadeti celo uporabniki. To je posledica starih briljantnih projektov, ki so prenehali vzdrževati programsko opremo. V mnogih drugih situacijah potrebujete tudi velik nadzor nad tem, kaj se izvaja in katere knjižnice so na voljo. Programiranje v C in C ++ uporablja knjižnice, ki morajo biti pogosto točne, ko prevajate. V nasprotnem primeru boste prepisali dele programske opreme, ki se je nikoli niste nameravali dotakniti. Mnogi razvijalci uporabljajo vsebnik z vsemi knjižnicami, vsa druga dela pa se odvijajo v gostiteljskem računalniku.

Nix Fix

Kako nix skrbi za to težavo? No, vse datoteke imajo v trgovini s zgoščenkami, da lahko natančno prepoznajo različico. Okolje, ki ga boste uporabili, nato povezavo do knjižnice ali izvajanje, je nekaj, kar bi želeli uporabiti za svoje trenutne razmere. Za delujoči sistem lahko nato uporabite številne različice aplikacije in celo knjižnice. Ko želite razviti, ustvarite konfiguracijsko datoteko, ki pokriva potrebe vašega trenutnega projekta.

Konfiguracijske datoteke

Ko imate nameščen NixOS, nastavitev.nix bo nadziral vaše okolje za celoten računalnik. S tem lahko nadzirate v vseh primerih lupine. Ne glede na to, ali imate NixOS ali zaženete katero koli drugo distribucijo, lahko uporabite drugo datoteko nix. Datoteka se imenuje privzeta.nix privzeto. To lahko uporabite za izdelavo strukture imenika, ki ima določeno okolje. Potek dela je ustvariti privzeto datoteko nix, ki odraža, kaj želite, da podpira vaše okolje. Nato spremenite imenik in zaženite nix-build, čemur sledi zagon lupine nix. Za datoteko lahko uporabite tudi katero koli ime, če ga določite v ukazni vrstici.

$ cd MyProject /
$ nix-build # Ko enkrat nekaj spremenite.
$ nix-lupina privzeto.nix

Naveden bo parameter za lupino nix, če pa želite imeti več v enem imeniku, lahko uporabite stikalo. Z nastavljenimi pravilnimi vrednostmi imate zdaj okolje enako, vsakič ko zaženete nix-shell. Če premaknete datoteko nix, jo boste lahko dobili kjer koli! Veliko vprašanje postane; kaj naj dam v datoteke nix?

Datoteke uporabljajo izrazni jezik Nix, je skoraj programski jezik.

Nekaj ​​primerov

Spodaj je nekaj primerov, ki vam lahko pomagajo. Obstaja še veliko stvari, s katerimi lahko prilagodite svoje okolje. To je dolgo razburljivo potovanje, ki pa vas bo verjetno upočasnilo od začetka. Preden pridete tja, uporabite kodo drugih ljudi. Ta seznam je kratek, zato poiščite ideje po spletu.

Python

Ko želite ustvariti projekt Python, običajno uporabljate navidezna okolja. Pri Nixu to ni potrebno. Namesto tega lahko ustvarite lupino.nix, ki določa, katero različico želite. Najpreprostejši način za to je uporaba python38Full.

pkgs ? uvoz :
pkgs.mkShell
# nativeBuildInputs je običajno tisto, kar želite - orodja, ki jih morate zagnati
nativeBuildInputs = [pkgs.buildPackages.python38Full];

To prevede okolje z vsemi deli Pythona 3.8, ki je priložen NixOS. Če želite svoje okolje čim bolj zmanjšati, lahko izberete njegove posebne dele. Izvorno kodo lahko dodate tudi na daljavo s funkcijami za prenos.

Python bučka

Primer spletnega razvoja je bučka. Gre za zelo zmogljiv paket za izdelavo spletnih strani, tudi zelo zapletenih, brez veliko truda. Ker je Flask priljubljen okvir, zanj obstaja pripravljen paket NixOS. Datoteka za nadzor gradnje za to se imenuje privzeta.nix.

pkgs ? uvoz :
pkgs.python38Paketi.buildPythonApplication
pname = "NixApp";
src = ./.;
različica = "0.1 ";
propagatedBuildInputs = [pkgs.python38Paketi.bučka];

Kot lahko vidite, obstajajo paketi iz nixpkgs, ki pokrivajo bučko. Če želite uporabiti nekaj drugega, jih dodate v oglate oklepaje. To velja za vse vrste paketov, ki so vključeni v skladišče NixPkgs. Če paket ne obstaja, uporabite prenosnik.

Razvoj Pythona

Če želite zagnati razvojno okolje Pythona, dodate pakete, ki jih potrebujete glede na revizijo in druge.

z uvozom ;
s pkgs.python37Paketi;
stdenv.mkDerivation
ime = "python-devel";
req = ./ zahteve.txt;
graditelj = "$ bash / bin / bash";
nastavitev = ./ setup_venv.sh;
buildInputs = [
python37Full
python37Paketi.pip
];
sistem = vgrajeni.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (datum +% s)
";

V shellHook lahko med dvojna apostrofa (”) vstavite poljubne skripte. Še enkrat pomislite, kaj bi lahko že obstajalo, saj obstaja veliko pametnih ljudi, ki se že razvijajo z uporabo NixOS-a.

JavaScript

Standardna različica za uporabo JavaScript ali natančneje nodejs je spodnji skript nix. Poimenuj jo lupina.nix in ga postavite v svoj imenik projekta, nato pa začnite z ukazom nix-shell.

z uvozom ;
stdenv.mkDerivation
name = "vozlišče";
buildInputs = [
nodejs
];
shellHook = "
izvoz PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

To je najpreprostejši, možen trik, čeprav je na voljo veliko več. Oglejte si, kako dodate skript, ki bi ga sicer zagnali ročno. Uporabite to previdno in poiščite popolne možnosti, preden to storite.

Jupyter

Spodnji skript inicializira imenik za gostovanje paketa funkcij, kjer lahko zaženete Jupyter. Drugi paketi so namenjeni statistiki in strojnemu učenju. Lahko tudi odstranite in dodate glede na vaše potrebe.

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

Konfiguracije

Za svoj IDE, urejevalnik ali kar koli drugega lahko v svojih nastavitvah tudi pečete. Za razvijalce bosta vim in Emacs prva kandidata za to specializacijo. Vim ima svoj nabor vtičnikov, ki so na voljo kot nixpkgs.

Izvlečki

Osnova paketov v NixOS so datoteke, ki kažejo na vire in tisto, kar je potrebno za sestavljanje paketov. To lahko uporabite, če vam manjka paket. Dokler lahko poiščete izvorni paket, ga lahko uporabite za prenos, da ga namestite. Standardni prenosnik pridobi tarballe, vendar se imenuje fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
ime = "zdravo";
src = fetchurl
url = "http: // www.primer.org / zdravo.katran.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;

Uporabite ga lahko tako, kot je v zgornji kodi. Imate tudi fetchgit in druge sisteme za nadzor različic. Poleg tega so glavne storitve git zajete s fetchFromGitHub, fetchFromGitLab in drugimi. Z vsemi temi prenosniki bi lahko našli kateri koli paket, ki ga želite za NixOS.

Zaključek

Uporaba NixOS zahteva nekoliko več truda kot druge distribucije. Če želite razviti programsko opremo, se trud splača. Vaš glavni sistem bo čistejši in boste lahko skakali med projekti, ne da bi povzročali težavne konflikte med okolji.

10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...
Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...