[teilweise hier gelöst: https://plus.google.com/110416349762686874861/posts/PVGHL1Tpeb9 ; aber nicht ganz]
Ich möchte eine meiner NixOS-Maschinen als Cache für die Pakete verwenden, um nicht bei jedem Upgrade für jede einzelne Maschine alles aus Hydra abzurufen. Also versuche ich das: https://nixos.org/nix/manual/#sec-sharing-packages . Aber
Wenn ich versuche zu verwenden
nix-serve -p <port>
,nix-env --option extra-binary-caches http://<host>:<port>/
(auch bei der Ausführung wieroot
!) Einfach ignoriert diesen Cache und sagte , dass „NAR - Info - Datei“ ... „eine Unterschrift fehlt“, und versucht, Schalter aufcache.nixos.org
. Funktioniertnix-serve
also nicht wie erwartet. Bedeutet das, dass die Dokumentation nicht mehr aktuell ist oder dass sienix-serve
kaputt ist?While
nix-copy-closure --to <user>@<host>
funktioniert (wenn<user>
als vertrauenswürdiger Benutzer hinzugefügt wirdnix.trustedUsers
). Dies bei jedem Upgrade zu tun, wäre jedoch sehr unpraktisch. Übrigens. Was mich hier auch verwirrt, ist, wie--from
es verwendet werden soll?
Ich habe ein allgemeines Verständnis dafür, wie kryptografische Signaturen funktionieren und warum sie zum Signieren von Paketen (und Repositorys) verwendet werden. Aber
Unter diesen Umständen brauche ich es einfach nicht: Das Risiko eines MITM ist kein Grund zur Sorge. Ich möchte nur einige GiBs Binärdateien regelmäßig und mühelos von einem Computer auf einen anderen kopieren. Ich könnte die Überprüfung natürlich einfach vollständig über deaktivieren
nix.requireSignedBinaryCaches = false
, aber gibt es keinen weniger radikalen Weg? Wenn ich beispielsweisenix-env
alsroot
oder als "vertrauenswürdiger Benutzer" aufrufe und diesen "zusätzlichen" Binärcache als "vertrauenswürdigen Binärcache" registriert habe; Bedeutet das nicht, dass ich weiß, was ich tue, und dass das System nicht über fehlende Signaturen nörgeln muss? (ohne dass die Überprüfung insgesamt deaktiviert werden muss) Ich habe nicht herausgefunden, wie die Überprüfung nur für eine bestimmte "vertrauenswürdige" Quelle / einen bestimmten "vertrauenswürdigen" Benutzer deaktiviert werden kann, und vermute ziemlich genau, dass sie nicht vorhanden ist (dh Fehler).Um diesen Signaturmechanismus einzuhalten, könnte ich wahrscheinlich auch versuchen, einen "vollwertigen" Binärcache einzurichten, indem ich
nix-store --generate-binary-cache-key
dannnix-push --dest <somewhere> --key-file <secret-1> --none <cherrypicked-paths>
den öffentlichen Schlüssel auf den Clients verwende und registriere. Aber es ist ganz und gar nicht das, was ich will: die Archive auf dem "Server" speichern und die Pfadenix-push
explizit festlegen. Ich möchte nur, dass entwedernix-serve
diese gemeinsam genutzten Pakete vor der Lieferung signiert werden, damit die empfangende Seite glücklich ist, odernix-env
dass ich mich nicht über das Fehlen einer Signatur beschwere, wenn ich absolut sicher bin, dass diese bestimmte Quelle vertrauenswürdig ist!
Fazit: Ich bin mir ziemlich sicher, dass nix-serve
der Mechanismus zur Überprüfung der Signatur (oder beides) einfach defekt / nicht gewartet ist. Man kann also alles weniger als Frage betrachten, sondern eher als Kandidaten für einen Fehlerbericht. Aber wenn ich falsch liege - noch besser.