Website-Suche

Nix – Der rein funktionale Paketmanager für Linux


Nix ist ein leistungsstarkes, rein funktionales Paketverwaltungssystem, das für eine zuverlässige und reproduzierbare Paketverwaltung entwickelt wurde und unter den Bedingungen der GNU LGPLv2.1 veröffentlicht wurde. Es ist das primäre Paketverwaltungssystem in NixOS, einer weniger bekannten Linux-Distribution.

Nix bietet atomare Upgrades und Rollbacks, mehrere Versionen der Paketinstallation, Mehrbenutzer-Paketverwaltung und die mühelose Einrichtung von Build-Umgebungen für ein Paket, unabhängig davon, welche Programmiersprachen und Tools ein Entwickler verwendet.

Unter Nix werden Pakete aus einer funktionalen Paketsprache namens „Nix-Ausdrücke“ erstellt. Dieser funktionale Ansatz der Paketverwaltung garantiert, dass die Installation oder Aktualisierung eines Pakets andere Pakete nicht beschädigen kann.

Nix verfügt außerdem über Mehrbenutzerunterstützung, was bedeutet, dass normale (oder nicht privilegierte) Systembenutzer Pakete sicher installieren können und jeder Benutzer durch ein Profil identifiziert wird (eine Sammlung von Paketen im Nix-Store, die im PATH des Benutzers angezeigt werden).

Falls ein Benutzer ein Paket installiert hat und ein anderer Benutzer versucht, dasselbe Paket zu installieren, wird das Paket kein zweites Mal erstellt oder heruntergeladen.

Es unterstützt derzeit Linux (i686, x86_64) und Mac OS X (x86_64). Allerdings ist es ziemlich portabel, Sie können es auf den meisten Plattformen ausprobieren, die POSIX-Threads unterstützen und über einen C++11-Compiler verfügen.

In diesem Artikel zeigen wir, wie man den Nix-Paketmanager unter Linux installiert (im Mehrbenutzermodus) und verwendet. Wir werden einige der grundlegenden Paketverwaltungsaufgaben in Bezug auf die häufig verwendeten Tools besprechen.

So installieren Sie Nix Package Manager unter Linux

Wir werden die neueste Version von Nix (v2.1.3 zum Zeitpunkt des Schreibens) im Mehrbenutzermodus installieren. Glücklicherweise gibt es ein fertig vorbereitetes Installationsskript, das Sie als normaler Benutzer von Ihrer Shell aus ausführen können, indem Sie den folgenden Curl-Befehl auf Ihrem System verwenden.

sh <(curl https://nixos.org/nix/install) --daemon

Wenn Sie den obigen Befehl ausführen, wird der neueste Nix-Binär-Tarball heruntergeladen und Sie gelangen zum Nix-Installationsbildschirm für mehrere Benutzer, wie im Screenshot gezeigt.

Um eine detaillierte Liste der Ereignisse während des Installationsvorgangs anzuzeigen, geben Sie y ein und drücken Sie die Eingabetaste. Wenn Sie zufrieden sind und fortfahren möchten, geben Sie y ein und drücken Sie die Eingabetaste.

Das Skript ruft den Befehl sudo je nach Bedarf mehrmals auf. Sie müssen die Verwendung von sudo zulassen, indem Sie mit y antworten und die Eingabetaste drücken.

Das Installationsprogramm führt dann einige Tests durch und generiert einen Nix-Konfigurationsbericht, erstellt Build-Benutzer zwischen den Benutzer-IDs 30001 und 30032 sowie eine Gruppe mit der Gruppen-ID 30000. Geben Sie y ein, um fortzufahren, wenn Sie dazu aufgefordert werden. Es richtet die Build-Gruppen für die verschiedenen Build-Benutzer ein und erstellt die grundlegende Verzeichnisstruktur von Nix.

Es wird die Datei /etc/bashrc (und /etc/zshrc für zsh) ändern, falls vorhanden. Beachten Sie, dass zunächst die genannten Dateien mit der Erweiterung .backup-before-nix gesichert werden und das Installationsprogramm außerdem die Datei /etc/profile.d/nix.sh erstellt.

Das Installationsprogramm richtet außerdem den Nix-Daemon-Dienst und den Nix-Daemon-Socket-Dienst ein, lädt die Systemd-Einheit für Nix-Daemon und startet die beiden oben genannten Dienste.

Sobald die Installation abgeschlossen ist, müssen Sie ein neues Terminalfenster öffnen, um Nix verwenden zu können. Alternativ können Sie Ihre Shell schließen und erneut öffnen, um die letzten Änderungen zu übernehmen. Geben Sie dann die Datei /etc/profile.d/nix.sh als Quelle ein (da es sich nicht um eine Shell-Startdatei handelt, wird sie beim Öffnen einer neuen Shell nicht als Quelle verwendet).

source /etc/profile.d/nix.sh

Führen Sie als Nächstes den folgenden Befehl aus, um einige Pfade von der offiziellen Projektwebsite herunterzuladen, die für den Betrieb von Nix erforderlich sind. Nachdem alle Pfade heruntergeladen und an die richtigen Speicherorte kopiert wurden, wird eine Zusammenfassung der System- und Nix-Installationstypen angezeigt, wie im Screenshot gezeigt.

nix-shell -p nix-info --run "nix-info -m"

So verwenden Sie den Nix Package Manager unter Linux

Unter Nix erfolgt die Paketverwaltung durch das Dienstprogramm nix-env. Es wird zum Installieren, Aktualisieren und Entfernen/Löschen von Paketen sowie zum Abfragen verwendet, welche Pakete installiert sind oder zur Installation verfügbar sind.

Alle Pakete befinden sich in einem Nix-Kanal. Dabei handelt es sich um eine URL, die auf ein Repository verweist, das sowohl eine Sammlung von Nix-Ausdrücken als auch einen Zeiger auf einen Binärcache enthält.

Der Standardkanal ist Nixpkgs und die Liste der abonnierten Kanäle wird in ~/.nix-channels gespeichert. Sie können sie mit dem folgenden Befehl auflisten (keine Ausgabe bedeutet keine Kanäle). .

nix-channel --list

Um den Nix-Kanal hinzuzufügen, verwenden Sie den folgenden Befehl.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Bevor Sie Pakete installieren, aktualisieren Sie zunächst den Nix-Kanal. Dies ähnelt der Ausführung von apt update unter dem APT-Paketmanager.

nix-channel --update

Mit dem folgenden Befehl können Sie abfragen, welche Pakete zur Installation verfügbar sind.

nix-env -qa

In diesem Beispiel installieren wir den Apache Tomcat-Server mithilfe des vorherigen Befehls in Verbindung mit grep, um zu ermitteln, ob das Paket wie gezeigt zur Installation verfügbar ist.

nix-env -qa | grep "apache-tomcat"

Um ein Paket zu installieren, verwenden Sie den folgenden Befehl, indem Sie die Paketversion angeben, zum Beispiel apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Auf dem lokalen System speichert Nix Pakete im Nix Store, der standardmäßig das Verzeichnis /nix/store ist, in dem jedes Paket sein eigenes eindeutiges Unterverzeichnis hat. Die Apache-Tomcat-Pakete werden beispielsweise gespeichert in:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

In diesem Pfad sind die zufälligen Zeichen 95gmgnxlrcpkhlm00fa5ax8kvd6189py eine eindeutige Kennung für das Paket, die alle seine Abhängigkeiten berücksichtigt.

Sie können installierte Pakete mit dem folgenden Befehl auflisten.

nix-env -q

Um das Apache-Tomcat-Paket zu aktualisieren, können Sie wie gezeigt den Upgrade-Schalter -u verwenden.

nix-env -u apache-tomcat

Wenn Sie Apache-Tomcat entfernen/löschen möchten, verwenden Sie das Flag -e. Dabei wird ein Paket nicht sofort aus dem System gelöscht, sondern lediglich ungenutzt geschaltet. Dies ist nützlich, weil Sie ein Rollback durchführen möchten oder es sich möglicherweise in den Profilen anderer Benutzer befindet.

nix-env -e apache-tomcat

Nachdem Sie ein Paket entfernt haben, können Sie mit dem Dienstprogramm nix-collect-garbage eine Garbage Collection durchführen.

nix-collect-garbage

So entfernen Sie den Nix Package Manager unter Linux

Um Nix zu deinstallieren, entfernen Sie alle Nix-bezogenen Dateien auf einmal.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Führen Sie auf Systemen mit systemd die folgenden Befehle aus, um alle Nix-bezogenen Dienste zu stoppen und zu deaktivieren.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Darüber hinaus müssen Sie alle Verweise auf Nix in diesen Dateien entfernen: /etc/profile, /etc/bashrc und /etc/zshrc .

Weitere Informationen finden Sie in den Manpages der oben genannten Dienstprogramme, die wir uns angesehen haben.

man nix-channel
man nix-env

Die Dokumentation zum Nix Package Manager finden Sie auf der Projektwebsite: https://nixos.org/nix/.

Zusammenfassung

Nix ist ein rein funktionaler Paketmanager, der für eine zuverlässige und reproduzierbare Paketverwaltung entwickelt wurde. Es bietet ein interessantes Konzept der Paketverwaltung, das sich stark von häufig verwendeten Tools unter Linux wie YUM, APT und vielen anderen unterscheidet.

In diesem Artikel haben wir gezeigt, wie man Nix im Mehrbenutzermodus installiert und wie man die Paketverwaltung mit Nix durchführt. Teilen Sie uns Ihre Gedanken mit oder stellen Sie Fragen über das Kommentarformular unten. Abschließend werden wir in einem kommenden Artikel weitere Nix-Paketverwaltungsbefehle erläutern. Bis dahin bleiben Sie in Verbindung.