2016-11-27 23 views
3

Ich versuche, etwas zu bauen, das gleichzeitig hyper und git2 verwendet. Jetzt habe ich ein Problem mit openssl, das zweimal verbunden wird. Ein Tipp von shepmaster führte mich zu Cargos und ich versuchte das, aber ich bin immer noch fest.Verwendung von Git2 und Hyper: openssl mehr als einmal verknüpft

Der genaue Fehler Ich bin auf cargo build immer ist die folgende:

error: native library `openssl` is being linked to by more than one version of the same package, but it can only be linked once; try updating or pinning your dependencies to ensure that this package only shows up once 

    openssl-sys v0.7.17 
    openssl-sys v0.9.1 

Soweit ich openssl sagen kann sowohl durch GIT2 und Hyper erforderlich ist. Hat jemand eine Idee, was ich falsch mache? Da ich die Standardfunktionen für hyper (und Cookie für gute Maßnahme) deaktiviert habe, sollte openssl nicht mehr benötigt werden. Ich habe die Sperrdatei durchgesehen, um zu sehen, ob openssl von irgendetwas anderem benötigt wird, aber ich konnte nichts finden. Aber ich bekomme immer noch den Fehler. Leider sagt mir die Ladung nicht, woher die Abhängigkeit kommt.

Hier ist meine Cargo.toml ‚s Abhängigkeitsabschnitt und die Sperrdatei:

[dependencies] 
openssl = "0.9.1" 
hoedown = "5.0.0" 
iron = "0.4.0" 
webbrowser = "0.1.3" 
router = "0.4.0" 
staticfile = "0.3.1" 
clap = "2.18.0" 
lazy_static = "0.2.2" 
linked-hash-map = "0.3.0" 
params = "0.5.0" 
git2 = "0.6.1" 

[dependencies.yaml-rust] 
version = "0.3.4" 
features = ["preserve_order"] 

[dependencies.hyper] 
version = "0.9.12" 
default-features = false 

[dependencies.cookie] 
version = "0.2.5" 
default-features = false 

Hier ist die Cargo.lock bei, die von Interesse ist.

Antwort

4

Das Problem ist die Kombination von params und openssl:

[dependencies] 
openssl = "0.9.1" 
params = "0.5.0" 

params 0.5 erfordert mehrt 0,8, mit Funktionen server, aber withoutdefault-features = false:

[dependencies.multipart] 
features = ["server"] 
version = "0.8" 

Das bedeutet multipart 0.8 auch hyper 0.9 erfordern. Und hyper (mit den Standardfunktionen) erfordert openssl 0.7.

Es gibt eine ticket in Hyper, um zu einer neueren OpenSSL-Version zu wechseln.

+0

Danke! Ich möchte nur einen geposteten JSON-Body parsen. Ok, ich muss nur noch Params fallen lassen und etwas anderes dafür finden. – Machisuji

+0

@Machisuji Ich habe eine [Pull-Anfrage] (https://github.com/iron/params/pull/31) für Params erstellt, die das beheben sollte. – wimh

+0

@Machisuji Es wurde behoben, Ihr ursprüngliches Beispiel funktioniert jetzt, da params 0.5.0 jetzt automatisch verwendet wird (http://doc.crates.io/specifying-dependencies.html). – wimh

Verwandte Themen