2016-11-27 5 views
3

Я пытаюсь создать что-то, использующее одновременно гипер и git2. Теперь у меня проблема с одновременным подключением openssl. Совет от shepmaster привел меня к Cargos features, и я попробовал это, но я все еще застрял.Использование git2 и hyper: openssl связано более одного раза

Точная ошибка я получаю на 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 и гипер. Кто-нибудь знает, что я делаю неправильно? Поскольку я отключил функции по умолчанию для гипер (и cookie для хорошей меры), openssl больше не требуется. Я просмотрел файл блокировки, чтобы узнать, требуется ли openssl чем-нибудь еще, но я ничего не мог найти. Но я все еще получаю ошибку. К сожалению, груз не говорит мне, откуда происходит зависимость.

Вот мой раздел Cargo.toml «s зависимость и файл блокировки:

[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 

Вот в случае это из интереса Cargo.lock.

ответ

4

Проблема является сочетание Params и OpenSSL:

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

params 0.5 требует многослойную 0.8, с функциями server, но withoutdefault-features = false:

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

Это означает, что multipart 0.8 также потребует hyper 0.9. И гипер (с использованием функций по умолчанию) требует openssl 0.7.

Существует ticket в гиперпереключении для перехода на более новую версию openssl.

+0

Спасибо! Я просто хочу разобрать опубликованное тело JSON. Хорошо, мне просто нужно сбросить параметры и найти что-то еще для этого. – Machisuji

+0

@Machisuji Я создал запрос [pull request] (https://github.com/iron/params/pull/31) для параметров, которые должны исправить это. – wimh

+0

@Machisuji был исправлен, ваш исходный пример теперь работает, так как params 0.5.0 будут [автоматически использованы] (http://doc.crates.io/specifying-dependencies.html) сейчас. – wimh