Paketmanager Nix unter Tumbleweed einrichten

Hinweis: In dem Thema Paketmanager Nix unter Tumbleweed einrichten gibt es 1 Antwort.
  • Zunächst das Paket aus den Repos installieren:


    Code
    sudo zypper in nix

    Dies installiert das Paket bzw. Nix als Multiuser-Variante. Allerdings ist die Konfiguration danach alles andere als komplett.


    Zunächst muss bei Multiuser der Nix-Daemon gestartet werden:


    Code
    sudo systemctl status nix-daemon.socket nix-daemon.service
    sudo systemctl start nix-daemon.socket nix-daemon.service
    sudo systemctl enable nix-daemon.socket nix-daemon.service

    Zum Laden der Pakete verwendet Nix Zertifikate, welche es aber unter Tumbleweed von selbst nicht findet. Daher sollte (zumindest am Anfang) die Umgebungsvariable NIX_SSL_CERT_FILE eingerichtet werden. D.h. man weist ihr den Pfad zum openSUSE-Zertifikatspeicher zu, indem man die Servicedatei bearbeitet:


    Code
    sudo systemctl edit nix-daemon.service

    Im nun gestarteten Editor den Override-Bereich der Textdatei (zwischen den drei ### und den drei ###) posten:

    Code
    [Service]
    Environment="NIX_SSL_CERT_FILE=/etc/ssl/ca-bundle.pem"

    vi dann mit <Esc>, ":wp" verlassen

    Das erste Hello World könnte somit jetzt erfolgreich heruntergeladen werden und laufen:

    Code
    nix run nixpkgs#hello

    Es wird "Hello, world!" ausgegeben.


    "nix-shell -p hello" scheitert aber noch, da 'nixpkgs' nicht im Suchpfad liegt. Man kann sich zunächst mit


    Code
    nix-shell -I nixpkgs=channel:nixos-unstable -p hello

    behelfen.


    Es werden zum Test zahlreiche Pakete in den lokalen Nix-Store (Paketspeicher) geladen. Wenn man die Shell so anlegt, gilt nach meinem Verständnis :


    Code
    python3

    Ruft das Tumbleweed-Python3 auf.


    Der Clou:

    Code
    gcc -v

    zeigt, dass gcc aus dem lokalen Nix-Store kommt.


    Mit

    Code
    nix-shell -I nixpkgs=channel:nixos-unstable -p hello --pure

    sorgt der --pure-Parameter dafür, dass man python3 nicht mehr aufrufen kann und man hat nach meinem Verständnis eine abgekapselte Nix-Shell. Was in eine Shell hinein installiert wird, kann man später z.B. über eine shell.nix -Datei festlegen!


    Das oben genannte Problem mit der Unauffindbarkeit von nixpkgs ist ärgerlich und sollte sich mit einem ersten Update klären. Leider zerlegt es beim Aufruf von sudo die Umgebungsvariable für die Download-Zertifikate, sodass sich folgender Aufruf zum Updaten ergibt:


    Code
    sudo -E NIX_SSL_CERT_FILE=/etc/ssl/ca-bundle.pem nix-channel --update


    Hier ist dann die Frage, ob Nix schon auf einen Channel (sowas wie ein Repo) als Bezugsquelle für seine Pakete eingestellt ist.


    Channel hinzufügen:

    Code
    sudo nix-channel --add https://channels.nixos.org/nixos-unstable nixpkgs


    Konfigurierte Channels anzeigen:

    Code
    sudo nix-channel --list


    jedenfalls sollte das Update möglich sein und sich die Hello-Shell auch auf kurzem Wege anlegen lassen:


    Code
    nix-shell -p hello

    oder auch

    Code
     nix-shell -p hello --pure

    :thumbup:

    Behelfen kann man sich beim Update bezüglich der blöden Umgebungsvariable und sudo risikofreudigerweise durch das Bearbeiten der sudo-Konfiguration mit "sudo visudo". Etwas weiter unten, bei "Defaults env_keep" kann man NIX_SSL_CERT_FILE in der Aufzählung, mit Leerzeichen getrennt hinzufügen. Im Moment bin ich mir aber über die Konsequenzen noch nicht abschließend im Klaren, denn an der sudo-Konfiguration herumzuspielen ist immer riskant! Oder man legt sich einfach ein Alias an...

    Einmal editiert, zuletzt von Spaceloop ()

    Für den Inhalt des Beitrages 327823 haftet ausdrücklich der jeweilige Autor: Spaceloop

  • Wäre schön gewesen wenn du einen Link zur Projekt-Seite oder ähnlichem eingefügt hättest, damit man sich unter dem Programm etwas vorstellen kann- Zum Beispiel wie es aussieht etc.

    Ansonsten ist das sicherlich einen Blick wert.


    Nachtrag: Ich habe einmal etwas in den Paketen herum gesucht und bin erstaunt, das selbst Software, die man sich sonst von der Projektseite herunter laden müsste, in aktuellen Versionen vorliegt.

    Das schaue ich mir definitiv einmal näher an.