Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nix包管理器和GitLab出现问题_Git_Gitlab_Devops_Nix - Fatal编程技术网

Nix包管理器和GitLab出现问题

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

我正在OSX Mojave上使用Nix包管理器

我的同事正在使用OSX的早期版本。不确定这是否是他们没有遇到这个问题的原因

我无法连接到我明确有权访问的特定私有gitlab repo。我可以直接克隆它,但当我构建它所属的项目时,我无法构建它

这是我的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密钥放在共享和普通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 = "...";
}) {};