NixOS

Среда за разработка на NixOS

Среда за разработка на NixOS
Когато разработвате и стартирате софтуер и много пъти, имате нужда от много специфичен набор от библиотеки във вашата среда. Постигате това с виртуална среда, контейнери и други трикове. Не е задължително обаче да се нуждаете от всичко това. Един често срещан случай е, когато програмирате в Python, трябва да избирате между двете големи версии. Това е причинило много главоболия както на потребителите, така и на разработчиците. Можете да избегнете всичко това, ако вашите библиотеки са определени, особено за едно изпълнение. Това може да звучи невъзможно или ненужно, но е много удобно за редки случаи на употреба и разработка.

Преглед на ада

Всеки, който прочете това, ще бъде запознат с проблема с Python за използването на различна версия на езика. Това е само един ярък пример, при който дори потребителите са засегнати. Това се дължи на стари брилянтни проекти, които са спрели да поддържат софтуера. В много други ситуации се нуждаете и от голям контрол върху това, което се изпълнява и какви библиотеки са на разположение. Програмирането в C и C ++ използва библиотеки, които често трябва да бъдат точната версия, когато компилирате. В противен случай ще пренапишете части от софтуера, които никога не сте възнамерявали да докоснете. Много разработчици използват контейнер с всички библиотеки, а всички останали произведения се случват на хост компютъра.

Fix на Nix

Как nix се грижи за този проблем? Е, те имат всички файлове в магазин с хешове, за да идентифицират точната версия. Средата, която ще използвате, след което ще се свържете с библиотеката или ще се изпълни, е нещо, което бихте искали да използвате за текущата си ситуация. След това за работеща система можете да използвате много версии на приложение и дори библиотеки. Когато искате да разработите, създавате конфигурационен файл, който покрива нуждите на текущия ви проект.

Файлове за конфигуриране

Когато имате инсталиран NixOS, конфигурацията.nix ще контролира вашата среда за целия компютър. С това казано можете да го контролирате във всеки екземпляр на вашата черупка. Независимо дали имате NixOS или използвате друга дистрибуция, можете да използвате друг nix файл. Файлът се нарича по подразбиране.nix по подразбиране. Можете да използвате това, за да създадете структура на директория, която има определена среда. Работният процес е да създадете файла по подразбиране nix, за да отразява това, което искате вашата среда да поддържа. След това променете директорията и стартирайте nix-build, последвано от стартиране на nix-shell. Можете също да използвате всяко име за файла, ако го посочите в командния ред.

$ cd MyProject /
$ nix-build # Веднъж, когато сте променили нещо.
$ nix-shell по подразбиране.nix

Параметърът за nix-shell ще бъде подразбран, но ако искате да имате няколко в една директория, можете да използвате превключвателя. С зададените правилни стойности, сега вашата среда е една и съща всеки път, когато стартирате nix-shell. Ако преместите файла nix, ще можете да получите същото навсякъде! Големият проблем става; какво да сложа в nix файловете?

Файловете използват езика за израз Nix, той е почти език за програмиране.

Няколко примера

По-долу има няколко примера, които могат да ви помогнат. Има много повече неща, които можете да направите, за да промените околната среда. Това е дълго вълнуващо пътуване, но вероятно ще ви забави от самото начало. Преди да стигнете там, използвайте кода на други хора. Този списък е кратък, така че потърсете идеи в мрежата.

Python

Когато искате да създадете проект на Python, обикновено използвате виртуална среда. При Nix това не е необходимо. Вместо това можете да създадете черупка.nix файл, който декларира коя версия искате. Най-простият начин да направите това е да използвате python38Full.

pkgs ? внос :
pkgs.mkShell
# nativeBuildInputs обикновено е това, което искате - инструменти, които трябва да стартирате
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Това компилира среда с всички части на Python 3.8, който идва с NixOS. Ако искате да минимизирате средата си, можете да изберете конкретните й части. Можете също така да добавите вашия изходен код отдалечено с функции за извличане.

Python Flask

Пример за уеб разработка е колба. Това е много мощен пакет за създаване на уеб страници, дори наистина сложни, без много усилия. Тъй като Flask е популярна рамка, за него има готов пакет NixOS. Файлът за управление на компилацията за това се нарича по подразбиране.nix.

pkgs ? внос :
pkgs.python38 Пакети.buildPythonApplication
pname = "NixApp";
src = ./.;
версия = "0.1 ";
propagatedBuildInputs = [pkgs.python38 Пакети.колба ];

Както можете да видите, има пакети от nixpkgs, които покриват колбата. Ако искате да използвате нещо друго, добавете ги в квадратните скоби. Това важи за всички видове пакети, които са включени в хранилището на NixPkgs. Ако пакетът не съществува, използвайте извличане.

Разработка на Python

Ако искате да стартирате среда за разработка на Python, добавяте пакети, които са ви необходими според редакцията и други.

с внос ;
с pkgs.python37 Пакети;
stdenv.mkDerivation
име = "python-devel";
req = ./ изисквания.текст;
builder = "$ bash / bin / bash";
настройка = ./ setup_venv.ш;
buildInputs = [
python37 Пълен
python37 Пакети.пип
];
система = вградени.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (дата +% s)
";

В shellHook, между двойните апострофи (”), можете да поставите произволни скриптове. Отново помислете какво може вече да съществува, тъй като има много умни хора, които вече се развиват с помощта на NixOS.

JavaScript

Стандартната версия за използване на JavaScript или по-точно nodejs е скриптът nix по-долу. Назовете го shell.nix и го поставете във вашата директория на проекта, след което започнете с командата nix-shell.

с внос ;
stdenv.mkDerivation
name = "възел";
buildInputs = [
nodejs
];
shellHook = "
износ PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Това е най-простият, възможен трик, въпреки че има много повече налични. Можете да видите как да добавите скрипт, който иначе бихте изпълнили ръчно. Използвайте това внимателно и потърсете пълни алтернативи, преди да направите това.

Юпитер

Скриптът по-долу инициализира директория, за да хоства пакет от функции, където можете да стартирате Jupyter. Останалите пакети са за статистика и машинно обучение. Можете също така да премахвате и добавяте според вашите нужди.

с внос ;
(
позволявам
в python38.withPackages (ps: с ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Конфигурации

За вашата IDE, редактор или каквото и да било, наистина можете също да печете в настройките си. За разработчиците vim и Emacs ще бъдат първите кандидати за тази специализация. Vim има собствен набор от приставки, налични като nixpkgs.

Извличачи

Основата на пакетите в NixOS са файлове, които сочат към източници и това, което е необходимо за компилиране на пакетите. Можете да използвате това, ако ви липсва пакет. Докато можете да намерите изходния пакет, можете да използвате извличане, за да го инсталирате. Стандартният извличащ файл извлича tarballs, но се нарича fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
name = "здравей";
src = fetchurl
url = "http: // www.пример.org / здравей.катран.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;

Можете да го използвате така, както е в горния код. Също така имате fetchgit и други системи за контрол на версиите. На всичкото отгоре основните git услуги са покрити с fetchFromGitHub, fetchFromGitLab и др. С всички тези извличащи устройства бихте могли да намерите всеки пакет, който искате за NixOS.

Заключение

Използването на NixOS изисква малко повече усилия от другите дистрибуции. Като казахте, че ако искате да разработите софтуер, усилията си заслужават. Ще поддържате основната си система по-чиста и ще можете да прескачате между проекти, без да създавате обезпокоителни конфликти между средите.

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...