curl / Mailing Lists / curl-library / Single Mail

curl-library

BUG / PROBLEM libcurl3 vrs libcurl4 - Ubuntu 18 64bit.

From: Duane Ellis via curl-library <curl-library_at_cool.haxx.se>
Date: Fri, 19 Oct 2018 01:24:47 +0000

I want to report a problem and a work around for LIBCURL on Ubuntu 18 -

The problem is outlined and detailed here:

https://github.com/GitTools/GitVersion/issues/1508

The there is breakage between "apt-get install libcurl3" - and "apt-get install libcurl4" - things break,

When I read about the libCurl Version numbers... I see the numbers are not what others would call them...
while these are great plans - to not need to change the libcurl ABI number .... Something went wrong and something is broken

It's easy to reproduce, I'll repeat the process here:

1) Create a Ubuntu 18 64bit virtual machine

2) "apt-get install mono-complete"

This provides the application "mono" which lets you run C-Sharp stuff on Linux.

3) Download the prebuilt Zip file for "GitVersion"

https://github.com/GitTools/GitVersion/releases/download/v4.0.0/GitVersion-bin-net40-v4.0.0.zip
(or if you choose source code and build it your self)

In this you will find GitVersion.exe

that's the app I am demoing the problem with - per this link -

https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294?comments=all

there are MULTIPLE other apps that are affected, Apache, VirtualBox, mssql-server, KiCAD etc etc.

4) Install what Ubuntu 18 calls: libcurl3, "apt-get install libcurl3"

5) Change to some GIT repo..., and run "GitVersion"
   
    cd /some/where/
    mono /path/to/GitVersion.exe

RESULT - - Success.

During this time, also run: "strace -o V3_trace mono /path/to/GitVersion.exe"

You can see that "libcurl.so.4" is being loaded although you nievely would think it would have been libcurl.so.3 ...

The above strace is going to create a trace file "V3_trace"

6) Change from libcurl3 to libcurl4

apt-get install libcurl4

Why this removes libcurl3 ... I do not know why - but it also removes or uninstalls other apps that are not compatible ... GRR GRR GRRR!

 https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294?comments=all

7) Try to run "GitVersion" and it crashes.

   mono /path/to/GitVersion.exe
   (result is a crash)

Using "strace" tells me that it is uloading the *SAME* libcurl.so.4 file.

8) Switching back to "apt-get install libcurl3" - things work again.

The problem statement here is this:

Both: "apt-get install libcurl3" and "apt-get install libcurl4" - install the same file name: "libcurl.so.4"

Numerous apps require "libcurl3" not "libcurl4"
While other applications require "libcurl4" not "libcurl3"

But both install the a file with the same name - thus the two are not compatible, if they claim to have the same version number they should be compatible but they are not.

Something broke.

9) The workaround/solution I have found is this:

Hide a private copy of the "libcurl3 - version of libcurl.so.4" - some where hidden.
Hide a private cop of the *OTHER* aka: libcurl4 version of libcurl.so.4 somewhere else.

10) For each item that has a problem .... create a shell script wrapper that PRELOADS the *CORRECT* library.

For example:
   
  export LD_PRELOAD=/path/to/libcurl3/private/libcurl.so.4
  mono /path/to/GitVersion.exe

Or

   export LD_PRELOAD=/path/to/libcurl4/private/libcurl.so.4
   "some other app that wants the other version of libcurl4"

Nasty - but it works.

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2018-10-19