2016-06-08 38 views
12

我试图在我的系统(Arch Linux)上使用Cargo安装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 

这是什么意思?我必须首先从源代码构建它吗?货物如果没有安装在第一位,货物有什么意义?

$ 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) 

回答

23

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

如果要使用箱子作为依赖项,请将其添加到Cargo.toml

阅读the Rust getting started guidethe Cargo getting started guide了解更多信息。总之:

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

有趣的是,你可以安装一个第三方货物子使用cargo install,使得它更容易修改您的Cargo.toml文件来添加依赖所谓cargo-edit

cargo install cargo-edit 
cargo add curl 

要注意的重要一点是,每货物项目管理和编译一个单独依赖集(some background info)。因此安装库编译的是没有意义的。针对每个版本库的源代码将在本地缓存,避免多次下载。

+1

这是快速和有益的,谢谢。 – default

+4

@ 5chdn这就是我们在锈标签^ _ ^中的座右铭 – Shepmaster