
我最終在我的 nix 商店中找到了錯誤的軟體包來源。這發生在一段時間前,所以我無法追蹤日誌檔案來弄清楚它是如何發生的。我嘗試重建相同版本的軟體包都會導致使用相同的錯誤來源。有沒有辦法使來源存檔無效或強制重新取得?
我可以安裝商店rw
並刪除存檔,但似乎應該有一個不會顛覆 nixosro
設計的解決方案。
答案1
nix-store --delete /nix/store/path
如果您不透過某些參考保持路徑處於活動狀態,您總是可以這樣做,但您應該注意一些細節。我假設您的來源是透過fetchurl
或類似的固定輸出推導獲得的。這些指定輸出的雜湊值,並且您在 nix 儲存中的路徑與該雜湊值匹配,因此它實際上是正確的來源(考慮您對 nix 的要求)。
典型的簡單路徑是將散列覆蓋fetchurl
為一些不正確的值,例如用零替換某些字符,然後 nix 將嘗試重新獲取並打印結果(不匹配)散列,然後您可以更新該散列。還要nix-prefetch-url
避免兩次提取等。