• Wenn du alle Inhalte sehen, oder selber eine Frage erstellen möchtest, kannst du dir in wenigen Sekunden ein Konto erstellen. Die Registrierung ist kostenlos, als Mitglied siehst du keine Werbung!

Paketmanager Nix

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Moin Moin,

ich bin gerade dabei von Homebrew auf Nix umzusteigen. Bis auf DavMail hab ich jetzt alles mit Nix installiert. Zusätzlich hab ich nix-darwin installiert. Ich hab jetzt alles, was die Unix-Tools angeht, in einer dawin-configuration.nix formuliert. Das sieht dann z.B. so aus:
Code:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
Jede Änderung, die ich an diesen Tools vornehmen möchte, schreibe ich in diese Datei und führe dann in der Shell
Code:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
aus – that's it.

Warum nun Nix anstelle von Homebrew?
  • Nix ist pure funktional, atomar transaktional, bietet Rollbacks und überhaupt… es ist irgendwie elegant.
  • nixpkgs (die Paketsammlung) ist eines der umfangreichsten aller Paketmanager (ca. 40k Pakete)
  • Nix kommt vor allem mit Multi-User-Umgebungen klar. Homebrew darf man nur mit einem User benutzen, sonst hat man sehr schnell ein Rechte-Fuckup. Nix erlaubt auch die gleichzeitige Installation und Nutzung gleicher Libs in verschiedenen Versionen. User können sich eigene SW installieren, die den Rest der Nix-Installation nicht tangiert.
Auf meinem NixOS-Testsystem beschreibe ich das komplette System in einer configuration.nix-Datei. Die komplette Konfiguration wird ausschliesslich hier descriptiv vorgenommen. Dann braucht es nur noch ein nixos-rebuild switch, und die Konfiguration wird sofort umgesetzt und aktiv. Bei Änderungen am Kernel oder ähnlichem muß neu gestartet werden. Auf diese Weise kann ich jederzeit in kürzester Zeit und vor allem mit minimalem Aufwand ein exakt gleiches System aus dem Boden stampfen.

tl;dr: Hat sich hier noch jemand mit Nix auf dem Mac beschäftigt? Vielleicht könnte man sich ja hier in diesem Thread austauschen. Ich hätte auch schon ein Problem: DavMail will nicht richtig laufen, wenn es via Nix installiert wurde. DavMail ist mittlerweile das einzige Paket, was ich via brew installiert habe.
 
  • Gefällt mir
Reaktionen: thorstenhirsch, Meilenstein und mausfang

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Im Grunde der gleiche Unterschied. brew, ports, apt und wie sie alle heißen arbeiten iterativ. Es werden nacheinander alle Packete und ihre Abhängigkeiten gebaut, was auch je nach Reihenfolge nicht immer das gleiche Ergebnis geben muss. Es gibt viel Raum für Abhängigkeitsprobleme. Z.B. wenn Pakete die gleiche Abhängigkeit haben, aber unterschiedliche Versionen verlangen. Dann wird es schnell ekelig.

Nix hingegen arbeitet deklarativ, d.h., ich beschreibe wie das System aussehen soll in einer oder mehreren nix-Dateien in der extrem simplen funktionalen Sprache nix. Dann gebe ich dem Paketmanager (nix-env bzw. nixos-rebuild bzw. darwin-rebuild) diese Datei(en) und der baut die komplette Umgebung neu. Erst wenn das ohne Fehler durchgelaufen ist, wird die alte Umgebung durch die Neue ersetzt. Ich kann auch Testdurchläufe machen, incl. Tests der gebauten Umgebung. Egal in welcher Reihenfolge man zu installierende Pakete aufzählt, ist das Ergebnis immer gleich.

Und was auch nett ist (wenn auch für mich eher perspektivisch), daß man mit nix-shell eine Ad-hoc-Shell bauen kann, in die auch gleich bestimmte SW in bestimmten Versionen installiert sind. Wenn ich die Shell wieder verlasse, wird auch automatisch die Umgebung zerstört. Sehr schön, wenn man Dinge Testen will, oder wenn man zum Entwickeln ganz bestimmte SW-Versionen benötigt.
 
  • Gefällt mir
Reaktionen: ruerueka und wegus

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Hmm… hat das hier echt noch keiner ausprobiert?!?
 

electricdawn

Mitglied
Mitglied seit
01.12.2004
Beiträge
10.720
Ist wohl nicht jeder so nerdig wie Du. ;)
Und das ist jetzt echt nicht böse gemeint. Ich finde es toll, wenn man sich mit sowas beschäftigt. Ist bestimmt eine tolle Sache für Systemadministratoren, die mit einer Konfigurationsdatei schnell einen Haufen gleiche Systeme hochziehen wollen. Für Otto-Normalnutzer wohl eher Overkill (und zwar atomarer).
 

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.296
Geht pkgsrc nicht auch unter macOS? Nachdem ich mir Nix mal unter Gentoo angesehen hatte, habe ich festgestellt, dass die Konfiguration die Pest ist.
 

mj

Mitglied
Mitglied seit
19.11.2002
Beiträge
8.677
Ging mir genauso. Ich hab mir Nix mal auf einem RHEL 7 System angeschaut aber bin sehr schnell wieder davon abgekommen. Ich sehe durch die deklarative Vorgehensweise ehrlich gesagt keine Vorteile mehr gegenüber der klassischen iterativen Abarbeitung. Die Probleme mit Abhängigkeiten waren früher bei RPM tatsächlich eine sehr große Herausforderung, mittlerweile haben aber alle mir bekannten Paketmanager (primär sind dies apt und yum) eine Vorabprüfung der Abhängigkeiten sowie die Möglichkeit, gegebenenfalls Parallelinstallationen in separate Pfadstrukturen vorzunehmen um Abhängigkeitskonflikte vorab aufzulösen. Über Source-RPMs (srpm) ist man da sogar noch flexibler.

Daher stand für mich persönlich der Aufwand, mich in Nix einzuarbeiten, in keinerlei Relation zu den potenziellen und aus meiner persönlichen Sicht rein theoretischen Vorteilen.
 
  • Gefällt mir
Reaktionen: wegus, warnochfrei und dg2rbf

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Ja, die Lernkurve ist bei Nix/NixOS höher. Mich hat hier die Tatsache so angefixt, daß es ein Paketmanager, Configurations- und Provisionierungstool in einem ist, also sowas wie Ansible und Vagrant built in ist.

Geht pkgsrc nicht auch unter macOS? Nachdem ich mir Nix mal unter Gentoo angesehen hatte, habe ich festgestellt, dass die Konfiguration die Pest ist.
Inwiefern war die Konfiguration eine Pest?

Ich hatte es seit den letzten 20 Jahren immer mal wieder mit Linux versucht. SUSE, Caldera, Mandriva(?), *buntu… 1-2 hab ich vergessen. Und in allen Fällen hatte es nicht lang gedauert und ein Update/Upgrade hat mir das System zerrissen. Das empfand ich immer sehr ernüchternd, weshalb ich es hier etwas ermutigender fand/finde. Mal schauen wie es sich noch für mich entwickelt. Ich weiß aber auch, daß man Linux auch einacher lernen kann, als mit NixOS. :) So wie eine funktionale Sprachen auch viel steilere Lernkurven haben. Leider hatte ich mir nie die Zeit genommen, um meine Scala-Skills auszubauen. Das hatte spaß gemacht.
 

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.296
Nix unter Gentoo bedarf zumindest einiger Konfiguration. Ohne Warnungen habe ich es niemals hinbekommen.

Fachlich ist Guix das bessere Nix - aber auch da gilt: ganz ehrlich, pkgsrc ist das Beste, was Nichtwindows zurzeit aufbieten kann.
 
  • Gefällt mir
Reaktionen: ruerueka

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Guix kling auch nett.

Nix auf maOS zu installieren ist so einfach wie Homebrew. nix-darwin sin nochmal 1-2 Handgriffe. Ansonsten passiert da alles weitgehend automatisch.

Was macht pkgsrc für dich so sexy? Und was meinst du mit "was Nichtwindows zurzeit aufbieten kann"? Gibt es den ultimativen Paketmanager ausgerechnet für Windows?
 

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.296
Ja, Chocolatey. So etwas würde ich mir für andere Systeme wünschen. - Nachtrag: Nein, anders formuliert: pkgsrc ist nur unter Nichtwindows relevant, weil es unter Windows nicht nativ unterstützt wird. ;)

pkgsrc hat eben, anders als Homebrew, MacPorts usw., genau den Charme, dass es unglaublich portabel ist, was wegen der Vielzahl an Anwendern sowohl das Angebot an enthaltener Software vervielfacht als auch die Pakete ausführlich patchen lässt, weil Fehler meist immer nur auf den Systemen auftreten, die man selbst nicht hat. Ich gebe aber zu, sehr viel Zeit mit BSDs verbracht zu haben, wo pkgsrc der Quasistandard ist. Vielleicht prägt das.
 
Zuletzt bearbeitet:

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Auf Youtube gibt es eine nette Videoserie zu Nix als Paketmanager. Der Macher selbst ist auch mit macOS unterwegs. Alles schön handliche Häppchen von <10min.
 
  • Gefällt mir
Reaktionen: electricdawn

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.296
Geht pkgsrc nicht auch unter macOS?
Nachtrag: Ich bin gestern Abend von MacPorts auf pkgsrc umgestiegen und bin durchaus nicht unbegeistert vom Angebot an verfügbaren Paketen, die überdies bisher immer vorkompiliert sind. Sehr schön!
Bisher fehlte mir auch noch bei keiner Software irgendeine macOS-spezifische Optimierung. Ich habe bewusst versucht, erst mal nur das nachzuinstallieren, was ich vorher aus MacPorts bezogen hatte. Ich bin zufrieden.
 

OmarDLittle

Mitglied
Mitglied seit
21.05.2017
Beiträge
1.531
Aktuell bin ich glücklich mit brew, Nix sieht interessant aus, aber wird hier Catalina bereits supported? In einem Supportforum fand ich nur den Hinweis aus 2019, wo es noch nicht lief und die Release Notes sagen nur x86_64 ist unterstützt, das ist nicht hilfreich.
 

agrajag

Mitglied
Thread Starter
Mitglied seit
25.08.2004
Beiträge
3.877
Nix stolpert gerade über einige Eingenheiten von Catalina. Eines der Hauptprobleme ist, daß das Root-Dateisystem auch für root nicht beschreibbar ist und root auch keine Firmlinks erzeugen darf. Leider sieht sich Apple nicht in der Lage /nix als default in die Whitelist zu packen, wie sie es auch mit /opt machen.

Der gegenwärtige Stand ist, daß man eine Nix-Partition anlegen und diese in die /etc/sythetic.conf eintragen muß.
 

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.296
Leider sieht sich Apple nicht in der Lage /nix als default in die Whitelist zu packen, wie sie es auch mit /opt machen.
Es spricht ja technisch auch nix :D dagegen, dass Nix einfach /opt/nix verwendet. Aber gut, wer braucht schon Standards?
 
  • Gefällt mir
Reaktionen: thorstenhirsch

electricdawn

Mitglied
Mitglied seit
01.12.2004
Beiträge
10.720
Ich habe vor ein paar Wochen mal Guix probiert. Das hat auch so einen funktionalen Paketmanager. Im Prinzip besteht das ganze Ding aus nichts anderem. Ist sehr interessant, wenn auch etwas(!) gewoehnungsbeduerftig.