我最终在我的 nix 商店中找到了错误的软件包来源。这发生在一段时间前,所以我无法追踪日志文件来弄清楚它是如何发生的。我尝试重建相同版本的包都会导致使用相同的错误源。有没有办法使源存档无效或强制重新获取?
我可以安装商店rw
并删除存档,但似乎应该有一个不会颠覆 nixosro
设计的解决方案。
答案1
nix-store --delete /nix/store/path
如果您不通过某些参考保持路径处于活动状态,您总是可以这样做,但您应该注意一些细节。我假设您的来源是通过fetchurl
或类似的固定输出推导获得的。这些指定输出的哈希值,并且您在 nix 存储中的路径与该哈希值匹配,因此它实际上是正确的源(考虑您对 nix 的要求)。
典型的简单路径是将散列覆盖fetchurl
为一些不正确的值,例如用零替换一些字符,然后 nix 将尝试重新获取并打印结果(不匹配)散列,然后您可以更新该散列。还要nix-prefetch-url
避免两次提取等。