相关疑难解决方法(0)

如何再次“ nix-build”构建的存储路径?

我创建了自己的存储库以获取一些git源。

# packages.nix
with (import <nixpkgs> {});

rec {
  rustcSource = fetchgit {
    url = https://github.com/rust-lang/rust;
    rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
    sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
  };
}
Run Code Online (Sandbox Code Playgroud)

然后我建立rustcSource

sudo nix-env -f package.nix -A rustcSource
Run Code Online (Sandbox Code Playgroud)

揭示了的存储路径/nix/store/096fpy9qjbz5r14aadjnq9d2md9ql9cg-rust-3191fba。问题是,我忘了下载它的子模块,所以我将表达式更改为包括子模块,

with (import <nixpkgs> {});

rec {
  rustcSource = fetchgit {
    url = https://github.com/rust-lang/rust;
    rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
    sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
    leaveDotGit = true;
    fetchSubmodules = true;
  };
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现nix-build它不会重新计算哈希值,并且看到路径已构建。因此,最终不下载子模块。

问:是尼克斯虫吗?如何“重建”或重新下载存储库?

PS实际上,我在其中创建了一个带有fetchgit的派生类,但由于未下载子模块而失败了。因此,以上情况简化了我的问题。

nixos nix

6
推荐指数
1
解决办法
1698
查看次数

标签 统计

nix ×1

nixos ×1