2016-06-08 17 views
12

Ich versuche eine Rust-Kiste auf meinem System (Arch Linux) mit Cargo zu installieren. Ich kann für Kisten suchen und finden, was ich brauche, zum Beispiel:Fehler beim Installieren einer Kiste per Ladung: Das angegebene Paket enthält keine Binärdateien

$ 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 

Wenn ich versuche, es zu installieren, erhalte ich die folgende Fehlermeldung:

$ cargo install curl 
    Updating registry `https://github.com/rust-lang/crates.io-index` 
error: specified package has no binaries 

Was bedeutet das? Muss ich es zuerst von der Quelle erstellen? Was ist der Sinn von Cargo, wenn es nicht installiert wird?

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

Antwort

23

cargo install wird verwendet, um binäre Pakete zu installieren, die durch crates.io verteilt werden passieren. Wenn Sie eine Kiste als Abhängigkeit verwenden möchten, fügen Sie sie zu Ihrer Cargo.toml hinzu.

Lesen Sie the Rust getting started guide und the Cargo getting started guide für weitere Informationen. Kurz gesagt:

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

Komisch, können Sie eine Drittanbieter-Fracht installieren subcommand cargo-edit mit cargo install genannt, die es einfacher zu ändern, um Ihre Cargo.toml Dateiabhängigkeiten hinzuzufügen macht!

cargo install cargo-edit 
cargo add curl 

Eine wichtige Sache ist zu beachten, dass jedes Fracht Projekt verwaltet und erstellt einen eigenen Satz von Abhängigkeiten (some background info). Daher ist es nicht sinnvoll, eine kompilierte Bibliothek zu installieren. Der Quellcode für jede Version einer Bibliothek wird lokal zwischengespeichert, um ein mehrfaches Herunterladen zu vermeiden.

+1

Das war schnell und hilfreich, danke. – default

+4

@ 5chdn das ist unser Motto hier im Rust-Tag^_ ^ – Shepmaster