NixOS

NixOS-kehitysympäristöt

NixOS-kehitysympäristöt
Kun kehität ja suoritat ohjelmistoja ja tarvitset useita kertoja, tarvitset hyvin tietyn sarjan kirjastoja ympäristössäsi. Saavutat tämän virtuaalisilla ympäristöillä, säilöillä ja muilla temppuilla. Et kuitenkaan välttämättä tarvitse kaikkea sitä. Yksi yleinen tapaus on, kun ohjelmoit Pythonissa, sinun on valittava kahden ison version välillä. Tämä on aiheuttanut paljon päänsärkyä sekä käyttäjille että kehittäjille. Voit välttää kaiken tämän, jos kirjastosi on nimetty, erityisesti yhdelle ajolle. Tämä saattaa kuulostaa mahdottomalta tai tarpeettomalta, mutta se on erittäin kätevä harvinaisissa käyttötapauksissa ja kehityksessä.

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 ? tuonti :
pkgs.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 ? tuonti :
pkgs.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 kanssa ;
pkgs: 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 kanssa ;
stdenv.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ä.

Viisi parasta ergonomista tietokonehiirtä Linux-tuotteille
Aiheuttaako pitkäaikainen tietokoneen käyttö kipua ranteessasi tai sormissasi?? Onko sinulla nivelten jäykkyys ja sinun on jatkuvasti ravistettava kät...
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...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...