Nix包管理器和GitLab出现问题
我正在OSX Mojave上使用Nix包管理器 我的同事正在使用OSX的早期版本。不确定这是否是他们没有遇到这个问题的原因 我无法连接到我明确有权访问的特定私有gitlab repo。我可以直接克隆它,但当我构建它所属的项目时,我无法构建它 这是我的default.nix文件的相关摘录。我听说fetchgitPrivate不受欢迎。我已经尝试在这个文件中用fetchGit替换它,但它不起作用Nix包管理器和GitLab出现问题,git,gitlab,devops,nix,Git,Gitlab,Devops,Nix,我正在OSX Mojave上使用Nix包管理器 我的同事正在使用OSX的早期版本。不确定这是否是他们没有遇到这个问题的原因 我无法连接到我明确有权访问的特定私有gitlab repo。我可以直接克隆它,但当我构建它所属的项目时,我无法构建它 这是我的default.nix文件的相关摘录。我听说fetchgitPrivate不受欢迎。我已经尝试在这个文件中用fetchGit替换它,但它不起作用 my-private-gitlab-repo = self.callCabal2nix "m
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密钥放在共享和普通OSX用户中。我已经尝试了一百万次权限置换。与Nix 2.x一起使用的正确方法是
内置.fetchGit
——但它不是一个直接的替换:您需要删除sha256
参数。由于builtins.fetchGit
在您自己的用户帐户下运行,而不是作为Nix构建器运行,因此它完全没有权限问题:您可以自己访问的任何内容(钥匙圈、YubiKey或智能卡,或者仅是您的~/.ssh
目录)可通过builtins.fetchGit
调用的git
副本访问
因此:
fetchgitPrivate
是nix1.x留下的;在现代版本中,您可以只使用内置.fetchGit
,它作为您的用户帐户而不是Nix构建器进行获取。请注意内置的。
前缀。Re:“尝试在此文件中用fetchGit替换它,但它不起作用”--让我们帮助您解决这个问题。当我用内置文件替换它时,我遇到了这个错误。fetchGit
:错误:不支持的参数'sha256'到'fetchGit',at/Users/reallymorable/Documents/Git/localclone/default。nix:37:9
是,内置。fetchGit
有不同的用法;它不应该接受sha256
,因此您可以删除该参数。搜索文档——接受的参数有url
、name
、rev
和ref
。(因为builtins.fetchGit
正在构建派生描述,而不是执行它,所以它可以生成一个固定的输出派生,从而生成预期输出本身的sha256,而不是只需要实现一个,并且需要一个sha256作为输入)。
my-private-gitlab-repo = self.callCabal2nix "my-private-gitlab-repo" (builtins.fetchGit {
url = "git@gitlab.com/namehere/my-private-gitlab-repo.git";
rev = "...";
}) {};