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
