同时使用 git2 和 hyper: openssl 链接不止一次
Using both git2 and hyper: openssl linked more than once
我正在尝试构建同时使用 hyper 和 git2 的东西。现在我遇到了 openssl 被链接两次的问题。 shepmaster 的提示将我带到了 Cargos 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
据我所知,git2 和 hyper 都需要 openssl。有谁知道我做错了什么?由于我禁用了 hyper 的默认功能(以及 cookie 的良好措施),它不再需要 openssl。我查看了锁定文件,看看 openssl
是否需要其他任何东西,但我找不到任何东西。但我仍然得到错误。不幸的是,cargo 没有告诉我依赖来自哪里。
这是我的 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
这是 Cargo.lock 以防您感兴趣。
问题出在params和openssl的组合上:
[dependencies]
openssl = "0.9.1"
params = "0.5.0"
params 0.5 requires multipart 0.8, with features server
, but without default-features = false
:
[dependencies.multipart]
features = ["server"]
version = "0.8"
即multipart 0.8 will also require hyper 0.9。而 hyper(使用默认功能)需要 openssl 0.7.
在 hyper 中有一个 ticket 可以切换到较新的 openssl 版本。
我正在尝试构建同时使用 hyper 和 git2 的东西。现在我遇到了 openssl 被链接两次的问题。 shepmaster 的提示将我带到了 Cargos 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
据我所知,git2 和 hyper 都需要 openssl。有谁知道我做错了什么?由于我禁用了 hyper 的默认功能(以及 cookie 的良好措施),它不再需要 openssl。我查看了锁定文件,看看 openssl
是否需要其他任何东西,但我找不到任何东西。但我仍然得到错误。不幸的是,cargo 没有告诉我依赖来自哪里。
这是我的 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
这是 Cargo.lock 以防您感兴趣。
问题出在params和openssl的组合上:
[dependencies]
openssl = "0.9.1"
params = "0.5.0"
params 0.5 requires multipart 0.8, with features server
, but without default-features = false
:
[dependencies.multipart]
features = ["server"]
version = "0.8"
即multipart 0.8 will also require hyper 0.9。而 hyper(使用默认功能)需要 openssl 0.7.
在 hyper 中有一个 ticket 可以切换到较新的 openssl 版本。