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 ? uvozpkgs.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 ? uvozpkgs.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 uvozoms 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 uvozomstdenv.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.