Nix (Paketmanager)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Nix ist ein Paketmanager für unixoide Systeme und mit RPM, APT und vielen anderen Paketmanagern vergleichbar. Er ist in der Lage, die Installation von Paketen (benannte und mit Versionen versehene Gruppen von Dateien, z. B. Software oder deren Konfigurationsdaten) zu kontrollieren.[1][2][3] Im Gegensatz zu fast allen anderen Paketmanagern ist Nix für den Einsatz in verschiedenen Distributionen und Betriebssystemen (zur Zeit Linux und OS X) vorgesehen. Nix verwaltet ausschließlich deterministische Kompilate. Die Entwicklung von Nix wird von der Nix Foundation, einer Stiftung niederländischen Rechts, vorangetrieben.[4] Diese richtet auch die NixConf, eine Konferenz zu Nix aus.[5]

Nix[Bearbeiten | Quelltext bearbeiten]

Nix-Pakete werden unter Nutzung einer „faulen“, rein funktionalen Sprache konfiguriert, die extra für diesen Zweck entworfen wurde. Shell-Skripte und andere externe Programme (z. B. make) können genutzt werden, um Pakete zu kompilieren. Dabei erlaubt diese Sprache präzise Abhängigkeitsüberwachungen. Kryptografische Hash-Werte geben die exakten Build- und Laufzeitabhängigkeiten für jedes Paket an und jedes Quellcode- oder Binärpaket wird über einen solchen Hash repräsentiert, wodurch Repositories ein Cache von Paketen, indiziert von einem kryptografischen Hash, darstellen.

Abhängigkeiten werden von einer Systemfunktionalität aufgelöst, die dem Hardlinken ähnelt. Die Version einer Software wird solange nicht entfernt, bis kein Paket mehr auf sie verweist. Dies kann zwar zu größerem Speicherverbrauch führen, aber macht alle Upgrades sicher (eine Garantie, dass keine bestehende Applikation die Funktionstüchtigkeit aufgibt) und atomar. Es erlaubt außerdem, mehrere Versionen beliebiger Pakete, auch wenn sie sich nur um Parameter unterscheiden, ohne Interferenzen nebeneinander zu betreiben.

Nix basiert auf einer eigenen Ordnerstruktur zum Installieren von Paketen. Jedes Paket wird in ein Unterverzeichnis des Nix-Verzeichnisses installiert. Bei der Benennung der Ordner werden verschiedenen Versionen eines Pakets Hash-Werte dem Paketnamen vorangestellt, um sie identifizieren zu können.

Nix kann mit einigen Vorbehalten als Paketmanager auf einem bestehenden Betriebssystem genutzt werden, wie beispielsweise einer Linux-Distribution. Außerdem lässt sich Nix nutzen, um jedwede Art von Dateikonfigurationen zu warten, so z. B. Serverkonfigurationen zusätzlich zum Paketmanagement im engen Sinne.

Im Gegensatz zu herkömmlichen Paketmanagern unterstützt Nix so genannte Profile. Ein Profil ist eine Umgebung in der bestimmte Pakete installiert sind. Profile ermöglichen es schnell zwischen unterschiedlichen Versionen installierter Software zu wechseln. Jeder Benutzer (auch nicht Administrator) kann Profile anlegen und in diesen Software installieren.

Nix kann auch mit Paketen von anderen Paketmanagern, wie z. B. Bower[6] oder Cabal, umgehen.

Software im Umfeld von Nix[Bearbeiten | Quelltext bearbeiten]

NixOS[7] ist eine Linux-Distribution, die Nix für die Verwaltung der Software nutzt. Dies zieht sich konsequent durch die Distribution.[8] NixOS verwendet im Gegensatz zu GuixSD Systemd.

GNU Guix Das GNU Projekt kündigte im November 2012 die erste Veröffentlichung von GNU Guix (genauso ausgesprochen wie „geeks“), einem funktionalen Paketmanager, der auf Nix aufbaut und unter anderem Guile Scheme APIs bereitstellt, an.[9] Dieses Projekt wurde im Juni 2012 von Ludovic Courtès, einem der „GNU Guile hackers“ gestartet.[10] GNU Guix wird hauptsächlich in der Linuxdistribution „GuixSD“ eingesetzt.

Hydra Ist eine Continuous-Integration-Software, welche automatisiert Nixpaketen bauen und testen kann.[11]

NixOps Ist ein DevOps-Tool welches es erlaubt durch Nix-Expressions beschriebene Systeme z. B. auf Amazon EC2 zu deployen.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Prins, P., Suresh, J. and Dolstra, E., „Nix fixes dependency hell on all Linux distributions,“ linux.com, December 22, 2008
  2. Dolstra, E., de Jonge, M. and Visser, E. „Nix: A Safe and Policy-Free System for Software Deployment.“ (Memento des Originals vom 5. März 2012 im Internet Archive) i Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  3. Dolstra, E. The Purely Functional Software Deployment Model. (Memento des Originals vom 5. März 2012 im Internet Archive) i Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  4. https://nixos.org/nixos/foundation.html
  5. (Memento des Originals vom 1. August 2017 im Internet Archive) i Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/conf.nixos.org
  6. https://nixos.org/wiki/Bower2nix
  7. nixos.org
  8. Dolstra, E. and Löh, A. „NixOS: A Purely Functional Linux Distribution.“ (Memento des Originals vom 5. März 2012 im Internet Archive) i Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  9. Courtès, Ludovic (23. November 2012).
  10. Stallman, Richard (5. Juni 2012).
  11. https://nixos.org/hydra/