Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

Paketmanager für User

Dank der speziellen Architektur von Nix erlaubt es außerdem benutzerspezifische Software-Installationen für jeden Anwender. Einfacher zu konfigurieren und für die meisten Anwendungen wohl auch sinnvoller ist aber die klassische Konfiguration, in der nur Root Software hinzufügen und entfernen darf. Als Erstes muss der Administrator nach der Installation des Paketmanagers die mitgelieferte Shell-Datei »nix.sh« einlesen, die für Binärpakete in »/etc/profile.d« steht ( Abbildung 1 ). Wer Nix selbst übersetzt, muss auf das passende Präfix achten oder in »/usr/local/etc« suchen. Beim ersten Aufruf erzeugt das Skript ein weiteres Skript, das künftig als Dreh- und Angelpunkt für die Nix-Nutzung dient:

Abbildung 1: Das Nix-Ressource-Skript sorgt dafür, dass die mit Nix installierten Programme auch gefunden werden.
# . /etc/profile.d/nix.sh
creating /root/.nix-profile

Damit das künftig automatisch funktioniert, sollte man »/etc/profile.d/nix« über eins der Login-Skripte, etwa »$HOME/.bash_profile« ausführen. Unter anderem wird als Resultat dessen der Pfad zu den Verzeichnissen mit ausführbaren Dateien »PATH« um »/root/.nix-profile/bin« erweitert. Auch der sogenannte Channel, also der Vertriebskanal für Software-Pakete wurde durch das Skript bereits konfiguriert, wie man in der Datei »/root/.nix-channels« sehen kann. Nun bleibt nur noch, den Channel auf den aktuellen Stand zu bringen, indem man einmal »nix-channel --update« aufruft. Der folgende Befehl zeigt dann alle verfügbaren Pakete an:

nix-env -qa '*'

Um zu sehen, wie Nix arbeitet, kann man testweise einmal den Vim-Editor mit »nix-env -i vim« installieren. Zusätzlich zu Vim installiert Nix noch die sieben Pakete, von denen das Vim-Paket abhängt. Weil es von all diesen Paketen schon Binärversionen gibt, dauert die Installation auch nur etwa eine Minute. Am Ende bekommt man dann einen Eindruck davon, wie Nix funktioniert, wenn es die folgenden Meldungen ausgibt:

building path(s) `/nix/store/sk8hv9y1aym6nmvpbz3nlj6r91j7pxqq-user-environment'
created 2 symlinks in user environment

Das aktuelle "User Environment" ist der erste Pfad, der unter anderem die typischen Hashes beinhaltet, mit denen Nix seine Komponenten verwaltet – das sind Base-32-Darstellungen von 160 Bit langen Hashes. Diese Benutzerumgebung, die dem Anwender letztlich bestimmte Versionen von Programmen zur Verfügung stellt, besteht aus Symlinks, die teilweise wieder auf andere Symlinks verweisen, hinter denen sich irgendwann die passenden Pakete verbergen. Das ist ein bisschen kompliziert, aber zum Glück muss man sich normalerweise weder als Administrator noch als Anwender um diese Details kümmern. Das Binary des eben installierten Vim-Editors wird jedenfalls über »$HOME/.nix-profile/bin/vim« gefunden. Von Nix aktualisiert werden dann jeweils die in »$HOME/.nix-profile« befindlichen Dateien und Verzeichnisse.

NixOS

Das ist alles schön und gut, und wer will, kann nun auf nahezu beliebigen Unix-artigen Systemen ausprobieren, wie der Nix-Paketmanager funktioniert. Interessanter wird es allerdings mit NixOS http://1 , einer eigenen Linux-Distribution, die vollständig auf Nix basiert. Das bedeutet, das komplette System wird nach den oben beschriebenen Prinzipien zusammengesetzt und mit Nix verwaltet. Das bedeutet insbesondere, dass nun nicht mehr länger nach Lust und Laune an einzelnen Konfigurationsdateien herumgedoktert wird, sondern man bei einer Änderung ein funktionierendes System auf einem definierten Weg in ein weiterhin funktionierendes System transformiert ( Abbildung 2 ).

Abbildung 2: Klassische Linux/Unix-Systeme gehen kontinuierlich von einem Zustand in den nächsten über, während ein solcher Übergang bei NixOS definiert stattfindet.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023