【问题标题】:Problem with Nix package manager and GitLabNix 包管理器和 GitLab 的问题
【发布时间】: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 中搜索文档——接受的参数是urlnamerevref
  • (因为builtins.fetchGit正在构建派生描述,而不是执行它,它可以生成一个固定输出派生,从而生成预期输出本身的sha256,而不是只需要满足一个并且需要一个 sha256 作为输入)。

标签: git gitlab devops nix


【解决方案1】:

与 Nix 2.x 一起使用的正确方法是 builtins.fetchGit——但这不是直接替代:您需要删除 sha256 参数。因为builtins.fetchGit在您自己的用户帐户下运行,而不是作为 Nix 构建器,所以它完全解决了权限问题:您可以作为自己访问的任何东西(密钥环、YubiKey 或智能卡,或者只是您的@ 987654324@目录)可以通过builtins.fetchGit调用的git的副本访问。

因此:

my-private-gitlab-repo = self.callCabal2nix "my-private-gitlab-repo" (builtins.fetchGit {
  url = "git@gitlab.com/namehere/my-private-gitlab-repo.git";
  rev = "...";
}) {};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2021-10-10
    相关资源
    最近更新 更多