使用 Nix Flake 安装 'jina-hubble-sdk' 时,为什么会出现“PermissionError: [Errno 13] Permission returned: '/homeless-shelter'Q”

问题描述 投票:0回答:1

要使用 nix flake 构建我的虚拟环境,我必须添加一些 nix 包管理器中没有的 python 包。我在安装“jina-hubble-sdk”时遇到问题

我跑步

nix develop

在包含 flake.nix 的目录中,如下所示:

{  description = "Python environment with ollama";

 inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";  inputs.flake-utils.url = "github:numtide/flake-utils";

 outputs = { self, nixpkgs, flake-utils, ... }:
    flake-utils.lib.eachDefaultSystem (system: let
      pkgs = nixpkgs.legacyPackages.${system};
      
      # Define Python package jina-hubble-sdk
      jina-hubble-sdk = with pkgs.python3Packages;
        buildPythonPackage rec {
          pname = "jina-hubble-sdk";
          version = "0.39.0";

          src = pkgs.fetchPypi {
            inherit pname version;
            sha256 = "9021417794a6d3cf3fad8a880cf668a3a986b9d53d5be5fa391aae1767a5b9b0";
          };

          nativeBuildInputs = [
            poetry-core
          ];

          propagatedBuildInputs = [
            pip
            requests
            aiohttp
            rich
            importlib-metadata
            filelock
            pathspec
            docker
            pyyaml
            python-jose
          ];
        };
   
      # Define Python environment with necessary packages
      pythonEnv = pkgs:
        pkgs.python3.withPackages (ps:
          with ps; [
             jina-hubble-sdk # Include jina in the environment
          ]);
    in {
      devShells.default = pkgs.mkShell {
        buildInputs = with pkgs; [
          curl
          ollama
          (pythonEnv pkgs)
        ];
      };
    }); }

我收到以下错误消息:

错误:构建器 '/nix/store/d4ncmq68cjksfzdhz2klsrr1wm5jm9aj-python3.11-jina-hubble-sdk-0.39.0.drv' 失败,退出代码为 1; 最后 10 行日志: > os.mkdir(自身,模式) > PermissionError: [Errno 13] 权限被拒绝: '/homeless-shelter' > > > ------------------------------------------------- -------------------- > 在 0.002 秒内进行 1 次测试 > > 失败(错误=1) > 测试失败: > 错误:测试失败: 对于完整日志,请运行“nix-store -l /nix/store/d4ncmq68cjksfzdhz2klsrr1wm5jm9aj-python3.11-jina-hubble-sdk-0.39.0.drv”。 错误:1 推导的依赖关系 '/nix/store/5p0ffk9xjmb3zx73d1gzab0pjngmasbh-python3-3.11.8-env.drv' 构建失败错误:1 派生依赖项 “/nix/store/g9qd2rvp2fkbz47mzbjnqzlfnkk6hvjm-nix-shell-env.drv”失败 建造

它来自jina-hubble-sdk-0.39.0.drv。我读到了这篇message,其中谈到了类似的问题,并谈到了 HOME 和 TMPDIR。因此,我在与我想要创建的环境类似的环境中为您提供它们的价值。

$HOME

bash: /home/nixos: 是一个目录

$TMPDIR

bash: /tmp/nix-shell.QHZzjA: 是一个目录

nix nix-flake
1个回答
0
投票

正如 Charles Duffy 评论中所强调的,在构建过程中需要调整

$HOME
变量,而不是在您的环境中。

nixpkgs
中,当包构建需要可写的home时,我们通常使用
export HOME=(mktemp -d)
。为了避免与 Python 包的预配置
buildPhase
发生冲突,您应该在
preBuild
阶段导出变量:

src = { ... };

preBuild = ''
  export HOME=$(mktemp -d)
'';

nativeBuildInputs = [ ... ];

© www.soinside.com 2019 - 2024. All rights reserved.