Почему для reqwest требуется установка OpenSSL?
Я пытался получить элементарный 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
на федоре....
Ну, это было достаточно легко исправить. Один звонок sudo apt install libssl-dev
а также sudo apt install pkg-config
и это работает. Но я до сих пор не понимаю, что именно пошло не так. я думал cargo
должен был заботиться о зависимостях. Почему я теперь охотюсь на них вручную с apt
?
1 ответ
reqwest
зависит отrust-native-tls
, который от Linux зависит отopenssl-sys
, откуда это сообщение. Так cargo
сделал свою работу, заботясь о зависимостях Rust.
Тем не мение, openssl-sys
зависит от библиотеки C (OpenSSL), в какой момент cargo
перестает заботиться