如何使 nix 存储中的源存档无效

Ryn*_*ett 5 nixos

我最终在我的 nix 商店中找到了错误的软件包来源。这发生在前一段时间,所以我无法追踪日志文件来弄清楚它是如何发生的。我为重新构建相同版本的包所做的任何尝试都会导致使用相同的错误源。有没有办法使源存档无效或强制重新获取?

我可以挂载商店rw并删除存档,但似乎应该有一个不破坏 nixosro设计的解决方案。

Vla*_*nát 6

nix-store --delete /nix/store/path如果您不通过某些引用保持路径活着,您总是可以,但您应该注意一些细节。我假设您的来源是通过fetchurl或类似的固定输出推导获得的。这些指定输出的散列,并且您在 nix 存储中的路径与该散列匹配,因此它实际上是正确的来源(考虑到您对 nix 的要求)。

典型的简单路径是将散列覆盖fetchurl为一些不正确的值,例如用零替换一些字符,然后 nix 将尝试重新获取并打印结果(不匹配)散列,然后您可以更新该散列。还有nix-prefetch-url避免进行两次提取等。