2015-02-12 15 views
5

Soru: Nasıl etrafında (veya düzeltme) durum çalışabilir nerede ikisi aynı kütüphaneye maden bağlantının bağımlılıkları, ama bu kütüphane iki kez bağlantılı olamaz? Bu, genellikle paylaşılan bir kütüphaneyle çözülecek bir şey gibi görünüyor, ama Rust'a nasıl yaklaşacağımı bilmiyorum.Nasıl birden bağımlılıkları ile aynı yerli kütüphaneye bağlamak önleyebilir?

Detayları: Bir veritabanı için Nickel framework ve rust-postgres kullanarak Rust bir web uygulaması yapıyorum

. oluştururken aşağıdaki hatayı alıyorum: Cargo.lock bakarak

> cargo build 
native library `openssl` is being linked to by more than one package, and can only be linked to by one package 

    openssl-sys v0.3.3 (https://github.com/sfackler/rust-openssl.git#ee66da60) 
    openssl-sys v0.3.3 

, openssl ve pas postgres (a nikel bağımlılık olan) http tarafından başvurulmaktadır.

Benim Cargo.toml şuna benzer:

[package] 

name = "goodoldweb" 
version = "0.0.1" 
authors = ["..."] 

[dependencies.nickel] 
git="https://github.com/nickel-org/nickel.rs.git" 

[dependencies.postgres] 
git="https://github.com/sfackler/rust-postgres.git" 

İşte tam Cargo.lock var:

[root] 
name = "goodoldweb" 
version = "0.0.1" 
dependencies = [ 
"nickel 0.1.0 (git+https://github.com/nickel-org/nickel.rs.git)", 
"postgres 0.6.1 (git+https://github.com/sfackler/rust-postgres.git)", 
] 

[[package]] 
name = "byteorder" 
version = "0.2.4" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "gcc" 
version = "0.1.7" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "groupable" 
version = "0.1.0" 
source = "git+https://github.com/nickel-org/groupable-rs#efc8d769f611558f086322cd8d2d5ff53314e435" 

[[package]] 
name = "http" 
version = "0.1.0-pre" 
source = "git+https://github.com/nickel-org/rust-http.git#1997192b7662ee5bf3bf381bfd9e2aa70f85a545" 
dependencies = [ 
"openssl 0.3.3 (git+https://github.com/sfackler/rust-openssl.git)", 
"time 0.1.17 (git+https://github.com/rust-lang/time)", 
"url 0.2.18 (git+https://github.com/nickel-org/rust-url.git)", 
] 

[[package]] 
name = "libc" 
version = "0.1.2" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "libressl-pnacl-sys" 
version = "2.1.4" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"pnacl-build-helper 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "log" 
version = "0.2.3" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "matches" 
version = "0.1.2" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "nickel" 
version = "0.1.0" 
source = "git+https://github.com/nickel-org/nickel.rs.git#8c2e6a9bdbce0a3ec53d559b86f5060ee1ea6c29" 
dependencies = [ 
"groupable 0.1.0 (git+https://github.com/nickel-org/groupable-rs)", 
"http 0.1.0-pre (git+https://github.com/nickel-org/rust-http.git)", 
"log 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 
"nickel_macros 0.0.1 (git+https://github.com/nickel-org/nickel.rs.git)", 
"plugin 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 
"regex_macros 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 
"rust-mustache 0.3.0 (git+https://github.com/nickel-org/rust-mustache.git)", 
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 
"time 0.1.17 (git+https://github.com/rust-lang/time)", 
"typemap 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 
"url 0.2.18 (git+https://github.com/nickel-org/rust-url.git)", 
] 

[[package]] 
name = "nickel_macros" 
version = "0.0.1" 
source = "git+https://github.com/nickel-org/nickel.rs.git#8c2e6a9bdbce0a3ec53d559b86f5060ee1ea6c29" 

[[package]] 
name = "openssl" 
version = "0.3.3" 
source = "git+https://github.com/sfackler/rust-openssl.git#ee66da6060c57bc86906261ee3d684fac1fd05e4" 
dependencies = [ 
"openssl-sys 0.3.3 (git+https://github.com/sfackler/rust-openssl.git)", 
] 

[[package]] 
name = "openssl" 
version = "0.3.3" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "openssl-sys" 
version = "0.3.3" 
source = "git+https://github.com/sfackler/rust-openssl.git#ee66da6060c57bc86906261ee3d684fac1fd05e4" 
dependencies = [ 
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 
"pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "openssl-sys" 
version = "0.3.3" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 
"pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "phantom" 
version = "0.0.3" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "phf" 
version = "0.6.6" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"phf_shared 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "phf_macros" 
version = "0.6.6" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"phf_shared 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 
"rand 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "phf_shared" 
version = "0.6.6" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "pkg-config" 
version = "0.2.0" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "plugin" 
version = "0.2.1" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"typemap 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "pnacl-build-helper" 
version = "1.3.2" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "postgres" 
version = "0.6.1" 
source = "git+https://github.com/sfackler/rust-postgres.git#fe6ae0c63a6e5d66d2afb785605b7d89ec47062d" 
dependencies = [ 
"byteorder 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 
"log 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 
"openssl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 
"phf 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 
"phf_macros 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 
"time 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "rand" 
version = "0.1.2" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 
"log 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "regex" 
version = "0.1.14" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "regex_macros" 
version = "0.1.8" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "rust-mustache" 
version = "0.3.0" 
source = "git+https://github.com/nickel-org/rust-mustache.git#58ed857c88f8e5230913c382034601f37141b4ee" 
dependencies = [ 
"log 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "rustc-serialize" 
version = "0.2.12" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "time" 
version = "0.1.17" 
source = "git+https://github.com/rust-lang/time#0960d5e21b332088b04f62117514b0a02fd31259" 
dependencies = [ 
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "time" 
version = "0.1.17" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "typemap" 
version = "0.0.8" 
source = "registry+https://github.com/rust-lang/crates.io-index" 
dependencies = [ 
"phantom 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 
"unsafe-any 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 
] 

[[package]] 
name = "unsafe-any" 
version = "0.2.2" 
source = "registry+https://github.com/rust-lang/crates.io-index" 

[[package]] 
name = "url" 
version = "0.2.18" 
source = "git+https://github.com/nickel-org/rust-url.git#5801582b307c16f759b5fe11dec71385af86180c" 
dependencies = [ 
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 
] 
+0

Eğer tam 'Cargo.lock' gönderir misiniz? – huon

+0

suçlu [nikel Org pas http] (https://github.com/nickel-org/rust-http) (bir nikel bağımlılığı) sfackler/pas 'getirir gerçektir görünüyor crates.io'daki "resmi" olanın yerine openssl. Ne yazık ki pas-http repo'nun sorunları yok, ama ben Nickel'in ana repo'unu açtım: [# 139] (https://github.com/nickel-org/nickel.rs/issues/149) –

+0

Renato: Bu benim için çözüm gibi görünüyor, eğer bunu bir cevap olarak kabul ederseniz kabul edeceğim. Şimdilik, belki de sadece http yerel çatal yapıp ben büyük bir revizyon olmadan bağımlılık takas karar veririz. – Erik

cevap

3

O suçlu gerçektir ki görünüyor ki nikel bağımlılığıysa nickel-org's rust-http (crates.io yerine "resmi" openssl yerine sfackler/rust-openssl getiriyor. Maalesef pas http Repo sorunları etkin değil ama nikel ana repo birini açtı: #139

İlgili konular