J'essaie d'installer une caisse Rust sur mon système (Arch Linux) en utilisant Cargo. Je peux rechercher des caisses et trouver ce dont j'ai besoin, par exemple:
$ 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
Lorsque j'essaie de l'installer, j'obtiens l'erreur suivante:
$ cargo install curl
Updating registry `https://github.com/Rust-lang/crates.io-index`
error: specified package has no binaries
Qu'est-ce que ça veut dire? Dois-je d'abord le construire à partir de la source? Quel est l'intérêt de Cargo s'il ne l'installe pas en premier lieu?
$ 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
est utilisé pour installer les packages binaires qui sont distribués via crates.io.
Si vous souhaitez utiliser une caisse comme dépendance, ajoutez-la à votre Cargo.toml
.
Lisez le guide de démarrage Rust et le guide de démarrage Cargo pour plus d'informations. En bref:
cargo new my_project
cd my_project
echo 'curl = "0.3.0"' > Cargo.toml
De manière amusante, vous pouvez installer une sous-commande Cargo tierce appelée cargo-edit en utilisant cargo install
qui facilite la modification de votre Cargo.toml
fichier pour ajouter des dépendances!
cargo install cargo-edit
cargo add curl
Une chose importante à noter est que chaque projet Cargo gère et compile un ensemble distinct de dépendances ( quelques informations générales ). Il n'est donc pas logique d'installer une bibliothèque compilée. Le code source pour chaque version d'une bibliothèque sera mis en cache localement, évitant de le télécharger plusieurs fois.