我有两个系统,一个是全新安装的Linux,另一个是Mac。
在 macOS 上,当我运行
cargo --list --verbose
时,我可以看到所有内置和外部安装的货物命令:
% cargo --list --verbose
Installed Commands:
add Add dependencies to a Cargo.toml manifest file
b alias: build
bench Execute all benchmarks of a local package
build Compile a local package and all of its dependencies
build-bpf /Users/username/.local/share/solana/install/active_release/bin/cargo-build-bpf
build-sbf /Users/username/.local/share/solana/install/active_release/bin/cargo-build-sbf
...
然而,在 Linux 系统上,尽管安装了相同的软件,但不显示外部命令:
% cargo --list --verbose
Installed Commands:
add Add dependencies to a Cargo.toml manifest file
b alias: build
bench Execute all benchmarks of a local package
build Compile a local package and all of its dependencies
c alias: check
...
但是我可以看到同一目录中存在相同的文件:
# ls -la ~/.local/share/solana/install/active_release/bin
-rwxr-xr-x 1 username group 6924136 Mar 3 06:33 cargo-build-bpf
-rwxr-xr-x 1 username group 21154624 Mar 3 06:33 cargo-build-sbf
为什么我安装的命令没有显示在“cargo --list”中?
我已检查过
PATH
并且 ~/.local/share/solana/install/active_release/bin
位于 PATH
我该怎么做才能确保它出现?我有其他工具可以调用
cargo build-bpf
,因此在 Cargo 之外运行二进制文件将不起作用。
回答我自己的问题以帮助他人:
Cargo 确实使用 PATH 来确定运行时显示的命令的位置
cargo --list
:
第 3 方子命令(即放置在 $PATH 中的名为 Cargo-foobar 的程序)...
但是 cargo 似乎有一个错误,其中波浪线 (
~
) 扩展处理不正确。
我将立即在 Cargo GitHub 中提出问题,但作为解决方法,请从包含要与 Cargo 一起使用的二进制文件的目录的 PATH 中删除波浪号字符
失败:
~/.local/somedir/bin
成功:
/home/runner/somedir/bin