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

使用Nix编译llm库:指定unstable却用rustc 1.69的原因排查

Nix指定nixpkgs-unstable却使用rustc 1.69导致构建失败的解决方法

问题场景

尝试通过Nix安装llm库,执行步骤:

git clone https://github.com/rustformers/llm.git
nix build

构建失败,报错显示half v2.3.1要求rustc 1.70或更高版本,但当前环境rustc版本为1.69.0。项目flake.nix已指定nixpkgs-unstable:

inputs = {
  nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable;
  naersk.url = github:nix-community/naersk;
  flake-utils.url = github:numtide/flake-utils;
};

查询得知nixpkgs-unstable包含rustc 1.70,stable版本为1.69。执行nix develop -i && cargo build --release仍报错,rustc版本依旧是1.69。

可能原因

  • flake.lock锁定了旧版nixpkgs:之前生成的lock文件可能对应较早的unstable分支,当时rustc还未更新到1.70。
  • 依赖工具冲突:naersk或flake-utils可能默认依赖stable版本的nixpkgs,导致实际使用的rustc来自stable分支。
  • devShell配置未明确指定:flake的devShell若未绑定unstable的nixpkgs,会 fallback 到系统默认版本。

解决步骤

1. 更新flake.lock中的nixpkgs

删除旧lock文件,重新拉取最新unstable分支:

rm flake.lock
nix build --refresh

重新生成的flake.lock会确保nixpkgs为最新unstable版本,包含rustc 1.70+。

2. 让naersk使用项目指定的nixpkgs

修改flake.nix中naersk的调用,强制它使用项目的nixpkgs输入:

outputs = { self, nixpkgs, naersk, flake-utils }:
  flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = import nixpkgs { inherit system; };
      # 覆盖naersk的pkgs依赖为当前项目的nixpkgs
      naersk-lib = naersk.lib."${system}".override { inherit pkgs; };
    in {
      packages.default = naersk-lib.buildPackage {
        pname = "llm";
        src = self;
        # 保留原有构建配置
      };
      devShells.default = pkgs.mkShell {
        buildInputs = [ pkgs.rustc pkgs.cargo ];
      };
    }
  );

3. 强制devShell使用unstable的rust工具链

确保devShell明确引入unstable中的rustc和cargo:

devShells.default = pkgs.mkShell {
  buildInputs = with pkgs; [ rustc cargo ];
};

重新进入开发环境并检查版本:

nix develop --refresh
rustc --version

此时应显示1.70或更高版本。

4. 临时指定unstable rust环境构建

若不想修改flake配置,可直接用unstable的rust工具链临时构建:

nix-shell -p nixpkgs-unstable.rustc nixpkgs-unstable.cargo --run "cargo build --release"

内容的提问来源于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.07.16 11:49:51