curl-library
BUG / PROBLEM libcurl3 vrs libcurl4 - Ubuntu 18 64bit.
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