Über uns

Ein Podcast, der sich mit dem Web, Technologie und Open Source Software auseinander setzt. mehr...

@binaergewitter auf

Binärgewitter
Now with more Internet!


Binärgewitter Spezial #7: NixOS 24.09.2017

Endlich ist sie da. Die Spezial Sendung zu NixOS. Felix und Jörg sind NixOS Jünger und lassen sich von Ingo mal befragen wie Nix und NixOS so funktionieren.

Was ist Nix?

  • Vieles aber vorallem ein Paketmanager für Linux und andere unixoide Systeme
  • Gleiche Liga wie apt (debian-alike), pacman (archlinux), dnf (fedora)
  • Aber einzigartige Funktionen, u.a
    • atomare Upgrades/Downgrades
    • konfliktfreie Installation verschiedener Versionen eines Paketes
    • Mehrbenutzerunterstützung

Vergleich Apt mit Nix

  • Befehl: apt install sl (die hässliche Eisenbahn)
  • Lädt Paketliste
  • Was muss installiert werden? (ncurses, libc)
  • Versionskonflikte?
  • LSB-Verzeichnisstruktur:
    • /usr/bin/sl
    • /usr/share/man/man1/sl.1.gz
  • nix-shell -p sl (zum ausprobieren)
  • Paketliste == nixexprs: (ein Art Bauanleitung für alle Pakete)
  • berechnet Bauanleitung für sl
  • checkt Binärcache
  • statt LSB, berechnet Pfad für das Paket /nix/store/<sha256-bauanleitung>-sl-<versionsnummer>:
    • ./bin/sl
    • ./man/man1/sl.1.gz
  • Bauanleitung einzigartig und vollständig -> einzigartiger Pfad

Funktionales Paketmanagement

  • Jedes Paket ist isoliert (sieht nur seine Abhängigkeiten)
  • Reproduzierbar (Selbe Quellen/Befehle beim Bauen -> selbes Ergebnis)
  • Generisch (nicht auf Sprache/Technologie beschränkt, baut Skripte, z.B Shell, setzt Umgebungsvariablen)
  • verlässlich: alle Abhängigkeiten sind vollständig, Updates überschreiben alte Versionen nicht -> Rollbacks möglich
  • Effizient: nur notwendige Schritte beim Neubauen und aktualisieren, Abhängigkeiten nur einmal vorhanden

Nix-Projekt

Nixos-Konfiguration

  • deklarative Konfiguration
  • Konfigurationsmanagement für lau

Nix - Funktionsweise

  • Idee: Alle packages werden isoliert voneinander:
  • /nix/store/rpdqx...-firefox-3.5.4
  • Pfad: 160-bit kryptografischen Hash aller Paketabhängigkeiten:
    • Quellen, Bibliotheken, Kompiler, Buildskripte

Nix - Expressions

  • Nix Pakete werden mit Nix gebaut!
  • jede Paketbeschreibung eine Funktion
    • Eingabe: Abhängigkeiten des Paketes
    • Ausgabe: Derivation -> Pfad
  • kennt die Reihenfolge: Baut Abhängigkeiten vorher selbst (keine Zyklen)
  • implizite Laufzeitabhängigkeiten
  • lazy evaluation

Nixpkgs

  • source on github
  • >13.000 Pakete für x86_64 linux
  • Search NixOS packages
  • Abstraktionen für die meisten Buildsysteme
    • (*alle* Haskellpakete)
  • Aktuelle unterstützte Platformen (Binärpakete)
    • Linux: (legacy: i686), x86_64, (aarch64)
    • Mac OS X: x86_64
  • bietet Abstraktion (Magie) für Buildsysteme/Sprachspezifische Paketmanager
    • Pakete sind einfach zu bauen

nixpkgs/nixos

  • NixOS ist Bestandteil von Nixpkgs
  • 689 Module
    • Systemeinstellungen (Zeitzone, Fonts, Benutzer)
    • Services (sshd, nginx, openstack, gitlab, ...)

Hydra

  • Baut alle Pakete in nixpkgs
  • selber betreibbar (binary cache) - interessant für Firmen/Gruppen
  • Meisten Pakete müssen nicht selber gebaut werden:
    • allerdings einfach möglich (patches, neue Versionen aka Backports etc)

Entwicklungsumgebungen (nix-shell)

  • nix-shell liest default.nix oder shell.nix ein und startet ein bash mit konfigurierter Umgebung in der alle Abhängigkeiten zum Bauen sichtbar sind
  • Einheitliche Abhängigkeiten, wenn man im Team arbeitet (ganz ohne docker)

NixOps

  • NixOps
  • dockt an verschiedene Cloud-Provider/SSH/VM-Manager:
    • AWS, GCE, Azure, Libvirt, Digitalocean, Hetzner, Virtualbox, NixOS-Container (nspawn)
  • Cluster hochziehen (Maschinen erstellen, Netzwerk konfigurieren, Instanzgrößen, Platten)

Andere coole Nix dinge

Features in der Zukunft

  • Ende Oktober NixCon in München
  • Ende September: Release 17.09
  • PR für besseres Cross-Kompilieren (z.B. arm32)
  • nix 1.12

Wie fange ich mit nix an

  • Paketmanager auch unabhängig von NixOS nutzbar
  • kann man in die shell pipen...
    • sudo install -d -m755 -o $USER -g $USER /nix
    • curl https://nixos.org/nix/install | sh
  • ...oder per Paketmanager installieren (AUR):
  • Auch ohne root nutzbar
  • Handbuch, Wiki, IRC: #nixos auf freenode, Nix Pills


Binärgewitter Spezial #6: Programmiersprachen 2015 30.04.2015

Felix lernt Lua und Pfleidi schaut sich dieses Jahr mal Elixir angeschaut. Beide berichten über ihre Erfahrungen und warum man sich vielleicht dieses mal Sprache mal anschauen sollte.

Origin Stories

  • Was war unsere erste Programmiersprache?
    • pfleidi: MSL
    • Danach: C, Perl, Java
    • Felix: Counter-Strike Console Scripting, Autohotkey
      • Java, C, Python
    • Ingo: Pascal, Object Pascal

Lua

Lua Projekte/Frameworks/Libraries

Lua Ressourcen

Lua auf dem MicroController

Elixir

Allgemeines zu Elixir

Elixir Projekte/Frameworks/Libraries

Elixir Ressourcen


Binärgewitter Spezial #4 - Distributed Computing 17.05.2012

BOINC gibt es zwar schon lange und es wird immer noch viel benutzt. Felix und Ingo sprechen mit Torbjörn und Andreas über den Rechenkraft.net e.V., Distributed Computing, BOINC, Einsatzszenarien und Alternativen zu BOINC.

  • Berkeley Open Infrastructure for Network Computing
  • entwicklet von Dr. David Anderson am Space Science Laboratory der University of California, Berkeley
  • plattformunabhängiges Server-Client-Framework
  • Server
    • hauptsächlich in C geschrieben
    • Webfrontent in PHP
    • MySQL als Datenbank
    • Konfiguration über ein XML-File
    • LGPL
  • Client
    • in C geschrieben
    • bestehend aus
      • dem Kommandozeilen-Clienten (boinc) selbst (kann auch als Daemon laufen)
      • dem Kommandozeilen-Commander (boinccmd), um per Kommandozeile einen laufenden Clienten zu administrieren
      • dem grafischen BOINC-Manager (boincmgr), um grafisch einen laufenden Clienten zu managen
      • Commander und Manager können auch zu entfernten Clienten verbinden (z.B. mehrere Maschinen im LAN, aber nur ein Managing-Node)
    • Konfiguration ebenfalls über ein XML-File
  • Anwendungen für die eigentlichen Berechnungen werden von einzelnen Projekten bereitgestellt
    • drei Typen von Apps: klassische CPU, low CPU und GPU
    • CPU-Anwendungen können (rein theorerisch) auch SMP sein, in der Praxis haben sich jedoch einige Probleme seitens BOINC damit gezeigt
  • Nachteile von BOINC

###BOINC-Alternativen

###Anwendungen

###BOINC-Projekte

##Rechenkraft.net e.V.


Older posts