दोनों git2 और हाइपर का उपयोग करना: openssl एक से अधिक बार लिंक



rust rust-cargo (1)

मैं एक ऐसी चीज़ बनाने की कोशिश कर रहा हूं जो एक ही समय में हाइपर और जीआईटी 2 दोनों का उपयोग कर रहा है। अब मुझे एक समस्या मिल गई है जो कि openssl को दो बार लिंक किया जा रहा है शेमपास्टर द्वारा एक टिप मुझे सीर्गो features और मैंने ऐसा करने की कोशिश की लेकिन मैं अभी भी फंस गया हूं।

मुझे cargo build पर मिल रही सटीक त्रुटि निम्न है:

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

जहाँ तक मैं openssl को बता सकता हूँ वह git2 और हाइपर दोनों के लिए आवश्यक है। क्या किसी को भी पता है कि मैं क्या गलत कर रहा हूं? चूंकि मैंने हाइपर (और अच्छे उपाय के लिए कुकी) के लिए डिफ़ॉल्ट विशेषताओं को अक्षम कर दिया है इसलिए openssl को अब इसके लिए आवश्यक नहीं होना चाहिए। मैंने लॉक फाइल के माध्यम से देखा है कि क्या openssl के लिए किसी अन्य चीज़ के लिए आवश्यक है या नहीं, लेकिन मुझे कुछ भी नहीं मिला। लेकिन मुझे अभी भी त्रुटि मिलती है दुर्भाग्य से कार्गो मुझे नहीं बताता कि निर्भरता कहां से आता है।

यहाँ मेरा Cargo.toml का निर्भरता अनुभाग और लॉक फ़ाइल है:

[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

ब्याज के मामले में यहां कार्गो लॉक है।


समस्या यह है कि पैरामीटर और एक्सप्लसएल का संयोजन:

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

पैरामीटर 0.5 की आवश्यकता होती है 0.8 server साथ मल्टीपार्ट 0.8, लेकिन बिना default-features = false :

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

इसका मतलब है कि मल्टीपार्ट 0.8 को भी हाइपर 0.9 की आवश्यकता होगी। और हाइपर (डिफ़ॉल्ट विशेषताओं का उपयोग करके) openssl 0.7 की आवश्यकता है।

एक नए openssl संस्करण में स्विच करने के लिए हाइपर में एक टिकट है