NixOS

NixOS-Entwicklungsumgebungen

NixOS-Entwicklungsumgebungen
Beim Entwickeln und Ausführen von Software benötigen Sie in Ihrer Umgebung oft einen ganz bestimmten Satz von Bibliotheken. Dies erreichen Sie mit virtuellen Umgebungen, Containern und anderen Tricks. Das braucht man aber nicht unbedingt alles. Ein häufiger Fall ist, dass Sie beim Programmieren in Python zwischen den beiden großen Versionen wählen müssen. Dies hat sowohl Benutzern als auch Entwicklern viele Kopfschmerzen bereitet. All dies können Sie vermeiden, wenn Ihre Bibliotheken speziell für einen Lauf bestimmt sind. Das mag unmöglich oder unnötig klingen, ist aber für seltene Anwendungsfälle und Entwicklungen sehr praktisch.

Revision Hölle

Jeder, der dies liest, wird mit dem Python-Problem vertraut sein, eine andere Version der Sprache zu verwenden. Das ist nur ein krasses Beispiel, wo sogar Benutzer betroffen sind. Dies liegt an alten brillanten Projekten, die die Wartung der Software eingestellt haben. In vielen anderen Situationen benötigen Sie auch eine große Kontrolle darüber, was ausgeführt wird und welche Bibliotheken verfügbar sind. Die Programmierung in C und C++ verwendet Bibliotheken, die beim Kompilieren oft die genaue Version haben müssen. Andernfalls werden Sie Teile der Software neu schreiben, die Sie nie anfassen wollten. Viele Entwickler verwenden einen Container mit allen Bibliotheken, und alle anderen Arbeiten finden auf dem Host-Computer statt.

Der Nix-Fix

Wie kümmert sich nix um dieses Problem? Nun, sie haben alle Dateien in einem Geschäft mit Hashes, um die genaue Version zu identifizieren. Die Umgebung, die Sie verwenden und dann mit der Bibliothek verknüpfen oder ausführen, ist etwas, das Sie für Ihre aktuelle Situation verwenden möchten. Für ein laufendes System können Sie dann viele Versionen einer Anwendung und sogar Bibliotheken verwenden. Wenn Sie entwickeln möchten, erstellen Sie eine Konfigurationsdatei, die die Anforderungen Ihres aktuellen Projekts abdeckt.

Konfigurationsdateien

Wenn Sie NixOS installiert haben, ist die Konfiguration.nix kontrolliert Ihre Umgebung für den gesamten Computer. Damit können Sie es in jeder Instanz Ihrer Shell steuern. Unabhängig davon, ob Sie NixOS haben oder eine andere Distribution ausführen, können Sie eine andere Nix-Datei verwenden use. Die Datei heißt default.nix standardmäßig. Sie können dies verwenden, um eine Verzeichnisstruktur mit einer bestimmten Umgebung zu erstellen. Der Arbeitsablauf besteht darin, die Standard-Nix-Datei zu erstellen, die widerspiegelt, was Ihre Umgebung unterstützen soll. Ändern Sie dann das Verzeichnis und führen Sie nix-build aus, gefolgt von der Ausführung der nix-shell. Sie können auch einen beliebigen Namen für die Datei verwenden, wenn Sie ihn in der Befehlszeile angeben.

$ cd MeinProjekt/
$ nix-build # Einmal, wenn du etwas geändert hast.
$ nix-shell-Standard.nix

Der Parameter für die Nix-Shell wird impliziert, aber wenn Sie mehrere in einem Verzeichnis haben möchten, können Sie den Schalter verwenden. Mit den richtigen Werten haben Sie Ihre Umgebung jetzt jedes Mal gleich, wenn Sie nix-shell starten start. Wenn du die nix-Datei verschiebst, kannst du sie überall hinbekommen! Das große Problem wird; was füge ich in die nix dateien ein?

Die Dateien verwenden die Nix-Ausdruckssprache, es ist fast eine Programmiersprache.

Ein paar Beispiele

Nachfolgend finden Sie ein paar Beispiele, die Ihnen helfen können. Es gibt noch viele weitere Dinge, die Sie tun können, um Ihre Umgebung zu optimieren. Dies ist eine lange aufregende Reise, aber sie wird Sie wahrscheinlich von Anfang an ausbremsen. Bevor Sie dort ankommen, verwenden Sie den Code anderer Leute people. Diese Liste ist kurz, also suchen Sie im Internet nach Ideen.

Python

Wenn Sie ein Python-Projekt erstellen möchten, verwenden Sie normalerweise virtuelle Umgebungen. Bei Nix ist das nicht nötig. Stattdessen können Sie eine Shell erstellen.nix-Datei, die angibt, welche Version Sie möchten. Der einfachste Weg, dies zu tun, ist die Verwendung von python38Full.

Pakete ? importieren :
Packungen.mkShell
# nativeBuildInputs ist normalerweise das, was Sie wollen – Tools, die Sie ausführen müssen
nativeBuildInputs = [ Pakete.buildPakete.python38Full];

Dies kompiliert eine Umgebung mit allen Teilen von Python 3.8, die mit NixOS geliefert wird. Wenn Sie Ihre Umgebung minimieren möchten, können Sie die einzelnen Teile auswählen. Sie können Ihren Quellcode auch aus der Ferne mit Abruffunktionen hinzufügen.

Python-Flasche

Ein Beispiel für die Webentwicklung ist eine Flasche. Es ist ein sehr leistungsfähiges Paket, um Webseiten, auch sehr komplexe, ohne viel Aufwand zu erstellen. Da Flask ein beliebtes Framework ist, gibt es ein fertiges NixOS-Paket dafür. Die Datei zur Steuerung des Builds dafür heißt default.nix.

Pakete ? importieren :
Packungen.python38Pakete.buildPython-Anwendung
pname = "NixApp";
src = ./.;
version = "0".1";
propagatedBuildInputs = [ Pakete.python38Pakete.Flasche ];

Wie Sie sehen können, gibt es Pakete von nixpkgs, die die Flasche abdecken. Wenn Sie etwas anderes verwenden möchten, fügen Sie es in die eckigen Klammern ein. Dies gilt für alle Arten von Paketen, die im NixPkgs-Repository enthalten sind. Wenn das Paket nicht existiert, verwenden Sie einen Fetcher.

Python-Entwicklung

Wenn Sie eine Python-Entwicklungsumgebung starten möchten, fügen Sie Pakete hinzu, die Sie gemäß Revision und anderen benötigen.

mit Import ;
mit Packungen.python37Pakete;
stdenv.mkAbleitung
name = "python-devel";
req = ./Anforderungen.TXT;
builder = "$bash/bin/bash";
Einrichtung = ./setup_venv.Sch;
buildInputs = [
python37Full
python37Pakete.Pip
];
system = eingebaut.aktuelles System;
ShellHook = "
SOURCE_DATE_EPOCH=$(Datum +%s)
";

Im ShellHook können Sie zwischen den doppelten Apostrophen (”) beliebige Skripte einfügen. Denken Sie noch einmal darüber nach, was möglicherweise bereits existiert, da es viele schlaue Leute gibt, die bereits mit NixOS entwickeln.

JavaScript

Die Standardversion für die Verwendung von JavaScript, genauer gesagt nodejs, ist das nix-Skript unten. Nenn es Schale.nix und legen Sie es in Ihr Projektverzeichnis, dann starten Sie mit dem nix-shell-Befehl.

mit Import ;
stdenv.mkAbleitung
name = "Knoten";
buildInputs = [
nodejs
];
ShellHook = "
export PATH="$PWD/node_modules/.bin/:$PFAD"
";

Dies ist der einfachste, mögliche Trick, obwohl es noch viel mehr gibt. Sie können sehen, wie Sie ein Skript hinzufügen, das Sie sonst manuell ausführen würden. Verwenden Sie dies sorgfältig und suchen Sie nach vollständigen Alternativen, bevor Sie dies tun.

Jupyter

Das folgende Skript initialisiert ein Verzeichnis, um eine Reihe von Funktionen zu hosten, in denen Sie Jupyter ausführen können. Die anderen Pakete sind für Statistik und maschinelles Lernen. Sie können auch nach Ihren Bedürfnissen entfernen und hinzufügen.

mit Import ;
(
Lassen
in python38.withPackages (ps: with ps; [ geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz ])
).env

Konfigurationen

Für Ihre IDE, Ihren Editor oder alles andere können Sie auch in Ihren Einstellungen backen. Für Entwickler sind vim und Emacs die ersten Kandidaten für diese Spezialisierung. Vim hat einen eigenen Satz von Plugins, die als nixpkgs verfügbar sind.

Fetcher

Die Basis der Pakete in NixOS sind Dateien, die auf Quellen verweisen und was zum Kompilieren der Pakete benötigt wird. Sie können dies verwenden, wenn Sie ein Paket vermissen. Solange Sie das Quellpaket finden, können Sie es mit einem Fetcher installieren. Der Standard-Fetcher ruft Tarballs ab, heißt aber fetchurl.

stdenv, fetchurl :
stdenv.mkAbleitung
name = "hallo";
src = fetchurl
url = "http://www.Beispiel.org/hallo.Teer.gz";
sha256 = "11111111111111111111111111111111111111111111111111111";
;

Sie können es so verwenden, wie es im obigen Code beschrieben ist. Sie haben auch fetchgit und andere Versionskontrollsysteme. Darüber hinaus werden die wichtigsten Git-Dienste mit fetchFromGitHub, fetchFromGitLab und mehr abgedeckt. Mit all diesen Abrufern sollten Sie in der Lage sein, jedes gewünschte Paket für NixOS zu finden.

Fazit

Die Verwendung von NixOS erfordert etwas mehr Aufwand als andere Distributionen. Wenn Sie jedoch Software entwickeln möchten, lohnt sich der Aufwand. Sie halten Ihr Hauptsystem sauberer und können zwischen Projekten wechseln, ohne störende Konflikte zwischen Umgebungen zu erzeugen.

Top Oculus App Lab-Spiele
Wenn Sie Besitzer eines Oculus-Headsets sind, müssen Sie über Sideloading informiert sein. Sideloading ist der Prozess der Installation von Inhalten, ...
Top 10 Spiele zum Spielen auf Ubuntu
Die Windows-Plattform war eine der dominierenden Plattformen für Spiele aufgrund des großen Prozentsatzes von Spielen, die heute entwickelt werden, um...
Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...