Компиляция openssl

Делаю websocket клиент с библиотекой ws-rs. При попытке компиляции (cargo build) сообщается, о невозможности компиляции openssl:

   Compiling openssl v0.9.24
error: failed to run custom build command for `openssl v0.9.24`
process didn't exit successfully: `/home/qwe8013/VSCodeProjects/DumpBinance/target/release/build/openssl-700208eb71c8ae94/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'Unable to detect OpenSSL version', /home/qwe8013/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.9.24/build.rs:16:14
note: Run with `RUST_BACKTRACE=1` for a backtrace.

The terminal process terminated with exit code: 101

Содержимое раздела dependencies Cargo.toml следующее:

[dependencies]
clap = "*"
bincode = "*"
serde = "*"
serde_derive = "*"

[dependencies.ws]
version = "*"
features = ["ssl"]

Как возможно решить проблему?

Я не сталкивался с ws-rs, но судя по карго файлу, библиотека имеет старую версию openssl.

Проблема решаема в новой версии openssl. Автор слегка не коммитит в библиотеку и видимо забросил свой профиль.
Мб следует найти форк или схожую библиотеку (в экстримальном случае собрать вручную с этим ПР’ом).

Может оно системную openssl библитотеку ждет, которой у тебя не поставлено?

В большинстве дистров она есть + он же пакеты устанавливает, а карго завязан на openssl. Если бы openssl не было в системе, карго не скачивал бы зависимости.

Тут дело скорее в том, что в дистрибутиве @qwe8013 версия библиотеки более свежая, чем openssl v0.9.24.
Давнгрейдить openssl дурная затея, а вот обновить зависимость в ws-rs идея хорошая :slightly_smiling_face:

Ну, в убунте, например, по-умолчанию есть просто libssl пакет с самой библиотекой, нужной для работы уже готовых приложений, но для разработки libssl-dev пакет надо ставить отдельно.

1 лайк

Скачал проект ws-rs с гитхаба, поставил там версию openssl 0.10, после чего, при попытке сборки компилятор, что вполне ожидаемо, выдал кучу ошибок в “ws-rs/src/connection.rs”, так что придётся, видимо, юзать другую либу.

Так а системный libssl-dev (или какой там в твоей системе аналог) поставлен? Просто сишный проект с openssl получается собрать?

UPD: Еще у rust-openssl есть https://github.com/sfackler/rust-openssl#vendored - что бы он использовал не системную библиотеку, а свою собрал.

UPD2: А может про версии была и правильная мысль: https://github.com/sfackler/rust-openssl/issues/987

Просто сишный проект с openssl получается собрать?

Да
ОС - Arch linux

Как я и сказал, заюзаю другую либу.