
Ich habe die falsche Quelle für ein Paket in meinem Nix-Store gefunden. Das ist schon eine Weile her, daher kann ich die Protokolldatei nicht finden, um herauszufinden, wie es passiert ist. Alle Versuche, die gleiche Version des Pakets neu zu erstellen, führen dazu, dass dieselbe falsche Quelle verwendet wird. Gibt es eine Möglichkeit, ein Quellarchiv ungültig zu machen oder einen erneuten Abruf zu erzwingen?
Ich könnte den Store mounten rw
und das Archiv löschen, aber es scheint, als müsste es eine Lösung geben, die das Design von Nixos nicht untergräbt ro
.
Antwort1
Sie können den Pfad immer nix-store --delete /nix/store/path
durch einige Referenzen am Leben erhalten, wenn Sie ihn nicht haben, aber Sie sollten einige Details beachten. Ich gehe davon aus, dass Ihre Quellen durch fetchurl
oder eine ähnliche Ableitung mit fester Ausgabe erhalten werden. Diese geben den Hash der Ausgabe an, und der Pfad, den Sie im Nix-Store haben, stimmt mit diesem Hash überein, sodass es sich tatsächlich um die richtige Quelle handelt (unter Berücksichtigung dessen, was Sie von Nix verlangt haben).
Der typische einfache Weg besteht darin, den Hash mit einem falschen Wert zu überschreiben fetchurl
, z. B. einige Zeichen durch Nullen zu ersetzen. Nix versucht dann, den resultierenden (nicht übereinstimmenden) Hash erneut abzurufen und auszudrucken, den Sie dann aktualisieren können. Es besteht auch die Möglichkeit, nix-prefetch-url
zweimalige Abrufe usw. zu vermeiden.