Revisio helvetti
Jokainen, joka lukee tämän, tuntee Python-ongelman käyttää eri versiota kielestä. Tämä on vain yksi räikeä esimerkki, jossa vaikutukset kohdistuvat jopa käyttäjiin. Tämä johtuu vanhoista loistavista projekteista, jotka ovat lopettaneet ohjelmiston ylläpidon. Monissa muissa tilanteissa tarvitset myös suurta hallintaa käynnissä olevista ja käytettävissä olevista kirjastoista. Ohjelmointi C- ja C ++ -järjestelmissä käyttää kirjastoja, joiden on usein oltava tarkka versio käännettäessä. Muuten kirjoitat uudelleen ohjelmiston osia, joita et ole koskaan aikonut koskettaa. Monet kehittäjät käyttävät säilöä kaikkien kirjastojen kanssa, ja kaikki muut teokset tapahtuvat isäntätietokoneessa.
Nix Fix
Kuinka nix hoitaa tämän ongelman? No, heillä on kaikki tiedostot kaupassa, jossa on hajautuksia tarkan version tunnistamiseksi. Ympäristö, jota aiot käyttää, sitten linkittää kirjastoon tai suorittaa, on jotain, jota haluat käyttää nykyisessä tilanteessa. Käynnissä olevassa järjestelmässä voit käyttää useita sovelluksen versioita ja jopa kirjastoja. Kun haluat kehittyä, luot määritystiedoston, joka kattaa nykyisen projektisi tarpeet.
Määritystiedostot
Kun NixOS on asennettu, kokoonpano.nix ohjaa ympäristöäsi koko tietokoneella. Tämän sanottuasi voit hallita sitä kuoresi kaikissa tapauksissa. Riippumatta siitä, onko sinulla NixOS tai suoritatko muuta jakelua, voit käyttää toista nix-tiedostoa. Tiedostoa kutsutaan oletukseksi.nix oletuksena. Tämän avulla voit luoda hakemistorakenteen, jolla on tietty ympäristö. Työnkulun tarkoituksena on luoda oletusnix-tiedosto vastaamaan sitä, mitä haluat ympäristön tukevan. Muuta sitten hakemistoa ja suorita nix-build, jonka jälkeen suoritetaan nix-shell. Voit myös käyttää mitä tahansa tiedoston nimeä, jos määrität sen komentorivillä.
$ cd MyProject /$ nix-build # Kerran, kun olet muuttanut jotain.
Oletusarvo $ nix-shell.nix
Nix-shell-parametrin oletetaan olevan epäsuora, mutta jos haluat olla useita yhdessä hakemistossa, voit käyttää kytkintä. Kun olet asettanut oikeat arvot, ympäristösi on nyt sama aina, kun käynnistät nix-shellin. Jos siirrät nix-tiedoston, voit saada saman missä tahansa! Suuresta ongelmasta tulee; mitä laitan nix-tiedostoihin?
Tiedostot käyttävät Nix-lauseketta, se on melkein ohjelmointikieli.
Muutama esimerkki
Alla on muutama esimerkki, joka voi auttaa sinua. Voit tehdä paljon muuta tekemällä ympäristöäsi. Tämä on pitkä jännittävä matka, mutta se todennäköisesti hidastaa sinua alusta alkaen. Ennen kuin pääset sinne, käytä muiden ihmisten koodia. Tämä luettelo on lyhyt, joten etsi ideoita verkosta.
Python
Kun haluat luoda Python-projektin, käytä normaalisti virtuaaliympäristöjä. Nixillä tämä ei ole välttämätöntä. Sen sijaan voit luoda kuoren.nix-tiedosto, joka ilmoittaa haluamasi version. Yksinkertaisin tapa tehdä tämä on käyttää python38Full.
pkgs ? tuontipkgs.mkShell
# nativeBuildInputs on yleensä mitä haluat - työkalut, jotka sinun on suoritettava
nativeBuildInputs = [pkgs.buildPackages.python38Täysi];
Tämä kokoaa ympäristön, jossa on kaikki Python 3: n osat.8, joka tulee NixOS: n mukana. Jos haluat minimoida ympäristön, voit valita sen tietyt osat. Voit myös lisätä lähdekoodisi etänä hakutoiminnoilla.
Python-pullo
Esimerkki verkkokehityksestä on pullo. Se on erittäin tehokas paketti verkkosivujen, jopa todella monimutkaisten, tekemiseen ilman paljon vaivaa. Koska pullo on suosittu kehys, sille on valmis NixOS-paketti. Tiedostoa, jolla hallitaan tämän koontiversiota, kutsutaan oletukseksi.nix.
pkgs ? tuontipkgs.python38Paketit.buildPythonApplication
pname = "NixApp";
src = ./.;
version = "0.1 ";
propagatedBuildInputs = [pkgs.python38Paketit.pullo];
Kuten näette, pulloa peittäviä paketteja on nixpkgs: ltä. Jos haluat käyttää jotain muuta, lisää ne hakasulkuihin. Tämä koskee kaikkia NixPkgs-arkistoon sisältyviä paketteja. Jos pakettia ei ole, käytä hakijaa.
Python-kehitys
Jos haluat aloittaa Python-kehitysympäristön, lisäät tarvitsemasi paketit version ja muiden mukaan.
tuonnin kanssapkgs: n kanssa.python37Paketit;
stdenv.mkDerivation
nimi = "python-devel";
req = ./ vaatimukset.txt;
rakentaja = "$ bash / bin / bash";
asennus = ./ setup_venv.sh;
koontitulo = [
python37Täysi
python37Paketit.pip
];
järjestelmä = sisäänrakennetut.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (päivämäärä +% s)
";
ShellHookiin, kaksoishitteiden (”) väliin, voit laittaa haluamasi komentosarjat. Mieti jälleen kerran sitä, mikä saattaa jo olla olemassa, koska siellä on monia älykkäitä ihmisiä, jotka kehittyvät jo NixOS: n avulla.
JavaScript
Tavallinen versio JavaScriptiä tai tarkemmin sanottuna nodejsia varten on alla oleva nix-komentosarja. Nimeä se kuoreksi.nix ja aseta se projektihakemistoon ja aloita sitten nix-shell-komennolla.
tuonnin kanssastdenv.mkDerivation
nimi = "solmu";
koontitulo = [
nodejs
];
shellHook = "
vie PATH = "$ PWD / solmu_moduulit /.bin /: $ PATH "
";
Tämä on yksinkertaisin mahdollinen temppu, vaikka saatavilla on paljon enemmän. Voit nähdä, kuinka muuten käsin suoritettava komentosarja lisätään. Käytä tätä huolellisesti ja etsi täydelliset vaihtoehdot ennen kuin teet tämän.
Jupyter
Alla oleva komentosarja alustaa hakemiston isännöimään joukko toimintoja, joissa voit suorittaa Jupyterin. Muut paketit ovat tilastoja ja koneoppimista varten. Voit myös poistaa ja lisätä tarpeidesi mukaan.
tuonnin kanssa(
päästää
pythonissa38.withPackages (ps: ps: llä; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env
Kokoonpanot
IDE, editori tai mikä tahansa, todella, voit myös paistaa asetuksissa. Kehittäjille Vim ja Emacs ovat ensimmäiset ehdokkaat tähän erikoistumiseen. Vimillä on oma joukko laajennuksia, jotka ovat saatavilla nixpkgs-tiedostoina.
Noutajat
NixOS: n pakettien perustana ovat tiedostot, jotka viittaavat lähteisiin ja mitä pakettien kokoamiseen tarvitaan. Voit käyttää tätä, jos puuttuu paketti. Niin kauan kuin löydät lähdepaketin, voit asentaa sen hakimella. Tavallinen hakija hakee tarballit, mutta sen nimi on fetchurl.
stdenv, fetchurl:stdenv.mkDerivation
nimi = "hei";
src = fetchurl
url = "http: // www.esimerkki.org / hei.terva.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;
Voit käyttää sitä samalla tavalla kuin yllä olevassa koodissa. Sinulla on myös fetchgit ja muut versionhallintajärjestelmät. Tämän lisäksi tärkeimmät git-palvelut on peitetty fetchFromGitHubilla, fetchFromGitLabilla ja muilla. Kaikkien näiden hakijoiden avulla sinun pitäisi pystyä löytämään haluamasi paketti NixOS: lle.
Johtopäätös
NixOSin käyttö vaatii hieman enemmän vaivaa kuin muut jakelut. Tämän sanottu, jos haluat kehittää ohjelmistoja, vaivannäkö on sen arvoista. Pidät pääjärjestelmän puhtaana ja voit hypätä projektien välillä luomatta hankalia ristiriitoja ympäristöjen välillä.