How to allow "multiple matching boxes for a" package "in the load?

When starting cargo build :

 error: multiple matching crates for `url` 

He then lists the candidates:

  • ./target/deps/liburl-11a95471847b9e04.rlib
  • /usr/local/lib/rustlib/x86_64-unknown-linux-gnu/lib/liburl-4e7c5e5c.{so,rlib}

... and then interrupted because it cannot decide which one.

 src/http/lib.rs:18:1: 18:18 error: can't find crate for `url` src/http/lib.rs:18 extern crate url; ^~~~~~~~~~~~~~~~~ error: aborting due to 2 previous errors 

How to get around this or fix this problem?


Note:

This issue and commit seem to be related to the problem, from the comments:

 +//! rust-url's crate is also named `url`. +//! Cargo will automatically resolve the name conflict, +//! but that means that you can not also use the old `url` in the same crate. 

Installation Features:

 $ rustc -v rustc 0.12.0-pre-nightly (7a25cf3f3 2014-07-30 17:06:18 +0000) $ cargo -V 0.0.1-pre-nightly (4a69ffa 2014-07-29 21:30:40 +0000) 

Cargo.toml :

 [package] name = "nickel-demo" version = "0.1.0" authors = [ " your-name@gmail.com " ] [[bin]] name = "nickel-demo" path = "src/main.rs" [dependencies.nickel] git = "https://github.com/nickel-org/nickel.rs.git" [dependencies.rust-postgres] git = "https://github.com/sfackler/rust-postgres.git" 

(copied from http://nickel.rs/getting-started.html and added one additional dependency)

The full error I get is this:

  Compiling rust-postgres v0.0.0 (https://github.com/sfackler/rust-postgres.git#7d842441) Build failed, waiting for other jobs to finish... Could not compile `rust-postgres`. --- stderr src/lib.rs:70:1: 70:18 error: multiple matching crates for `url` src/lib.rs:70 extern crate url; ^~~~~~~~~~~~~~~~~ note: candidates: note: path: /usr/local/lib/rustlib/x86_64-unknown-linux-gnu/lib/liburl-4e7c5e5c.so note: path: /usr/local/lib/rustlib/x86_64-unknown-linux-gnu/lib/liburl-4e7c5e5c.rlib note: crate name: url note: path: /home/bojangle/k/nickel-demo/target/deps/liburl-11a95471847b9e04.rlib note: crate name: url src/lib.rs:70:1: 70:18 error: can't find crate for `url` src/lib.rs:70 extern crate url; ^~~~~~~~~~~~~~~~~ error: aborting due to 2 previous errors To learn more, run the command again with --verbose. 
+7
rust rust-cargo rust-crates
source share
1 answer

Now (today is the Cargo version) it also gives this error when extracting packages:

 native library `openssl` is being linked to by more than one package, and can only be linked to by one package openssl-sys v0.2.13 (https://github.com/sfackler/rust-openssl.git#2f5d1e57) openssl-sys v0.2.15 

All that you can do in both cases translates one of your dependencies into the same transitive dependency by changing their Cargo.toml right inside the cloned rustlib or nickel (or rust curls in case of openssl-sys) and repeating your Cargo.toml to modified: http://doc.crates.io/build-script.html#overriding-build-scripts , so there is only one line inside your .cargo / config:

  paths = ["/path/to/overridden/dependency"] 

And something like this in /path/to/overridden/dependency/Cargo.toml:

  [dependencies] transitive-dependency-name = "choosed-version" 

You can point it to git here.

More on the multi-link issue: https://github.com/rust-lang/cargo/issues/886

+1
source share

All Articles