You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nix Flake安装jina-hubble-sdk遇PermissionError问题求助

解决Nix Flake构建jina-hubble-sdk时的/homeless-shelter权限错误

问题根源是Nix构建沙箱中默认HOME指向无写入权限的/homeless-shelter,而jina-hubble-sdk的测试环节尝试向该目录写入数据,触发权限拒绝错误。以下是两种可行解决方案:

方案1:禁用包的测试环节(推荐)

直接跳过测试阶段,避免写入HOME目录的操作,修改jina-hubble-sdk的buildPythonPackage配置:

jina-hubble-sdk = with pkgs.python3Packages;
  buildPythonPackage rec {
    pname = "jina-hubble-sdk";
    version = "0.39.0";

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

    # 添加这行禁用测试
    doCheck = false;

    nativeBuildInputs = [
      setuptools wheel  # 补充构建依赖,确保包能正确编译安装
    ];

    propagatedBuildInputs = [
      requests
      aiohttp
      rich
      importlib-metadata
      filelock
      pathspec
      docker
      pyyaml
      python-jose
    ];
  };

说明:

  • doCheck = false:跳过测试阶段,彻底避免测试代码访问HOME目录
  • 补充setuptools wheel到nativeBuildInputs:部分Python包需要这些工具完成构建流程,避免潜在的安装失败

方案2:修改测试阶段的HOME路径

如果需要保留测试,可在测试前将HOME临时设置为有写入权限的TMPDIR:

jina-hubble-sdk = with pkgs.python3Packages;
  buildPythonPackage rec {
    pname = "jina-hubble-sdk";
    version = "0.39.0";

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

    # 测试前设置HOME为临时目录
    preCheck = ''
      export HOME=$TMPDIR
    '';

    nativeBuildInputs = [
      setuptools wheel
    ];

    propagatedBuildInputs = [
      requests
      aiohttp
      rich
      importlib-metadata
      filelock
      pathspec
      docker
      pyyaml
      python-jose
    ];
  };

说明:preCheck钩子会在测试执行前运行,将HOME环境变量替换为Nix提供的临时目录(有写入权限),让测试代码可以正常执行。

完整修改后的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";
          };

          doCheck = false;
          nativeBuildInputs = [ setuptools wheel ];

          propagatedBuildInputs = [
            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
          (pythonEnv pkgs)
        ];
      };
    }); 
}

修改完成后,重新运行nix develop即可完成构建。

内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:53:10