Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
vortraege:nix-paketmanager [2023-05-11 10:45] – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1 | vortraege:nix-paketmanager [2023-05-11 10:45] (aktuell) – vortraege:peter_boetcher:peters_doku_sammlung:nix-paketmanager umbenann in vortraege:nix-paketmanager (cleanup) Franke | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Einführung in den Nix-Paketmanager ====== | ||
+ | |||
+ | ===== Der Paketmanager ===== | ||
+ | |||
+ | Ein Paketmanager behandelt Pakete, Softwareverteilungen und Daten in Archivdateien. Pakete enthalten Metadaten wie den Namen der Software, die Beschreibung ihres Zwecks, die Versionsnummer, | ||
+ | |||
+ | Allerdings haben traditionelle Paketmanager wie apt und pacman Schwachstellen, | ||
+ | |||
+ | |||
+ | Nix wurde als zuverlässiges und reproduzierbares Paketverwaltungssystem konzipiert, das die üblichen Probleme der traditionellen Paketmanagern vermeidet. Aber um die Lösung zu verstehen, müssen wir zuerst das Problem verstehen. | ||
+ | |||
+ | |||
+ | ==== Nachteile der traditionellen Paketmanager ==== | ||
+ | |||
+ | Traditionelle Paketmanager wie apt oder pacman installieren alle Pakete global. Wenn du ein Paket aktualisierst oder neu konfigurierst, | ||
+ | |||
+ | |||
+ | ===== Was macht NIX? ===== | ||
+ | |||
+ | Aktualisierungen sind nicht sofort. Bei jeder Aktualisierung werden die bestehenden Pakete während der gesamten Dauer der Aktualisierung angewendet. Das bedeutet, dass bei einer Unterbrechung der Aktualisierung auf eine neue Konfiguration - z.B. Stromausfall auf halber Strecke - das System sich immer noch in einem stabilen Zustand befindet. | ||
+ | |||
+ | |||
+ | ==== Die Hölle der Abhängigkeiten. ==== | ||
+ | |||
+ | Diesem Problem ist sogar eine ganze Wikipedia-Seite gewidmet. Angenommen, du müssen ein Paket A installieren, | ||
+ | Traditionelle Paketmanager können nicht zwei Versionen desselben Pakets zur gleichen Zeit verwenden. In diesem Fall kannst wir also entweder B oder D installieren, | ||
+ | |||
+ | |||
+ | ==== Diamant-Abhängigkeitskonflikt ==== | ||
+ | |||
+ | FIXME Was meint das??? | ||
+ | |||
+ | |||
+ | Es gibt viele andere Abhängigkeitsprobleme wie zirkuläre Abhängigkeit und lineare Abhängigkeits-Konflikte, | ||
+ | |||
+ | |||
+ | ===== Wie Nix diese Probleme löst ===== | ||
+ | |||
+ | Stelle dir Nix als eine Maschine vor, die alle Eingaben in Bezug auf ein Paket entgegennimmt | ||
+ | d.h. seine Abhängigkeiten, | ||
+ | Eine Neukompilierung des Pakets durch Änderung der Abhängigkeitsversion oder durch einer anderen Abhängigkeit führt zu einem völlig anderen Paket mit einem anderen Hash. | ||
+ | |||
+ | |||
+ | ==== Mehrere Versionen ==== | ||
+ | |||
+ | Aufgrund des Hashing-Schemas landen verschiedene Versionen eines Pakets in verschiedenen Pfaden im Nix-Speicher, | ||
+ | Noch einmal zum Problem der Abhängigkeitshölle, | ||
+ | |||
+ | |||
+ | ==== Atomare Änderungen und Rollbacks ==== | ||
+ | |||
+ | Da sich die aktualisierten Paketen völlig von den bestehenden unterscheiden, | ||
+ | |||
+ | |||
+ | Da die alten Versionen der Pakete noch vorhanden sind, bedeutet dies, du kannst den Rechner jederzeit auf die alten Pakete zurücksetzen. | ||
+ | Wenn du der Meinung bist, dass diese ganze Mehrfachversions-Kram zu viel Platz verbraucht, kannst du jederzeit einen Garbage-Collection-Befehl ausführen, der deine unbenutzten Pakete löscht. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Wie man Nix installiert ===== | ||
+ | |||
+ | Wenn du Nix ausprobieren willst, aber nicht deine komfortable Distribution verlassen willst, die du aufgebaut hast, kannst du den Nix-Paketmanager auf jeder Linux Distribution mit nur einem einzigen Befehl installieren. | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | **Warnung: | ||
+ | </ | ||
+ | |||
+ | Wenn du dir sicher bist, führe einfach den folgenden Befehl in Ihrem Terminal aus: | ||
+ | curl -L https:// | ||
+ | |||
+ | Die Installation kann auch über die jeweilige Anwendungsverwaltung der Distribution erfolgen.\\ | ||
+ | |||
+ | ==== Eine Einzel- oder eine Mehrbenutzer-Installation ist möglich. ==== | ||
+ | |||
+ | Siehe: https:// | ||
+ | |||
+ | FIXME Durchführung einer Einzelplatz-Installation von Nix.../ | ||
+ | |||
+ | Das Verzeichnis /nix existiert, ist aber für Sie nicht beschreibbar. Dies könnte darauf hinweisen, dass ein anderer Benutzer bereits eine Einzelplatzinstallation von Nix auf diesem System durchgeführt hat. | ||
+ | |||
+ | |||
+ | Wenn Sie die Mehrbenutzerunterstützung aktivieren möchten, lesen Sie: FIXME URL??? | ||
+ | Wenn du mit einer Einzelbenutzerinstallation fortfahren willst: | ||
+ | chown -R < | ||
+ | |||
+ | |||
+ | ===== Sicherheit ===== | ||
+ | |||
+ | Nix hat zwei grundlegende Sicherheitsmodelle. Erstens kann es im " | ||
+ | Nix wurde im " | ||
+ | |||
+ | |||
+ | ===== Konfiguration ===== | ||
+ | |||
+ | Um den Nix-Daemon beim Booten zu starten, aktiviere den nix-daemon.service. | ||
+ | (Daemon - einen Prozess, der im Hintergrund abläuft und Dienste zur Verfügung stellt) | ||
+ | |||
+ | Füge die erforderlichen Benutzer zur Gruppe nix-users hinzu, um auf den Socket des Daemons zugreifen zu können. | ||
+ | |||
+ | ==== Füge einen Kanal hinzu und aktualisiere ihn. ==== | ||
+ | |||
+ | Die Liste der offiziellen NixOS-Kanäle findest du unter https:// | ||
+ | nix-channel --add https:// | ||
+ | nix-channel --update | ||
+ | |||
+ | ===== Wie benutzt man den Nix-Paketmanager? | ||
+ | |||
+ | ==== Profile ==== | ||
+ | |||
+ | Im Gegensatz zu herkömmlichen Paketmanagern unterstützt Nix 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. | ||
+ | |||
+ | ==== Channels - Kanäle ==== | ||
+ | |||
+ | Ein Kanal ist eine Git-Repository-Liste (verwaltetes Verzeichnis) von Paketen und deren Definitionen, | ||
+ | |||
+ | |||
+ | ==== Typische Befehle: ==== | ||
+ | |||
+ | |||
+ | Aktuelle Kanäle auflisten: | ||
+ | nix-channel --list | ||
+ | |||
+ | Neue Kanäle abonnieren: | ||
+ | nix-channel --add https:// | ||
+ | |||
+ | Kanäle entfernen: | ||
+ | nix-channel --remove channel-alias | ||
+ | |||
+ | Kanäle aktualisieren: | ||
+ | nix-channel --update channel-alias | ||
+ | |||
+ | Alle Kanäle aktualisieren: | ||
+ | nix-channel --update | ||
+ | |||
+ | |||
+ | ==== Suche nach Paketen ==== | ||
+ | |||
+ | So suchst du nach einem Paket in der aktuellen Kanäle: | ||
+ | nix search < | ||
+ | |||
+ | Es wird eine Reihe von Anwendungen aufgelistet, | ||
+ | < | ||
+ | |||
+ | |||
+ | Du kannst aber auch den Online-Nix-Store besuchen und nach dem Paket mit Anweisungen zu dessen Installation suchen: https:// | ||
+ | |||
+ | |||
+ | ==== Installieren von Paketen ==== | ||
+ | |||
+ | Um ein beliebiges Paket aus dem aktuellen Profil zu installieren, | ||
+ | nix-env -iA < | ||
+ | Das " | ||
+ | |||
+ | Wenn du vom Standardkanal aus installieren möchtest, verwende: | ||
+ | nix-env -i < | ||
+ | |||
+ | |||
+ | ==== Pakete deinstallieren ==== | ||
+ | |||
+ | Um ein beliebiges Paket im aktuellen Profil zu installieren, | ||
+ | nix-env -e < | ||
+ | |||
+ | |||
+ | ==== Upgrade von Paketen ==== | ||
+ | |||
+ | Um ein bestimmtes Paket zu aktualiduren, | ||
+ | nix-env -u subversion | ||
+ | |||
+ | Um alle Pakete des Profils zu aktualisieren, | ||
+ | nix-env -u | ||
+ | |||
+ | ==== Rollbacks ==== | ||
+ | Du kannst deinen letzten nix-env-Befehl zurücksetzen: | ||
+ | nix-env --rollback | ||
+ | |||
+ | Jedes Mal, wenn du eine nix-env-Operation durchführst, | ||
+ | der Benutzer-Umgebung erstellt. Wenn du zum Beispiel gimp installierst, | ||
+ | nix-env --list-generations | ||
+ | |||
+ | und wechsele zu einer bestimmten Generation mit: | ||
+ | nix-env --switch-generation < | ||
+ | |||
+ | |||
+ | ==== Entfernung von Müll ==== | ||
+ | |||
+ | Du kannst ältere Generationen löschen: | ||
+ | nix-env --delete-generations old | ||
+ | |||
+ | Um bestimmte Generationen zu löschen, verwende: | ||
+ | nix-env --delete-generations 1 2 | ||
+ | |||
+ | |||
+ | ===== Hashes in Nix ===== | ||
+ | |||
+ | Kryptographische Hashes spielen an vielen Stellen im Nix-Ökosystem eine wichtige Rolle. Wenn ein Hash irgendwo verwendet wird, sind zwei Kriterien entscheidend: | ||
+ | |||
+ | Unterstützte Algorithmen sind md5, sha1, sha256, sha512. Die ersten beiden sind veraltet und sollten nicht mehr verwendet werden, aber es kann sein, dass du in vorhandenem Code noch über sie stolpern. | ||
+ | |||
+ | Ein Hash - der einfach eine Folge von Bytes ist - wird normalerweise kodiert, damit er als String dargestellt werden kann. Gängige Kodierungen sind base16 (gemeinhin " | ||
+ | |||
+ | |||
+ | ===== Quellen: ===== | ||
+ | |||
+ | By Shobhit Singh / June 10, 2021 : https:// | ||
+ | Nixos : https:// | ||
+ | |||
+ | |||
+ | **Ergänzende zum weiteren Studium:** | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | Wer Youtube braucht, diese fand ich OK: | ||
+ | |||
+ | * %%https:// | ||
+ | * %%https:// | ||