Nix – Der rein funktionale Paketmanager für Linux

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

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

Unter NixPakete werden aus einer funktionalen Paketsprache namens „Nix-Ausdrücke”. Dieser funktionale Ansatz für die Paketverwaltung garantiert, dass durch die Installation oder Aktualisierung eines Pakets keine anderen Pakete beschädigt werden können.

Nix bietet auch Unterstützung für mehrere Benutzer. Dies 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-Speicher, die im PATH des Benutzers angezeigt werden).

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


Derzeit werden Linux (i686, x86_64) und Mac OS X (x86_64) unterstützt. Es ist jedoch 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 Sie (im Mehrbenutzermodus) installieren und verwenden Nix Paketmanager unter Linux. Wir werden einige der grundlegenden Paketverwaltungsaufgaben in Bezug auf die häufig verwendeten Tools diskutieren.

So installieren Sie Nix Package Manager unter Linux

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

$ 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 landen im Mehrbenutzer-Nix-Installationsbildschirm, wie im Screenshot gezeigt.

Installieren Sie Nix Package Manager unter Linux
Installieren Sie Nix Package Manager unter Linux

Geben Sie ein, um eine detaillierte Liste der Vorgänge während des Installationsvorgangs anzuzeigen y und drücke Eingeben. Wenn Sie zufrieden und bereit sind, fortzufahren, geben Sie ein y und drücke Eingeben.

Zusammenfassung der Nix-Installation
Zusammenfassung der Nix-Installation

Das Skript ruft den Befehl sudo nach Bedarf mehrmals auf. Sie müssen die Verwendung zulassen sudo durch antworten y und schlagen Eingeben.

Die Nix-Installation wird fortgesetzt
Die Nix-Installation wird fortgesetzt

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

Die Datei wird geändert / etc / bashrc, (und / etc / zshrc für die zsh) wenn sie existieren. Beachten Sie, dass zuerst die genannten Dateien mit a gesichert werden .backup-before-nix Erweiterung und das Installationsprogramm erstellt auch die Datei /etc/profile.d/nix.sh.

Das Installationsprogramm richtet auch 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.

Nach Abschluss der Installation 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. Dann Quelle der Datei /etc/profile.d/nix.sh (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 erforderlich sind Nix zu bedienen. Nachdem alle Pfade heruntergeladen und an die richtigen Speicherorte kopiert wurden, wird eine Zusammenfassung des System- und Nix-Installationstyps angezeigt (siehe Abbildung).

$ nix-shell -p nix-info --run "nix-info -m"
Nix Installation und Systemübersicht
Nix Installation und Systemübersicht

Verwendung von Nix Package Manager unter Linux

Unter NixDie Paketverwaltung erfolgt durch die nix-env Nützlichkeit. Es wird verwendet, um Pakete zu installieren, zu aktualisieren und zu entfernen / löschen sowie um abzufragen, welche Pakete installiert sind oder für die Installation verfügbar sind.

Alle Pakete befinden sich in einem Nix-Kanal. Hierbei 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ären Cache enthält.

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

$ nix-channel --list

Verwenden Sie den folgenden Befehl, um den Nix-Kanal hinzuzufügen.

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

Bevor Sie Pakete installieren, aktualisieren Sie zunächst den Nix-Kanal. Das ist ähnlich wie beim Laufen passendes Update unter dem APT-Paketmanager.

$ nix-channel --update
Aktualisieren Sie den Nix-Kanal
Aktualisieren Sie den Nix-Kanal

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

$ nix-env -qa
Abfragepakete zur Installation verfügbar
Abfragepakete zur Installation verfügbar

In diesem Beispiel installieren wir den Apache Tomcat-Server mit dem vorherigen Befehl in Verbindung mit grep, um festzustellen, ob das Paket wie gezeigt installiert werden kann.

$ nix-env -qa | grep "apache-tomcat"
Suchen Sie ein Paket für die Installation
Suchen Sie ein Paket für die Installation

Verwenden Sie zum Installieren eines Pakets den folgenden Befehl, indem Sie beispielsweise die Paketversion angeben apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2
Installieren Sie ein Paket mit Nix
Installieren Sie ein Paket mit Nix

Auf dem lokalen System speichert Nix Pakete im Nix Store, das ist standardmäßig die / nix / store Verzeichnis, in dem jedes Paket ein eigenes Unterverzeichnis hat. Zum Beispiel die Apache tomcat Pakete werden gespeichert in:

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

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

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

$ nix-env -q
Liste der installierten Pakete
Liste der installierten Pakete

So aktualisieren Sie die Apache tomcat Paket können Sie die verwenden -u Upgrade-Schalter wie gezeigt.

$ nix-env -u apache-tomcat

Wenn Sie entfernen / löschen möchten Apache tomcat, benutze die -e Flagge. Hier wird ein Paket nicht sofort aus dem System gelöscht, sondern nur unbenutzt. 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 eine Speicherbereinigung durchführen nix-collect-garbage Nützlichkeit.

$ nix-collect-garbage

So entfernen Sie 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

Außerdem 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.

$ 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 für eine zuverlässige und reproduzierbare Paketverwaltung. Es bietet ein interessantes Konzept für die Paketverwaltung, das sich stark von häufig verwendeten Linux-Tools wie YUM, APT und vielen anderen unterscheidet.

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

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *