web-dev-qa-db-ja.com

貨物を介してクレートをインストールする際のエラー:指定されたパッケージにはバイナリがありません

Cargoを使用してRustクレートをシステム(Arch Linux)にインストールしようとしています。クレートを検索して、必要なものを見つけることができます。例:

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

cargo installは、crates.ioを介して配布されるバイナリパッケージをインストールするために使用されます。

依存関係としてクレートを使用する場合は、それをCargo.tomlに追加します。

詳細については the Rustスタートガイド および Cargoスタートガイド を参照してください。

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

面白いことに、cargo installを使用して cargo-edit と呼ばれるサードパーティのCargoサブコマンドをインストールすると、Cargo.tomlファイルを変更して依存関係を追加しやすくなります。

cargo install cargo-edit
cargo add curl

注意すべき重要なことは、everyCargoプロジェクトが依存関係の別個のセットを管理およびコンパイルすることです( いくつかの背景情報 )。したがって、compiledライブラリをインストールしても意味がありません。ライブラリの各バージョンのソースコードはローカルにキャッシュされ、何度もダウンロードされることはありません。

43
Shepmaster