curl / Mailing Lists / curl-library / Single Mail


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

From: Duane Ellis via curl-library <>
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:

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"
(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 -

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 "" is being loaded although you nievely would think it would have been ...

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!

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* 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: ""

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" - some where hidden.
Hide a private cop of the *OTHER* aka: libcurl4 version of 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/
  mono /path/to/GitVersion.exe


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

Nasty - but it works.

Received on 2018-10-19