Skip to content

AUR PKGBUILD build() 缺少 Rust 工具链 PATH 导致构建失败 #1065

@mcxiaochenn

Description

@mcxiaochenn

检查清单

  • 我已检索仓库中所有的 Issues,确保我没有重复提交问题;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内
  • 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中
  • 此问题可以在我的设备和当前环境中稳定复现
  • 此问题可以在最新版本 (Latest Release) 中复现
  • 此问题是在我更新到当前版本后出现的

是网页端还是客户端

客户端

当前系统环境

Arch Linux (kernel 7.0.3-zen1-2-zen)

当前 Node.js 及 npm 版本

v22.22.2 / npm v10.9.7

当前版本

3.0.0.nightly (Commit: ed080dd) — AUR splayer-git PKGBUILD

具体信息

问题描述

在 Arch Linux 上通过 AUR 安装 splayer-git 时,build() 阶段失败,提示找不到 Rust 工具链。

复现步骤

  1. 在 Arch Linux 上执行 yay -S splayer-git
  2. 等待依赖安装完成,进入 build 阶段
  3. pnpm run build 调用 pnpm build:nativetsx scripts/build-native.ts
  4. 构建失败

错误输出

> splayer@3.0.0 build:native /home/user/.cache/yay/splayer-git/src/splayer.git
> tsx scripts/build-native.ts

[BuildNative] 错误:检测不到 Rust 工具链
[BuildNative] 未设置 SKIP_NATIVE_BUILD,因此必须包含 Rust 环境才能继续
[BuildNative] 安装 Rust (https://rust-lang.org/tools/install/) 或者设置环境变量 SKIP_NATIVE_BUILD=true
ELIFECYCLE  Command failed with exit code 1.

根因分析

PKGBUILD 的 prepare() 中设置了 export CARGO_HOME="${srcdir}/.cargo" 并执行了 rustup default stable,工具链安装到了 ${srcdir}/.cargo/bin/

build() 函数只调用了 _ensure_local_nvm(设置 node 环境),没有把 ${srcdir}/.cargo/bin 加入 PATH,导致 build-native.ts 找不到 cargo/rustc

修复建议

build() 开头添加:

export CARGO_HOME="${srcdir}/.cargo"
export PATH="${CARGO_HOME}/bin:${PATH}"

或新增一个 _ensure_local_cargo() 辅助函数(与现有 _ensure_local_nvm 风格一致),在 build() 中调用。

已验证:添加上述两行后构建成功,包可正常安装运行。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions