web-dev-qa-db-fra.com

Erreur lors de l'installation d'une caisse via la cargaison: le package spécifié ne contient aucun binaire

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

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.

43
Shepmaster