Почему для reqwest требуется установка OpenSSL? - PullRequest
0 голосов
/ 08 сентября 2018

Я пытался заставить элементарный reqwest http-запрос работать так

extern crate reqwest;
extern crate url;

use url::Url;

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

Однако, это приводит к ошибке

Не удалось найти каталог установки OpenSSL, и этот -sys ящик не может действовать без этого знания. Если OpenSSL установлен и этот ящик не найдя его, вы можете установить переменную окружения OPENSSL_DIR для Процесс компиляции.

Убедитесь, что у вас также установлены пакеты разработки openssl. Например, libssl-dev в Ubuntu или openssl-devel в Fedora.

...

Ну, это было достаточно легко исправить. Один звонок на sudo apt install libssl-dev и sudo apt install pkg-config и он работает. Но я до сих пор не понимаю, что именно пошло не так. Я думал, что cargo должен был заботиться о зависимостях. Почему я теперь охотюсь на них вручную с apt?

1 Ответ

0 голосов
/ 08 сентября 2018

reqwest зависит от rust-native-tls, что в Linux зависит от openssl-sys, то есть , откуда приходит это сообщение . Так что cargo сделал свою работу, позаботившись о зависимостях от Rust.

Однако openssl-sys зависит от библиотеки C (OpenSSL), в которой точка cargo перестает заботиться.

...