Nix (Paketmanager)

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

Entwickler Eelco Dolstra
Erscheinungsjahr 2003[1]
Aktuelle Version 2.22.1[2]
(10. Mai 2024)
Betriebssystem Linux, Darwin, FreeBSD[3], OpenBSD[4]
Programmier­sprache C++[5], Perl[5], Shellskript[5], Nix[5], make[5], Autoconf[5], Rust[5], C[5], XML[5]
Kategorie Paketverwaltung
Lizenz GNU Lesser General Public License, Version 2.1[6]
nixos.org

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.[7][8][9] 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.[10] Diese richtet auch die NixCon, eine Konferenz zu Nix aus.[11]

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[12] oder Cabal, umgehen.

Software im Umfeld von Nix

[Bearbeiten | Quelltext bearbeiten]

NixOS[13] ist eine Linux-Distribution, die Nix für die Verwaltung der Software nutzt. Dies zieht sich konsequent durch die Distribution.[14] 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.[15] Dieses Projekt wurde im Juni 2012 von Ludovic Courtès, einem der „GNU Guile hackers“ gestartet.[16] GNU Guix wird hauptsächlich in der Linuxdistribution „Guix System“ eingesetzt.

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

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

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. github.com.
  2. Release 2.22.1. 10. Mai 2024 (abgerufen am 17. Mai 2024).
  3. NixBSD.
  4. OpenBSD Ports Readme: port sysutils/nix.
  5. a b c d e f g h i The Nix Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 18. Mai 2024).
  6. nix/COPYING at master. 26. April 2006 (abgerufen am 18. Mai 2024).
  7. Prins, P., Suresh, J. and Dolstra, E., „Nix fixes dependency hell on all Linux distributions,“ linux.com, 22. Dezember 2008
  8. 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)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  9. Dolstra, E. The Purely Functional Software Deployment Model. (Memento des Originals 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.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  10. https://nixos.org/nixos/foundation.html
  11. (Memento des Originals 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.@1@2Vorlage:Webachiv/IABot/conf.nixos.org
  12. Archivierte Kopie (Memento des Originals 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.@1@2Vorlage:Webachiv/IABot/nixos.org
  13. nixos.org
  14. Dolstra, E. and Löh, A. „NixOS: A Purely Functional Linux Distribution.“ (Memento des Originals 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.@1@2Vorlage:Webachiv/IABot/www.st.ewi.tudelft.nl (PDF)
  15. Courtès, Ludovic (23. November 2012).
  16. Stallman, Richard (5. Juni 2012).
  17. https://nixos.org/hydra/