Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force build with libssl3 or libssl1.1 on debian 12 #270

Open
nbanb opened this issue Oct 15, 2024 · 5 comments
Open

Force build with libssl3 or libssl1.1 on debian 12 #270

nbanb opened this issue Oct 15, 2024 · 5 comments

Comments

@nbanb
Copy link

nbanb commented Oct 15, 2024

Hi Vi

When building websocat on a fresh debian 12 install, there is only libssl3 installed on the system (libssl1.1 is not availiable under debian 12) so websocat build with libssl3 support.

Now if building websocat on a debian12 machine that was upgraded from debian11, both libssl1.1 and libssl3 are installed and :

cargo install --features=ssl --git https://github.com/vi/websocat

is building websocat with libssl1.1

The trouble is after when using websocat not on the build machine but on a fresh install of debian12 (without libssl1.1 : libssl1.1 is not in debian 12 repository) we get the following error :

websocat: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

The only way was to "purge" libssl1.1 on the build machine to force the use of libssl3 for debian12 systems.
But doing this remove the capacity of the building machine to build websocat for debian11 or debian10 LTS

I did not find a 'feature' of cargo install which let me specify which version of libssl must be used for building.
Is there a way to force the build with libssl3 without removing libssl1.1 of the building machine ?

Thanks and kind regards
nbanba

@nbanb nbanb changed the title Force build with libssl3 of libssl1.1 on debian 12 Force build with libssl3 or libssl1.1 on debian 12 Oct 15, 2024
@vi
Copy link
Owner

vi commented Oct 15, 2024

Maybe some environment variable can affect what openssl-sys choses?

Or trying older version of that crate?


What is the version of libssl-dev package? Is it for 1 or for 3?


Why not build Websocat for Debian 10 on Debian 10 itself, keeping 11 clean of old packages?


Note that there is a vendored_openssl crate feature that allows embedding OpenSSL into Websocat executable itself. This allows creation of more universal binaries, but unfortunately also opts out of Debian security updates regarding TLS.

@nbanb
Copy link
Author

nbanb commented Oct 15, 2024

Hi
Thanks for answer

On the building machine, this behavior happend with

libssl-dev:amd64                                      3.0.11-1~deb12u2    

If both libssl 1.1 and libssl3 are installed with libssl-dev in version 3+ :

$ dpkg -l | grep libssl
ii  libssl-dev:amd64                                      3.0.11-1~deb12u2                     amd64        Secure Sockets Layer toolkit - development files
ii  libssl1.1:amd64                                       1.1.1w-0+deb11u1                     amd64        Secure Sockets Layer toolkit - shared libraries
ii  libssl3:amd64                                         3.0.11-1~deb12u2                     amd64        Secure Sockets Layer toolkit - shared libraries

Then, the build will use libssl1.1 even if libssl-dev is in version 3+

Why not build Websocat for Debian 10 on Debian 10 itself, keeping 11 clean of old packages?

Because I will have to maintien 6 building machines for my project :
ARM64 debian10 + debian11 + debian12
AMD64 debian10 + debian11 + debian12

Today, I'm having only 2 building machines, 1 ARM64 and 1 AMD64 (I can cross-compile but users of my project told me that native build works better on arm64)

Kind regards
nbanba

@vi
Copy link
Owner

vi commented Oct 15, 2024

I haven't tried myself, but maybe you can experiment with OPENSSL_LIBS environment variable, pointing it to specific so files? (or maybe just setting it to ssl3)

@nbanb
Copy link
Author

nbanb commented Oct 15, 2024

Sorry, I did already try with ssl3 :

$ cargo install --features=ssl3 --git https://github.com/vi/websocat
    Updating git repository `https://github.com/vi/websocat`
  Installing websocat v1.13.0 (https://github.com/vi/websocat#258e7e89)
error: failed to compile `websocat v1.13.0 (https://github.com/vi/websocat#258e7e89)`, intermediate artifacts can be found at `/tmp/cargo-install8BWPHQ`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Caused by:
  Package `websocat v1.13.0 (/home/nba/.cargo/git/checkouts/websocat-d4b86660a0a61d76/258e7e8)` does not have the feature `ssl3`

I will try with OPENSSL_LIBS environment variable
Thanks
Regards
nbanba

@nbanb
Copy link
Author

nbanb commented Oct 15, 2024

Hi

OPENSSL_LIBS=/usr/lib/x86_64-linux-gnu/libssl.so.3 cargo install --features=ssl --git https://github.com/vi/websocat --force

is working

Thanks

Kind regards
nbanba

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants