Nix (Paketmanager)
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.[5][6][7] 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 NixOS Foundation, einer Stiftung niederländischen Rechts, vorangetrieben.[8] Diese richtet auch die NixCon, eine Konferenz zu Nix aus.[9]
Nix | |
---|---|
Basisdaten | |
Entwickler | Eelco Dolstra |
Erscheinungsjahr | 2003[1] |
Aktuelle Version | 2.12.0[2] (6. Dezember 2022) |
Betriebssystem | Linux, Darwin |
Programmiersprache | C++[3][4], Perl |
Kategorie | Paketverwaltung |
Lizenz | GNU Lesser General Public License, Version 2.1 |
nixos.org |
Nix
Nix-Pakete werden unter Nutzung einer „verzögert ausgewerteten“, 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 Repositorys 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-Administratoren) kann Profile anlegen und in diesen Software installieren.
Nix kann auch mit Paketen von anderen Paketmanagern, wie z. B. Bower[10] oder Cabal, umgehen.
Software im Umfeld von Nix
NixOS[11] ist eine Linux-Distribution, die Nix für die Verwaltung der Software nutzt. Dies zieht sich konsequent durch die Distribution.[12] NixOS verwendet im Gegensatz zu „Guix System“ 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’ Prinzipien aufbaut und unter anderem Guile Scheme APIs bereitstellt, an.[13] Dieses Projekt wurde im Juni 2012 von Ludovic Courtès, einem der „GNU Guile hackers“ gestartet.[14] GNU Guix wird hauptsächlich in der Linuxdistribution „Guix System“ eingesetzt.
Hydra Ist eine Continuous-Integration-Software, welche automatisiert Nixpakete bauen und testen kann.[15]
NixOps Ist ein DevOps-Tool welches es erlaubt durch Nix-Expressions beschriebene Systeme z. B. auf Amazon EC2 zu deployen.
Siehe auch
- CFEngine
- Maak – ein Werkzeug zur automatischen Erstellung von Software (ähnlich wie make) und darauf ausgelegt komplexe Software zu erstellen
- Skriptsprache
- Stapelverarbeitung
- Softwaretechnik
Weblinks
Einzelnachweise
- github.com.
- github.com.
- The nix Open Source Project on Open Hub: Languages Page. (abgerufen am 19. Februar 2018).
- github.com. (abgerufen am 12. November 2022).
- Prins, P., Suresh, J. and Dolstra, E., „Nix fixes dependency hell on all Linux distributions,“ linux.com, 22. Dezember 2008
- Dolstra, E., de Jonge, M. and Visser, E. „Nix: A Safe and Policy-Free System for Software Deployment.“ (Memento des vom 5. März 2012 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. (PDF)
- Dolstra, E. The Purely Functional Software Deployment Model. (Memento des vom 5. März 2012 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. (PDF)
- https://nixos.org/nixos/foundation.html
- — (Memento des vom 1. August 2017 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- Archivierte Kopie (Memento des vom 17. November 2015 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- nixos.org
- Dolstra, E. and Löh, A. „NixOS: A Purely Functional Linux Distribution.“ (Memento des vom 5. März 2012 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. (PDF)
- Courtès, Ludovic (23. November 2012).
- Stallman, Richard (5. Juni 2012).
- https://nixos.org/hydra/