【发布时间】:2019-03-29 21:10:16
【问题描述】:
我在 OSX Mojave 上使用 Nix 包管理器。
我的同事使用的是早期版本的 OSX。不确定这是否是他们没有遇到此问题的原因。
我无法连接到我明确有权访问的特定私有 gitlab 存储库。我可以直接克隆它,但在构建它所属的项目时无法构建它。
这是我的 default.nix 文件的相关摘录。我被告知 fetchgitPrivate 已被弃用。我已经尝试在这个文件中用 fetchGit 替换它,但它不起作用。
my-private-gitlab-repo = self.callCabal2nix "my-private-gitlab-repo" (pkgs.fetchgitPrivate {
url = "git@gitlab.com/namehere/my-private-gitlab-repo.git";
rev = "...";
sha256 = "...";
}) {};
这是我得到的错误:
reallymemorables-MacBook-Pro:localclone reallymemorable$ ./scripts/ghci-backend
building '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv'...
exporting ssh://git@gitlab.com/namehere/my-private-gitlab-repo.git (rev kjsdjfksdjklfsjkldjfksjdfskldf) into /nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asddfs
Initialized empty Git repository in /nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asddfs/.git/
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Unable to checkout khjsdfkhdsjhklsdjhfksdhfjksdh from ssh://git@gitlab.com/namehere/my-private-gitlab-repo.git.
builder for '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo-asdffdsgfd.drv' failed with exit code 1
cannot build derivation '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv': 1 dependencies couldn't be built
error: build of '/nix/store/kljskajsdljkdgfhj-cabal2nix-my-private-gitlab-repo.drv' failed
(use '--show-trace' to show detailed location information)
我完全不知道如何继续。我尝试将我的 ssh 密钥放在 Shared 和我的普通 OSX 用户中。我已经尝试了一百万种权限排列。
【问题讨论】:
-
fetchgitPrivate是 Nix 1.x 遗留下来的;在现代版本中,您可以只使用builtins.fetchGit,它将获取作为您的用户帐户,而不是作为 Nix 构建器。请注意builtins.前缀。回复:“尝试在此文件中用 fetchGit 替换它,但它不起作用”——让我们帮助您解决 那个 问题。 -
当我用
builtins.fetchGit替换时出现这个错误:error: unsupported argument 'sha256' to 'fetchGit', at /Users/reallymemorable/Documents/Git/localclone/default.nix:37:9 -
是的,
builtins.fetchGit有不同的用法;它不应该采用sha256,因此您可以删除该参数。在nixos.org/nix/manual 中搜索文档——接受的参数是url、name、rev和ref。 -
(因为
builtins.fetchGit正在构建派生描述,而不是执行它,它可以生成一个固定输出派生,从而生成预期输出本身的sha256,而不是只需要满足一个并且需要一个 sha256 作为输入)。