NixOS

NixOSi arenduskeskkonnad

NixOSi arenduskeskkonnad
Tarkvara arendamisel ja käitamisel vajate oma keskkonnas väga kindlat teekide komplekti. Selle saavutate virtuaalsete keskkondade, konteinerite ja muude trikkidega. Seda kõike pole aga tingimata vaja. Üks tavaline juhtum on see, kui programmeerite Pythonis, peate valima kahe suure versiooni vahel. See on põhjustanud palju peavalu nii kasutajatele kui ka arendajatele. Kõigest sellest saate hoiduda, kui teie teegid on määratud, eriti üheks jooksuks. See võib tunduda võimatu või mittevajalik, kuid see on väga mugav harvaesinevatel juhtudel ja arendamiseks.

Revisiooni põrgu

Igaüks, kes seda loeb, on tuttav Pythoni probleemiga kasutada keelt erinevas versioonis. See on vaid üks silmatorkav näide, kus see mõjutab isegi kasutajaid. Selle põhjuseks on vanad geniaalsed projektid, mis on tarkvara hooldamise lõpetanud. Paljudes muudes olukordades vajate ka suurt kontrolli selle üle, mis töötab ja millised teegid on saadaval. Programmeerimine C- ja C ++ -funktsioonides kasutab teeke, mis kompileerimisel peavad sageli olema täpsed. Vastasel juhul kirjutate uuesti tarkvara osad, mida te ei kavatsenud puudutada. Paljud arendajad kasutavad konteinerit kõigi raamatukogudega ja kõik muud tööd toimuvad hostarvutis.

Nix Fix

Kuidas nix selle probleemi eest hoolitseb? Noh, täpse versiooni tuvastamiseks on neil poes kõik failid räsidega. Keskkond, mida kavatsete kasutada, seejärel linkige teeki või käivitage, on midagi, mida soovite oma praeguses olukorras kasutada. Töötava süsteemi jaoks saate seejärel kasutada paljusid rakenduse versioone ja isegi teeke. Kui soovite areneda, loote konfiguratsioonifaili, mis katab teie praeguse projekti vajadused.

Konfiguratsioonifailid

Kui NixOS on installitud, siis konfiguratsioon.nix juhib teie keskkonda kogu arvuti ulatuses. Seda öeldes saate seda juhtida oma kesta igas eksemplaris. Sõltumata sellest, kas teil on NixOS või teil on mõni muu levitamine, võite kasutada teist nix-faili. Faili nimetatakse vaikimisi.nix vaikimisi. Selle abil saate luua kataloogikonstruktsiooni, millel on kindel keskkond. Töövoo eesmärk on luua vaikefail nix, mis kajastaks seda, mida soovite, et teie keskkond toetaks. Seejärel muutke kataloogi ja käivitage nix-build, millele järgneb nix-shell. Faili jaoks võite kasutada ka mis tahes nime, kui määrate selle käsureal.

$ cd MyProject /
$ nix-build # Üks kord, kui olete midagi muutnud.
Vaikimisi $ nix-shell.nix

Keelatakse ka nix-shell parameeter, kuid kui soovite, et ühes kataloogis oleks mitu, võite kasutada lülitit. Kui õiged väärtused on määratud, on teie keskkond iga kord nix-shell käivitamisel sama. Kui teisaldate nix-faili, saate sama igal pool! Suur probleem muutub; mida ma nix-failidesse panen?

Failid kasutavad Nixi väljendikeelt, see on peaaegu programmeerimiskeel.

Mõned näited

Allpool on mõned näited, mis võivad teid aidata. Oma keskkonna näpistamiseks saate teha veel palju asju. See on pikk põnev teekond, kuid tõenäoliselt aeglustab see teid algusest peale. Enne sinna jõudmist kasutage teiste inimeste koodi. See loetelu on lühike, nii et otsige ideid kogu veebis.

Python

Kui soovite luua Pythoni projekti, kasutate tavaliselt virtuaalseid keskkondi. Nixi puhul pole see vajalik. Selle asemel saate luua kesta.nix-fail, mis deklareerib, millist versiooni soovite. Lihtsaim viis seda teha on kasutada python38Full.

pkgs ? import :
pkgs.mkShell
# nativeBuildInputs on tavaliselt see, mida soovite - tööriistad, mida peate käivitama
nativeBuildInputs = [pkgs.buildPackages.python38Täis];

See kompileerib keskkonna koos kõigi Python 3 osadega.8, mis on kaasas NixOS-iga. Kui soovite oma keskkonda minimeerida, saate valida selle konkreetsed osad. Samuti saate oma allikakoodi tõmmata funktsioonide abil eemalt.

Pythoni kolb

Veebiarenduse näiteks on kolb. See on väga võimas pakett veebilehtede, isegi väga keeruliste, ilma suurema vaevata tegemiseks. Kuna Flask on populaarne raamistik, on selle jaoks valmis NixOS-i pakett. Selle järgu koostamise juhtimise faili nimetatakse vaikeväärtuseks.nix.

pkgs ? import :
pkgs.python38Pakendid.buildPythonApplication
pname = "NixApp";
src = ./.;
versioon = "0.1 ";
propagatedBuildInputs = [pkgs.python38Pakendid.kolb];

Nagu näete, on nixpkgs'ist pakke, mis katavad kolbi. Kui soovite kasutada midagi muud, lisage need nurksulgudesse. See kehtib kõigi pakettide kohta, mis on NixPkgs'i hoidlas. Kui paketti pole, kasutage tooma.

Pythoni arendus

Kui soovite käivitada Pythoni arenduskeskkonna, lisate vajalikud versioonid ja muud paketid.

impordiga ;
koos pkgs.python37Pakendid;
stdenv.mkDerivation
nimi = "python-devel";
req = ./ nõuded.txt;
ehitaja = "$ bash / bin / bash";
seadistamine = ./ setup_venv.sh;
buildInputs = [
python37Täis
python37Pakendid.pip
];
süsteem = sisseehitatud.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (kuupäev +% s)
";

ShellHooki, topeltapostrofide (”) vahele, saate panna kõik skriptid, mis teile meeldivad. Mõelge jällegi sellele, mis võib juba olemas olla, kuna seal on palju nutikaid inimesi, kes juba NixOSi abil arenevad.

JavaScripti

JavaScripti või täpsemalt nodejs-i kasutamiseks mõeldud standardversioon on allolev nix-skript. Nimetage see kest.nix ja asetage see oma projekti kataloogi, seejärel alustage käsuga nix-shell.

impordiga ;
stdenv.mkDerivation
nimi = "sõlm";
buildInputs = [
nodejs
];
shellHook = "
eksport PATH = "$ PWD / sõlme_moodulid /.bin /: $ PATH "
";

See on kõige lihtsam ja võimalik trikk, ehkki neid on palju rohkem. Näete, kuidas lisada skripti, mida muidu käsitsi käitaksite. Kasutage seda hoolikalt ja otsige enne seda täielikke alternatiive.

Jupyter

Allolev skript initsialiseerib kataloogi, et majutada rida funktsioone, kus saate Jupyterit käivitada. Ülejäänud paketid on mõeldud statistikaks ja masinõppeks. Võite ka eemaldada ja lisada vastavalt oma vajadustele.

impordiga ;
(
lase
pythonis38.withPackages (ps: ps-ga; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Konfiguratsioonid

IDE, redaktori või muu jaoks võite küpsetada ka oma seadetes. Arendajate jaoks on vim ja Emacs esimesed kandidaadid sellele erialale. Vimil on oma pluginate komplekt, mis on saadaval kui nixpkgs.

Toimetajad

NixOS-i pakettide aluseks on failid, mis osutavad allikatele ja pakettide koostamiseks vajalikule. Saate seda kasutada, kui pakend puudub. Niikaua kui leiate lähtekomplekti, võite selle installimiseks kasutada fetcherit. Tavaline tooja tõmbab tarballid, kuid selle nimi on fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
nimi = "tere";
src = fetchurl
url = "http: // www.näide.org / tere.tõrv.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;

Saate seda kasutada nii, nagu see on ülaltoodud koodis. Teil on ka fetchgit ja muud versioonihaldussüsteemid. Lisaks on suuremad gititeenused kaetud funktsioonidega fetchFromGitHub, fetchFromGitLab ja muuga. Kõigi nende toojate abil peaksite suutma leida mis tahes paketi, mida soovite NixOS-i jaoks.

Järeldus

NixOSi kasutamine nõuab natuke rohkem pingutusi kui muud jaotused. Seda öeldes on vaev seda väärt, kui soovite tarkvara arendada. Hoiate oma põhisüsteemi puhtamana ja saate projektide vahel hüpata, tekitamata keskkondade vahel tülikaid konflikte.

Viis parimat ergonoomilist arvutihiiretoodet Linuxile
Kas pikaajaline arvuti kasutamine põhjustab valu randmes või sõrmedes?? Kas teil on liigeste jäikus ja peate pidevalt käsi suruma? Kas tunnete põletav...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...