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)
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ライブラリをインストールしても意味がありません。ライブラリの各バージョンのソースコードはローカルにキャッシュされ、何度もダウンロードされることはありません。