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

ABI breakage, cannot run application due to CURL_OPENSSL_3 issue #2433

Closed
probonopd opened this issue Mar 28, 2018 · 11 comments
Closed

ABI breakage, cannot run application due to CURL_OPENSSL_3 issue #2433

probonopd opened this issue Mar 28, 2018 · 11 comments

Comments

@probonopd
Copy link

@probonopd probonopd commented Mar 28, 2018

I did this

Run application (that uses libcurl) compiled on Ubuntu 14.04 on a Ubuntu 18.04 target system

I expected the following

Application runs

curl/libcurl version

libcurl.so.4 CURL_OPENSSL_3

operating system

Ubuntu 18.04


https://curl.haxx.se/libcurl/abi.html states a notable goal:

In the vast majority of all cases, a typical libcurl upgrade does not break the ABI at all. Your application can remain using libcurl just as before, only with less bugs and possibly with added new features.

However:

The previous major library soname number bumps (breaking backwards compatibility) have happened the following times (...)

The latest one listed there is libcurl 7.16.0 from October 2006.

Why then is it not possible to run an application which was compiled on Ubuntu 14.04 on a Ubuntu 18.04 target system?

Reference:
Kong/insomnia#805

@bagder
Copy link
Member

@bagder bagder commented Mar 28, 2018

That symbol looks like something Debian/Ubuntu have introduced. There is no such name (CURL_OPENSSL_3) in any curl source code or build script that comes from us. So, no, we didn't break the ABI as you show and we can't take responsibility for what distributors and others do with the libcurl versions they ship. Sorry. I'd advice you to take this discussion to your distribution and see what you and they can do to improve things now and for the future.

@probonopd
Copy link
Author

@probonopd probonopd commented Mar 29, 2018

Thanks @bagder for the clarification.

@jay
Copy link
Member

@jay jay commented Apr 11, 2018

@probonopd
Copy link
Author

@probonopd probonopd commented Apr 11, 2018

Is there a way for libcurl3 and libcurl4 to coexist? And why can Debian decide to introduce a new version of libcurl when in fact there isn't? Is that good practice?

@bagder
Copy link
Member

@bagder bagder commented Apr 11, 2018

Is there a way for libcurl3 and libcurl4 to coexist?

From a pure libcurl and SONAME angle: sure. If you can install both versions at the same time on debian/ubuntu? Probably not.

And why can Debian decide to introduce a new version of libcurl when in fact there isn't? Is that good practice?

That seems like a question to ask Debian people.

@jay
Copy link
Member

@jay jay commented Apr 11, 2018

Yes. It's a distro issue you'll have to wait and see what they do with it. There is a difference between libcurl so 3 and 4 but it appears they had some compatibility layer that broke.

Edit: Note building curl with --enable-versioned-symbols does not seem to help.

@probonopd
Copy link
Author

@probonopd probonopd commented Apr 30, 2018

On Ubuntu 18.04 applications compiled against an older version of libcurl (e.g.: Spotify) fail with the error version 'CURL_OPENSSL_3' not found. A workaround that works for me is to bundle a private copy of libcurl with the application.

Reference:
AppImage/pkg2appimage#187 (comment)

@DavidLDawes
Copy link

@DavidLDawes DavidLDawes commented May 29, 2018

I'm taking a look, will follow up.

@DavidLDawes
Copy link

@DavidLDawes DavidLDawes commented May 29, 2018

If you run this command:
sudo apt-get install libgconf-2-4
The Agama wallet starts, but there is a further issue. I'm looking into that now.

@DavidLDawes
Copy link

@DavidLDawes DavidLDawes commented May 29, 2018

Looks like after the libgconf install I hit the issue you ran into in libcurl, so I'm looking at that now.

@DavidLDawes
Copy link

@DavidLDawes DavidLDawes commented May 29, 2018

@probonopd I was able to get it to work by installing libgconf-2-4 then libcurl3.
Install libgconf-2-4 with apt-get:
sudo apt-get install libgconf-2-4
Then add a mirror to the list in /etc/apt/sources.list, I added
deb http://security.ubuntu.com/ubuntu xenial-security main
and finally install libcurl3
sudo apt-get install libcurl3

@lock lock bot locked as resolved and limited conversation to collaborators Aug 27, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants