为什么 reqwest 需要安装 OpenSSL?

Seb*_*off 5 ssl openssl rust reqwest

我试图让一个基本的reqwesthttp 请求像这样

extern crate reqwest;
extern crate url;

use url::Url;

fn main() {
    let resp = reqwest::get("http://google.com".parse::<Url>().unwrap());
    println!("{:?}", resp.unwrap())
}
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误

找不到 OpenSSL 安装目录,-sys如果不了解此信息,此板条箱将无法继续。如果安装了 OpenSSL 并且此 crate 无法找到它,则可OPENSSL_DIR以为编译过程设置环境变量。

确保您还安装了 openssl 的开发包。例如,libssl-dev在 Ubuntu 或openssl-develFedora 上。

...

嗯,这很容易解决。一个调用sudo apt install libssl-devsudo apt install pkg-config它的工作。但我仍然不明白这里到底出了什么问题。我认为cargo应该照顾依赖。为什么我现在要手动狩猎它们apt

mca*_*ton 4

reqwest 取决于rust-native-tls在 Linux 上取决于openssl-sys,这就是此消息的来源。所以cargo确实完成了它的工作,处理 Rust 依赖关系。

然而,openssl-sys依赖于 C 库 (OpenSSL),此时cargo不再关心。