为何Linux系统中已安装的命令未在‘cargo --list’中显示?
解决Linux下Cargo无法识别build-bpf/build-sbf子命令的问题
修复步骤
1. 检查二进制文件权限
先确保~/.local/share/solana/install/active_release/bin下的命令文件有可执行权限:
chmod +x ~/.local/share/solana/install/active_release/bin/cargo-build-*
2. 强制刷新Cargo命令缓存
Cargo会缓存已发现的子命令,强制让它重新扫描PATH:
cargo --list --verbose --force
3. 确认环境变量生效
有些Linux shell启动时不会自动加载PATH配置,先验证目标目录是否在当前会话的PATH里:
echo $PATH | grep -q "solana/install/active_release/bin" && echo "PATH已包含目标目录" || echo "PATH未包含目标目录"
如果显示未包含,手动加载shell配置文件(以bash为例):
source ~/.bashrc # zsh用户执行 source ~/.zshrc
4. 链接到Cargo默认扫描目录
Cargo优先扫描~/.cargo/bin,把Solana的Cargo子命令软链到这里:
mkdir -p ~/.cargo/bin ln -s ~/.local/share/solana/install/active_release/bin/cargo-build-bpf ~/.cargo/bin/ ln -s ~/.local/share/solana/install/active_release/bin/cargo-build-sbf ~/.cargo/bin/
5. 验证修复结果
执行下面的命令,能看到build-bpf和build-sbf就说明问题解决了:
cargo --list | grep -E "build-bpf|build-sbf"
内容的提问来源于stack exchange,提问作者mikemaccana
相关产品推荐
相关产品推荐

