使用cargo安装crate时出错:指定的包没有二进制文件。

48

我正在尝试使用Cargo在我的系统(Arch Linux)上安装一个Rust箱。我可以搜索集装箱并找到我需要的内容,例如:

 $ cargo search curl | head -n3
    Updating registry `https://github.com/rust-lang/crates.io-index`
curl (0.3.0)             Rust bindings to libcurl for making HTTP requests
curl-sys (0.2.0)         Native bindings to the libcurl library

我尝试安装时,出现以下错误:

 $ cargo install curl
    Updating registry `https://github.com/rust-lang/crates.io-index`
error: specified package has no binaries

这是什么意思?我必须首先从源代码构建吗?如果 Cargo 一开始就不安装它,那还有什么意义?

 $ uname -a
Linux 4.6.1-2-ARCH #1 SMP PREEMPT Thu Jun 2 15:46:17 CEST 2016 x86_64 GNU/Linux
 $ rustc --version
rustc 1.9.0
 $ cargo --version
cargo 0.10.0 (10ddd7d 2016-04-08)
1个回答

79

cargo install 用于安装通过 crates.io 分发的二进制包。

如果您想将一个 crate 作为依赖项使用,请将其添加到您的 Cargo.toml 文件中。

阅读 Rust 入门指南Cargo 入门指南 获取更多信息。简而言之:

cargo new my_project
cd my_project
echo 'curl = "0.3.0"' >> Cargo.toml

有意思的是,你可以使用 cargo install 安装第三方 Cargo 子命令 cargo-edit,从而更容易地修改你的 Cargo.toml 文件以添加和删除依赖项!

cargo install cargo-edit
cargo add curl
cargo rm curl

需要注意的一点是,每个 Cargo 项目都管理和编译一个独立的依赖库集合(一些背景信息)。因此,安装一个已编译的库是没有意义的。每个版本库的源代码将会被本地缓存,避免多次下载。

另请参见:


8
似乎这并没有真正解决问题。该库已在Cargo.toml下列为依赖项。当我尝试构建项目时,由于未安装该依赖项,构建失败。当我尝试安装该依赖项时,出现了原帖中的错误导致安装失败。 - user5359531
1
@user5359531 - 请尝试使用 cargo run 命令。 - Roger Dahl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接