After last updated libcurl3 on libcurl4, some apps are removed.

Bug #1754294 reported by Igor Mokrushin on 2018-03-08
632
This bug affects 140 people
Affects Status Importance Assigned to Milestone
curl (Ubuntu)
Undecided
Unassigned

Bug Description

Hi!

After last updated libcurl3 on libcurl4, system (Kubuntu 18.04 bionic) deleted such applications as:
virtualbox-5.2
opera-stable
slack-desktop
mongodb

I really need these applications, I installed them with broken dependencies, but they are deleted after each update. Is it possible to make the dependence of the libcurl3 in libcurl4, and not remove it altogether from system?

Igor Mokrushin (mcmcc) on 2018-03-08
description: updated
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in curl (Ubuntu):
status: New → Confirmed

uname -m && uname -r && cat /etc/*release
x86_64
4.15.0-10-generic
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic

 dpkg -l|grep libcurl
ii libcurl3-gnutls:amd64 7.58.0-2ubuntu2 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour)
ii libcurl4:amd64 7.58.0-2ubuntu2 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour)
ii libcurl4-gnutls-dev:amd64 7.58.0-2ubuntu2 amd64 development files and documentation for libcurl (GnuTLS flavour)

Here is attempt to install opera browser

 sudo dpkg -i opera-stable_51.0.2830.55_amd64.deb
Selecting previously unselected package opera-stable.
(Reading database ... 228694 files and directories currently installed.)
Preparing to unpack opera-stable_51.0.2830.55_amd64.deb ...
Unpacking opera-stable (51.0.2830.55) ...
dpkg: dependency problems prevent configuration of opera-stable:
 opera-stable depends on libcurl3 (>= 7.16.2); however:
  Package libcurl3 is not installed.

dpkg: error processing package opera-stable (--install):
 dependency problems - leaving unconfigured
Processing triggers for gnome-menus (3.13.3-11ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.17-1) ...
Processing triggers for shared-mime-info (1.9-2) ...

Errors were encountered while processing:
 opera-stable

here is install libcurl3 ...

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 libcurl3 : Conflicts: libcurl4 but 7.58.0-2ubuntu2 is to be installed
 libcurl4 : Conflicts: libcurl3 but 7.58.0-2ubuntu2 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

 sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  opera-stable

Brian Murray (brian-murray) wrote :

None of the packages which you are having an issue with are ones from the official Ubuntu archive, subsequently there is nothing we (the developers of Ubuntu) can do about this. You'll need to take up the issue with the people who develop these packages.

Changed in curl (Ubuntu):
status: Confirmed → Invalid
Marcos Jacoby (marcosjacoby) wrote :

1007/5000
Truth?
I mean that a library like libcurl4 that is not available separately as it does with libcurl3 and that is threaded down the user forcing the removal of lbcurl3 and all related applications being that you are the developers and not your problem?
Are you Microsoft employees by any chance?
Because it's looking alike.
The same arrogant attitude of fucking the customer that I do what I want and he'll have to swallow me.
The problem is in curl that forces this break and jeopardizes the whole system.
I even understand using a new library with new functions, leaner and so on, but do you need to screw with the whole system or with other applications?
I'm going to have a chat with the Debian people to do the same thing and make Ubuntu impractical and give the same excuse.
Then we will see if you are developers or are like Bill Gates, thief of ideas of others, putting their own name and blaming the mistakes on others.

Igor Mokrushin (mcmcc) wrote :

When trying to solve the dependence with libcurl3 there is a problem with the removal of official Ubuntu packages...

igor@mcmcc-GL553VE:~$ LANG=C sudo apt-get install libcurl3
[sudo] password for igor:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libboost-context1.65.1 python-cffi python-pycparser python3-cffi python3-ply python3-pycparser
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libcurl4-gnutls-dev opera-stable slack-desktop virtualbox-5.2
The following packages will be REMOVED:
  cmake cmake-curses-gui cmake-qt-gui curl djvulibre-bin kde-config-whoopsie kicad libafflib0v5 libcurl4 libcurl4-openssl-dev libtsk13
  pdf2djvu sleuthkit transmission-remote-gtk uget whoopsie
The following NEW packages will be installed:
  libcurl3 libcurl4-gnutls-dev
The following packages will be upgraded:
  opera-stable slack-desktop virtualbox-5.2
3 upgraded, 2 newly installed, 16 to remove and 68 not upgraded.
Need to get 182 MB of archives.
After this operation, 79.4 MB disk space will be freed.
Do you want to continue? [Y/n]

How to be? Are you offering to stay without them?

Marcos Jacoby (marcosjacoby) wrote :

The libcurl4 package was not showing up for me in Ubuntu Package Search and a few minutes ago it appeared!
What I can suggest is a workaround that applies to users of Ubuntu Bionic Beaver that is still in beta.
Download the files libcurl3_7.58.0-2ubuntu2_amd64.deb and libcurl4_7.58.0-2ubuntu2_amd64.deb.
Unpack the contents of each one at a time into a folder and modify the control file in the DEBIAN folder by removing the constraint in the conflict and replace fields.
Repackage the files and install them with dpkg with the --force-all option as they modify some common files.
Take a hold on these packages with apt-mark and dpkg selections.
I gave the following commands to hold:
sudo apt-mark hold libcurl3 libcurl4
echo "libcurl3 hold" | sudo dpkg --set-selections
echo "libcurl4 hold" | sudo dpkg --set-selections

Recalling that this is a workaround only applicable to version 18.04 since these versions of libcurl3 and 4 only exist in it and version 18.04 is still in development.
Remembering that this workaround is to allow the installation and operation not only of the applications mentioned, but also curl and uget but that side effects not yet observed can manifest themselves.
Use at your own risk!

Igor Mokrushin (mcmcc) wrote :

I manually edited file /var/lib/dpkg/status, it replaced libсurl3 (>= 7.16.2) to libcurl4 (>= 7.16.2) and libcurl3 to libcurl4, in those places where there is no version checking. Almost all the packages that require libcurl3 work without problems, except for the virtualbox, for it we had to take libcurl.so.4 from the libcurl3 package and put it in the /usr/lib/virtualbox directory...

This workaround makes it possible updates all the packages except those for which the changes have been made with the libcurl3 dependencies. It's better than marking packages as hold...

Bernhard M (bmaehr) wrote :

I have the same problem with Kopano packeges and php 7.0.

In fact I even don't know why there is a conflict and a problem to solve this. libсurl3 should install /usr/lib/x86_64-linux-gnu/libcurl.so.3 and libcurl4 /usr/lib/x86_64-linux-gnu/libcurl.so.4

I don't understand the conflict between libcurl3 and libcurl4 too, why can't they coexist?
Still wondering how to handle that while keeping opera.

The reason they conflict, is that both bundle libcurl.so.3 and libcurl.so.4, which are in fact just symlinks to the actual library.

The best would be to release a new version of libcurl3 that does NOT have a libcurl.so.4 symlink, ONLY the libcurl.so.3 one.
And then provide a version of libcurl4 that ONLY has libcurl.so.4, and states that it only conflicts with the libcurl3 versions without the change above.

@Brian Murray would it be possible to provide such a solution, to allow graceful upgrades? otherwise I'd expect a lot of similar reports when users upgrade to Bionic, with popular applications like Spotify depending on libcurl3, and that Debian still uses the libcurl3 in their repositories, only their 'experimental' has switched to the libcurl4 naming.

Igor Mokrushin (mcmcc) wrote :

The problem is that, in libcurl3 used libcurl.so.4, and not libcurl.so.3...

Igor Mokrushin (mcmcc) wrote :

igor@mcmcc-GL553VE:~$ ldd /usr/lib/x86_64-linux-gnu/opera/opera | grep libcurl
        libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f5e8cb3c000)

or

igor@mcmcc-GL553VE:/usr/lib/virtualbox$ sudo ldd /usr/lib/virtualbox/VBoxRT.so | grep libcurl
        libcurl.so.4 => /usr/lib/virtualbox/libcurl.so.4 (0x00007f62b1a1e000)

Yes, but, it are symlinks that could trivially be changed:

ls -al /usr/lib/x86_64-linux-gnu/libcurl.so.*
lrwxrwxrwx 1 root root 12 jan 25 10:19 /usr/lib/x86_64-linux-gnu/libcurl.so.3 -> libcurl.so.4
lrwxrwxrwx 1 root root 16 jan 25 10:19 /usr/lib/x86_64-linux-gnu/libcurl.so.4 -> libcurl.so.4.5.0
-rw-r--r-- 1 root root 518600 jan 25 10:19 /usr/lib/x86_64-linux-gnu/libcurl.so.4.5.05.0

cat /var/lib/dpkg/info/libcurl3\:amd64.list
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0
/usr/share
/usr/share/doc
/usr/share/doc/libcurl3
/usr/share/doc/libcurl3/NEWS.Debian.gz
/usr/share/doc/libcurl3/changelog.Debian.gz
/usr/share/doc/libcurl3/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libcurl3
/usr/lib/x86_64-linux-gnu/libcurl.so.3
/usr/lib/x86_64-linux-gnu/libcurl.so.4

Igor Mokrushin (mcmcc) wrote :

My all problematic applications use libcurl.so.4 from libcurl3 and none of which does not use libcurl.so.3, I do not understand how symlink to unused library will solve this problem?

If they were compiled against libcurl.so.4 I assume they would be compiled against abi-4 of libcurl, right?
AFAIK the supplying of libcurl.so.4 by libcurl3 was a trick by Debian by keeping the same exposed symbols, which kept abi-3 and abi-4 the same.
So I'd assume even though those packages specifying a dependency on libcurl3, in fact they did depend on libcurl.so.4 which should no problem to be provided by the new libcurl4.

I see btw same ldd result on Spotify:
ldd /usr/bin/spotify | grep libcurl
 libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007feea6b5a000)

Ok, Igor you are right about them being linked to libcurl.so.4 while assuming abi-3; this is a very unpleasant situation that indeed cannot even be resolved with adjusting the symlinks :-/

Rocko (rockorequin) wrote :

@Brian Murray: I think that it is incorrect to mark this bug as invalid - at the very least it should be kept as confirmed against the 18.04 release notes so they can include a warning against upgrading to Ubuntu 18.04 because it may not be compatible with a number of popular third-party applications.

zyrorl (zyrorl) on 2018-03-13
Changed in curl (Ubuntu):
status: Invalid → Confirmed
Rocko (rockorequin) wrote :

FWIW, I got opera-stable and viber to install with libcurl4 by extracting their debs, manually editing their control file to say libcurl3|libcurl4, recreating the deb using the "ar -r" command, and then using dpkg -i to reinstall. They run fine but of course I haven't been able to test all their functionality.

Yuan (rmafort) wrote :

@Rocko method worked for slack-desktop 3.1 too. Installed without issues after dependency edited on control and remade .deb

For spotify this trick doesn't work, it complains about the changed CURLOPT_SSL_CTX_FUNCTION symbol when starting the application.

Rocko (rockorequin) wrote :

@Maarten: Maybe spotify will install and work from its flatpak? It's the second flatpak app listed here: https://www.omgubuntu.co.uk/2017/07/7-flatpak-apps-can-install-right-now-flathub

Thanks for the hint, I use their snap-package as workaround, as hinted by their developer:
https://community.spotify.com/t5/Desktop-Linux/libcurl4/m-p/4411011#M15902

I installed Slack ignoring the dependency and works:
dpkg --ignore-depends libcurl3 -i slack-desktop-3.1.0-amd64.deb

but now every apt operation tell me there's the broken dependency.

Manel R. Doménech (manelio) wrote :

This is a very big problem.

A lot of packages from external repos are still using libcurl3.

In my opinion libcurl3 and libcurl4 should be able to coexist.

I tried the workaround proposed by @marcosjacoby, but I get errors like:

/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found

or

curl: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by curl)

It depends on the last libcurl version I installed.

Tim De Pauw (timdepauw) wrote :

Confirming that this seems to fix slack-desktop for now:

$ wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.1.0-amd64.deb
$ dpkg-deb -R slack-desktop-3.0.1-amd64.deb slack
$ vim slack/DEBIAN/control # and replace libcurl3 with libcurl4
$ dpkg-deb -b slack slack.deb
$ sudo dpkg -i slack.deb

which also means that the Slack team should be able to put out a new version pretty quickly.

Still, if there's a way for libcurl3 and libcurl4 to coexist, that'll also solve a bunch of issues.

This method doesn't work with Insomnia, for example

ср, 28 мар. 2018 г., 16:20 Tim De Pauw <email address hidden>:

> Confirming that this seems to fix slack-desktop for now:
>
> $ wget
> https://downloads.slack-edge.com/linux_releases/slack-desktop-3.1.0-amd64.deb
> $ dpkg-deb -R slack-desktop-3.0.1-amd64.deb slack
> $ vim slack/DEBIAN/control # and replace libcurl3 with libcurl4
> $ dpkg-deb -b slack slack.deb
> $ sudo dpkg -i slack.deb
>
> which also means that the Slack team should be able to put out a new
> version pretty quickly.
>
> Still, if there's a way for libcurl3 and libcurl4 to coexist, that'll
> also solve a bunch of issues.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1754294
>
> Title:
> After last updated libcurl3 on libcurl4, some apps are removed.
>
> Status in curl package in Ubuntu:
> Confirmed
>
> Bug description:
> Hi!
>
> After last updated libcurl3 on libcurl4, system (Kubuntu 18.04 bionic)
> deleted such applications as:
> virtualbox-5.2
> opera-stable
> slack-desktop
>
> I really need these applications, I installed them with broken
> dependencies, but they are deleted after each update. Is it possible
> to make the dependence of the libcurl3 in libcurl4, and not remove it
> altogether from system?
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294/+subscriptions
>

Dylan Borg (borgdylan) wrote :

This is causing havoc! People installing .NET Core which depends on libcurl3 cannot install cmake that is depending on libcurl4. The nomenclature of these packages implies that they should be installable side by side.

Manel R. Doménech (manelio) wrote :

I agree with @borgdylan. I'm thinking of leaving Ubuntu just for this reason. Too much time without this problem being fixed.

Zac Collier (zacacollier) wrote :

@djaler1 I was able to use the method detailed by @timdepauw to get both Slack and Insomnia working - for Insomnia I just grabbed the raw deb from here

https://builds.insomnia.rest/downloads/ubuntu/latest

Kirill Romanov (djaler1) wrote :

Insomnia now can work without libcurl as dependency. It now statically
linked

ср, 25 апр. 2018 г., 19:40 Zac Collier <email address hidden>:

> @djaler1 I was able to use the method detailed by @timdepauw to get both
> Slack and Insomnia working - for Insomnia I just grabbed the raw deb
> from here
>
> https://builds.insomnia.rest/downloads/ubuntu/latest
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1754294
>
> Title:
> After last updated libcurl3 on libcurl4, some apps are removed.
>
> Status in curl package in Ubuntu:
> Confirmed
>
> Bug description:
> Hi!
>
> After last updated libcurl3 on libcurl4, system (Kubuntu 18.04 bionic)
> deleted such applications as:
> virtualbox-5.2
> opera-stable
> slack-desktop
>
> I really need these applications, I installed them with broken
> dependencies, but they are deleted after each update. Is it possible
> to make the dependence of the libcurl3 in libcurl4, and not remove it
> altogether from system?
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294/+subscriptions
>

Corey Seliger (seliger) wrote :

This also creates a conflict with r-core-base. I can have curl installed or R installed, but not both at the same time. Ubuntu 18.04.

Toomas (toomaskaevand) wrote :

I have the same problem with Slack 3.1.1, R (r-core-base) and curl. Either I have installed curl and r-core-base or Slack (also there were problems with Spotify). If I install Slack which depends on libcurl3 then I have to remove curl and r-core-base. Very annoying.

Justin Nichols (jnichols21) wrote :

I do not understand how this did not hold up the release of Ubuntu 18.04. Many apps now conflict because of this issue.

Evgeny Brazgin (xapienz) wrote :

Another solution for this problem is downloading sources for libcurl4 package (apt-get source libcurl4), modifying "control" file by adding "Provides: libcurl3 (= ${binary:Version})" to libcurl4 section and rebuilding the package. It may also be necessary to add the new version to "changelog", in my case apt couldn't install the new deb right.
After that, everything mostly works well, except some apps (like virtualbox-5.2), which complain like "version `CURL_OPENSSL_3' not found", but for virtualbox-5.2 it is solved by installing the package virtualbox.

Dave English (sandersw) wrote :

My workaround for slack-desktop was to install using snap:

sudo snap install slack --classic

MasterCATZ (mastercatz) wrote :

slimjet is another victim

root@aio:/home/aio/Downloads# dpkg -i slimjet_amd64.deb
Selecting previously unselected package slimjet.
(Reading database ... 682186 files and directories currently installed.)
Preparing to unpack slimjet_amd64.deb ...
Unpacking slimjet (18.0.5.0) ...
dpkg: dependency problems prevent configuration of slimjet:
 slimjet depends on libcurl3; however:
  Package libcurl3 is not installed.

dpkg: error processing package slimjet (--install):
 dependency problems - leaving unconfigured
Processing triggers for menu (2.1.47ubuntu2) ...
Processing triggers for gnome-menus (3.13.3-11ubuntu1) ...
Processing triggers for bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for desktop-file-utils (0.23-1ubuntu3) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for man-db (2.8.3-2) ...
Errors were encountered while processing:
 slimjet
root@aio:/home/aio/Downloads# apt install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  slimjet
0 to upgrade, 0 to newly install, 1 to remove and 20 not to upgrade.
1 not fully installed or removed.
After this operation, 260 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
root@aio:/home/aio/Downloads# apt install libcurl3
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 libcurl3 : Conflicts: libcurl4 but 7.58.0-2ubuntu3 is to be installed
 libcurl4 : Conflicts: libcurl3 but 7.58.0-2ubuntu2 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
root@aio:/home/aio/Downloads# apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  slimjet
0 to upgrade, 0 to newly install, 1 to remove and 20 not to upgrade.
1 not fully installed or removed.
After this operation, 260 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
root@aio:/home/aio/Downloads# uname -a
Linux aio 4.15.10-041510-generic #201803152130 SMP Thu Mar 15 21:32:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@aio:/home/aio/Downloads#

noabody (noabody) wrote :

I'm re-posting this comment I made on the ngemu forums as it is related.

These strings are present in compiled epsxe_x64 (hex-edit).
```
libcurl.so.4.curl_easy_init.curl_easy_setopt.curl_easy_cleanup.curl_easy_perform.CURL_OPENSSL_3
```

It lists the expected soname (libcurl.so.4) along with the symbol version (CURL_OPENSSL_3).

Installed libcurl4_7.58.0-2ubuntu3_amd64.deb:
```
readelf -Ws /usr/lib/x86_64-linux-gnu/libcurl.so.4 | grep curl_version
  397: 0000000000024980 172 FUNC GLOBAL DEFAULT 13 curl_version_info@@CURL_OPENSSL_4
  405: 0000000000024800 372 FUNC GLOBAL DEFAULT 13 curl_version@@CURL_OPENSSL_4
```

Conflicting libcurl3 package libcurl3_7.58.0-2ubuntu2_amd64.deb:
```
readelf -Ws libcurl.so.4 | grep curl_version
  389: 0000000000024700 172 FUNC GLOBAL DEFAULT 13 curl_version_info@@CURL_OPENSSL_3
  397: 0000000000024580 372 FUNC GLOBAL DEFAULT 13 curl_version@@CURL_OPENSSL_3
```

A work-around would be to extract libcurl.so.4.5.0 (from libcurl3_7.58.0-2ubuntu2_amd64.deb) into the same folder as epsxe_x64, sym-link or rename it to libcurl.so.4, then run epsxe from a terminal with command:
```
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./epsxe_x64
```

I toyed with other solutions but didn't want to mess up system libraries when ldconfig eventually caches the symbols.

Could also use ldd to get same info as hex-editor.
```
ldd epsxe_x64 | grep -i curl
./epsxe_x64: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./epsxe_x64)
    libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fee19108000)
```

>None of the packages which you are having an issue with are ones from the official Ubuntu archive, subsequently there is nothing we (the developers of Ubuntu) can do about this. You'll need to take up the issue with the people who develop these packages.

Maybe considering whether to break Slack and Virtualbox is a nice idea when updating libraries for an LTS. Just a thought.

Dylan Borg (borgdylan) wrote :

Can't canonical turn libcurl3 into a transitional package for libcurl4? When I did so manually I got stuff to work fine. Most 3rd party binaries use dot target libcurl3 as there was no libcurl4 package when in fact they'd work fine against libcurl4 since the ABI did nto change between curl 3 and 4, only the headers got changed. Please have this fixed. An LTS should be reliable in every aspect including the fact that it should not break installs.

Antonio Pérez (skarcha) wrote :

What a shame! In this situations I always remember Linus Torvalds words: never break user experience.

https://felipec.wordpress.com/2013/10/07/the-linux-way/
https://unix.stackexchange.com/a/235532

Pascal Normand (noorm) wrote :

After updating to 18.04, curl is gone! When trying to install it want to remove virtualbox (libcurl3, libcurl4 issue).

No... way.

At the moment, the simplest solution is to move the VM to another computer (windows) and after that I can experiment with this... disaster.

Valters (valters) wrote :

Also not possible to install MySQL Workbench (mysql-workbench-community-6.3.10-1ubuntu17.10-amd64.deb) because it has dependency on libcurl3 which libcurl4 disallows. It is not a solution to require all 3rd party packages to move to libcurl4.

If the curl library did not break ABI between 3 and 4, and if it is completely possible to have libcurl3 transitional package hanging around, it would allow all those applications install and work.

Currently Ubuntu has centrally broken this for everyone, and the retoric on ticket #1754294 is very frustrating.

Valters (valters) wrote :

Sorry, I meant the comments on ticket 1754686

Jordan Piel (pielj) wrote :

This also breaks Shibboleth since libapache2-mod-shib2 has a dependency on libxmltooling7 which depends on libcurl3.

sudo apt install libapache2-mod-shib2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libapache2-mod-shib2 : Depends: libshibsp-plugins (= 2.6.1+dfsg1-2) but it is not going to be installed
                        Depends: shibboleth-sp2-utils (>= 2.6)
                        Depends: libshibsp7 but it is not going to be installed
                        Depends: libxmltooling7 (>= 1.6.0-5) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

If installing libcurl3 alongside libcurl4 was possible this wouldn't be an issue. Why is this not a high priority? It makes 18.04 unstable at best.

César Bento Freire (cfreire) wrote :

It also affects Portuguese Citizen card software (Aplicação do Cartão de Cidadão) - pteid-mw_ubuntu16_amd64.deb

 pteid-mw : Depende: libcurl3 (>= 7.16.2) mas não vai ser instalado
            Depende: libxerces-c3.1 mas não é instalável
E: Não foi possível corrigir problemas, você tem pacotes mantidos (hold) estragados.

Alfred Krohmer (devkid) wrote :

For Slack, this seems to be fixed with the latest release 3.2.0.

Evgeny Brazgin (xapienz) wrote :

Hello all,
I spent some time and modified deb building scripts to do the following two things:
1. Make libcurl4 provide libcurl3 (Provides: libcurl3 in deb)
2. Add versioned aliases for exported symbols (both curl_XXX@@CURL_OPENSSL_4 and curl_XXX@CURL_OPENSSL_3 exist at the same time).

Seems to work well for all apps that I tested (nixnote, virtualbox-5.2, viber), but I am not 100% sure about complete binary compatibility :)
Also I am not sure that this is the best solution to the existing problem.

I have put the stuff which is necessary to build the debs here: https://github.com/xapienz/curl-debian-scripts/
You may run `apt-get source libcurl4`, then clone the repo, copy its contents to `debian` subfolder and rebuild the package using command like `debuild -nc -uc -us`. After that, you will get working debs.

Also, I created a ppa with these debs here: https://launchpad.net/~xapienz/+archive/ubuntu/curl34

I cannot promise that I will frequently support this ppa with updates, because I think that Canonical should work on making this problem fixed. Also I'm not sure that it will not break any other apps. But at least this solution can be used for transitional period, until the problem is resolved.

César Bento Freire (cfreire) wrote :

Hello Evgeny Brazgin
I want to thank for your time and support to this issue, as I'm sure we all do.
Never the less, I have installed you ppa and tried to install pteid-mw_ubuntu16_amd64.deb, witch is Portuguese Citizen Software and gives the followin error:

$ sudo apt install ./pteid-mw_ubuntu16_amd64.deb

Os pacotes a seguir têm dependências não satisfeitas:
 pteid-mw : Depende: libxerces-c3.1 mas não é instalável

I don't know if you can help in this case, because this also depends on libxerces-c3.1.
The default on ubuntu 18.04 is libxerces-c3.2.
Any Ideas?

Evgeny Brazgin (xapienz) wrote :

Hello César Bento Freire,
This is not related to libcurl.

But I would suggest you to download libxerces-c3.1 from ubuntu 17.10 repository and try to install it: https://packages.ubuntu.com/artful/libxerces-c3.1

amd64: http://mirrors.kernel.org/ubuntu/pool/universe/x/xerces-c/libxerces-c3.1_3.1.4+debian-2_amd64.deb
i386: http://mirrors.kernel.org/ubuntu/pool/universe/x/xerces-c/libxerces-c3.1_3.1.4+debian-2_i386.deb

This may require you to install further additional dependencies from ubuntu 17.10, or it may just work.

Jorge Gustavo (jgr) wrote :

Hello César Bento Freire,

I've wrote a small tutorial about installing Portuguese Citizen Smartcard Software, at
https://blog.geomaster.pt/cartao-de-cidadao-no-ubuntu-18-04/

You can install manually libxerces-c3.1 as Evgeny Brazgin explained.

It also depends on libcurl3. To install Evgeny Brazgin packages, please do:

sudo add-apt-repository ppa:xapienz/curl34
sudo apt policy curl
sudo apt remove curl libcurl4
sudo apt install curl=7.58.0-2ubuntu3ppa2 libcurl4=7.58.0-2ubuntu3ppa2

Evgeny Brazgin: thank you for providing the packages! Well done!

garf (gareth20) wrote :

This also affects adobe brackets, as referenced here: https://github.com/adobe/brackets/issues/14171

flo5783 (florent-bouchy) wrote :

Still not solved, even after the official release of Ubuntu 18.04 LTS?
I was using Slimjet as my browser, and now I cannot anymore because of its dependency to libcurl3... and I cannot just replace libcurl4 by libcurl3 because many other applications depend on libcurl4.
What can I do?!

Ned Hedrick (nhedrick) wrote :

On my system, the Slimjet browser is broken by this mess. It is non-functional after the update to libcurl4 and it cannot be re-installed successfully.

William Jojo (w-jojo) wrote :

We are in the process of migrating our Apache web servers from 14.04 to 18.04. Seems this will be impossible since the libcurl problem makes Shibboleth authentication in Apache non-existent.

All of the dependencies are Universe packages (not 3rd party). Essentially, anyone wanting SAML2 SSO access controls in Apache has to fall back to 16.04. Bionic is effectively broken.

root@webdev:/etc/apache2/sites-available# apt install libapache2-mod-shib2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libapache2-mod-shib2 : Depends: libshibsp-plugins (= 2.6.1+dfsg1-2) but it is not going to be installed
                        Depends: shibboleth-sp2-utils (>= 2.6) but it is not going to be installed
                        Depends: libshibsp7 but it is not going to be installed
                        Depends: libxmltooling7 (>= 1.6.0-5) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
root@webdev:/etc/apache2/sites-available#

flo5783 (florent-bouchy) wrote :

I managed to make it work with slimjet after using an idea from:
https://github.com/getinsomnia/insomnia/issues/805

*Here's my dirty "workaround".*

Short version: modify the .deb package to control for libcurl version 3 *OR 4*.

Detailed version: in a terminal, change directory to the folder containing slimjet's .deb package, then:
 sudo mkdir tmp
 sudo dpkg-deb -R slimjet_amd64.deb tmp
# now edit the "control" file to replace "libcurl3" by "libcurl3|libcurl4", then save
 sudo dpkg-deb -b tmp slimjet_amd64_fixed.deb

Finally, execute the new "slimjet_amd64_fixed.deb" package to install slimjet.

Hope this solution will suffice until the real problem is fixed.

Evgeny Brazgin (xapienz) wrote :

I think Canonical should implement some solution like in #47 to support both ABIs and keep it supported for some time, because all other apps need some time to upgrade to libcurl4 (18.04 is LTS, so it looks like it shouldn't have been upgraded to libcurl4 until 18.10).

vicho (vichoca9) wrote :

I tried the PPA solution of #47, with and old Assaultcube and ePSXe binaries. At the moment, everything seems fine, so I will update in case something fails or don't work.

aka2006 (153568795-b) wrote :

Same issue.
When I used git clone, it shows:
git-remote-https: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by git-remote-https)
But when I installed libcurl3, it shows:
The following packages will be REMOVED:
  libcurl4 virtualbox-5.2
From the above comments, I don't get satisfied solution.
Will Ubuntu release the patch?

Shriram (shriram-pheonix) wrote :

I have got the same issue. cURL and MongoDB cannot be installed at the same time due to libcurl3 and libcurl4 conflicts.

Adding this and downgrade the curl worked for me. https://launchpad.net/~xapienz/+archive/ubuntu/curl34

My application that was the problem was sky from tel.red

Petr Sedlacek (petr-sedlacek) wrote :

At first I was annoyed by this strange choice by Cannonical. I mainly do not understand why libcurl3 and libcurl4 cannot be installed at the same time as is usual with libraries of different major version.
Then I got to accept that the problem actually needs to be fixed in the dependent programs - they need to switch from libcurl3 to libcurl4 which is now the default in Ubuntu 18.04. VirtualBox and Slack already have and I'm sure the rest will follow quickly. If not complain to them.
I expect this "issue" will not be fixed.

Neil Hoggarth (neil-hoggarth) wrote :

I have the same problem as William Jojo (w-jojo) reported in #54.

The Shibboleth authentication package (libapache2-mod-shib2) in Bionic Universe depends on libcurl3 (via libxmltooling7). I'm told in bug #1776489 that this is because upstream Shibboleth hasn't yet released a version that works with OpenSSL 1.1, so it genuinely needs libcurl3/libssl1.0.0.

Even when Shibboleth 3 is released by upstream, presumably it will not appear in Bionic, except perhaps as a backport?

So we need a solution for proper libcurl3 / libcurl4 co-existence in Bionic, if the Shibboleth SSO stack is going to work in the current LTS cycle.

aka2006 (153568795-b) wrote :

It seems because of my git version.
When I used ubuntu 16.04, the git version is lower than I need, then I installed new version manually.
After upgrade to 18.04, the new git version is higher than the former one and it uses libcurl3, then the problem happened.
Now use the latest git version, it's ok.
So, maybe more and more softwares switch to libcurl4, it's not a big deal.

William Jojo (w-jojo) wrote :

I have done much packaging back in my days in AIX. This looks to be a simple case of one dependency to break them all - libxmltooling7 (see #54 & #62, above). However looks can be deceiving.

For the complexity, see:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=828607#49

The details for libxmltooling supporting OpenSSL 1.1 appears to be fixed below.
https://issues.shibboleth.net/jira/browse/CPPXT-110

There is still the issue of release.

However, there are other pieces that need to fall in line.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859829
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859831

I do not envy the ladies and gents that have to make this library soup palatable to all, it is often exhausting, seemingly thankless and involves much waiting on others.

Yes, it is broken, but not because of Canonical. In a way, I blame myself a bit since a release upgrade test of 16.04 or clean install of a shib-ed web server using the beta release during implementation of libcurl4 (prior to Bionic's official release) would have revealed breaking of Shib2 SP and this could have been posted to the release notes.

Of course, like most, my hindsight is rather sharp.

Dylan Borg (borgdylan) wrote :

This is simple to fix, by changiong control file and rebuilding the packages. What is holding canonical from releasing an unbroken version?

description: updated
Nick (nforced) wrote :

Oh, come on, I can't have Viber (and a lot more) because of PHP7, really?! This is July 2018, please do something about it!

Evgeniy (ev-ev) wrote :

+1 to #66

Jochem Blok (jochem.blok) wrote :

Geachte heer/mevrouw,

Bedankt voor uw e-mail!

Op maandag ben ik niet aan het werk. Mijn werkdagen zijn dinsdag tot en met vrijdag. Ik zal uw mail dan in behandeling nemen.

   Met vriendelijke groet,

   Jochem Blok
   Programmeur

      E: <email address hidden>

      T: +31 (0) 164 210 240

      Faster Forward | Stationsstraat 14
      4611 CC Bergen op Zoom | www.fasterforward.nl

   Op deze e-mail is een disclaimer van toepassing, ga naar www.fasterforward.nl/e-mail-disclaimer
   A disclaimer is applicable to this email, please refer to www.fasterforward.nl/e-mail-disclaimer

Van: Evgeniy (<email address hidden>)Datum: 09-07-2018 01:45Aan: <email address hidden> (<email address hidden>)Onderwerp: [bug 1754294] Re: After last updated libcurl3 on libcurl4, some apps are removed.
+1 to #66

--
You received this bug notification because you are subscribed to
the bug
report.
https://bugs.launchpad.net/bugs/1754294

Title:
After last updated libcurl3 on libcurl4, some apps are
removed.

Status in curl package in Ubuntu:
Confirmed

Bug description:
Hi!

After last updated libcurl3 on libcurl4, system (Kubuntu 18.04
bionic) deleted such applications as:
virtualbox-5.2
opera-stable
slack-desktop
mongodb

I really need these applications, I installed them with
broken
dependencies, but they are deleted after each update. Is it
possible
to make the dependence of the libcurl3 in libcurl4, and not remove
it
altogether from system?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294/+subscriptions

und3ath (peto-z) wrote :

Mysql Workbench is also affected and removed after updating to curl4 from curl3

Mark Daku (markdaku) wrote :

Can this not be done?

Create new meta package libcurl
libcurl depends on libcurl3 >= newversion with fix
libcurl depends on libcurl4 >= newversion with fix

libcurl3 removes the hack of having libcurl.so.4
libcurl4 contains a proper libcurl.so.4

They should be able to co-exist at this point. Well actually they need to co-exist because there is zero chance everyone will upgrade all at once and pass testing etc.

-----------------

OR Just plain Nuke libcurl4 all together and do a version jump up to libcurl5. And merge all libcurl4 code into the libcurl3 package.

Mark Daku (markdaku) wrote :

Or can this be done.

Change libcurl3 into a meta package that depends on libcurl3-4.
Change libcurl4 into a meta package that depends on libcurl3-4.

libcurl3-4 is unified package of 3 and 4 code.

Note: Someone will have to work with upstream in order to bump libcurl to version5. So that libcurl3 code can be depricated. This version 5 code in reality is libcurl 4 code only. But the lib would be a new version.

Again:
Both lib3 and lib4 must be able to co-exist on a system. If they don't way to much stuff breaks.

Evgeny Brazgin (xapienz) wrote :

Hi Mark,
The problem is a little more complex.

For example, let's take package virtualbox-5.2 from official virtualbox repo (https://download.virtualbox.org/virtualbox/debian/).
1. Deb package depends on libcurl3.
2. Its binary is linked to library with name 'libcurl.so.4'.
3. Its binary requires existence of versioned symbols with names like 'curl_version_info@@CURL_OPENSSL_3'.

2 and 3 together don't allow simply solve the problem, because there are apps, which read library of version 4 and use API of version 3.

Mazy (mazy) wrote :

same with mongodborg - depends on libcurl3

Donjan Rodic (bryonak) wrote :

Upgraded from 16.04 to 18.04.1 expecting stability. Now I can't have cmake and google earth installed simultaneously without tedious manual package patching at every update?!

$ sudo apt install cmake libcurl3
[...]
 libcurl3 : Conflicts: libcurl4 but 7.58.0-2ubuntu3.2 is to be installed
 libcurl4 : Conflicts: libcurl3 but 7.58.0-2ubuntu2 is to be installed

William Jojo (w-jojo) wrote :

Sharing some other details and help in case it can benefit anyone.

# Workaround for the dependency
https://depts.washington.edu/bitblog/2018/06/libcurl3-libcurl4-shibboleth-php-curl-ubuntu-18-04/

# Official xmltooling dependency bug that breaks libapache2-mod-shib2
https://bugs.launchpad.net/ubuntu/+source/xmltooling/+bug/1776489

Bill

mssql-server is another fallen one... depends on libcurl3, and force me to uninstall KiCAD, libcurl4, libcurl4-openssl-dev, cmake and curl...
How can a mess like this one make it to a LTS release...
And also #3 answer is just awful, how can you just wash your hands like that.

John McLane (z3r0cool) wrote :

Can anyone from maintainers work on this bug, Please ? As said in comment #3, is there anyone who can at least point me on where to solve this issue. I know things get frustrating when maintainers get comments like #4. Now would you guys please let go and solve this bug. It will help folks like me. Thanks

John McLane (z3r0cool) wrote :

As said in comment #3 I opened an issue #2944 on github. Here is the link https://github.com/curl/curl/issues/2944.

Jeremy Akers (irwinr12) wrote :

So it's September 2018. 18.04 was released in April 2018. And we still can't have "curl" and "VirtualBox" installed simultaneously? You have got to be freaking kidding me.

All because someone at Canonical decided this was "not their problem" to ensure that libcurl3 and libcurl4 could be installed side by side? Apparently every app in the literal Linux universe needs to update to libcurl4 the instant Ubuntu decides to upgrade otherwise it can't be installed on the latest version of Ubuntu?

Gerben Wijnja (gerben-7) wrote :

And here's another one... I'm in Ubuntu 18.04, and Apache 2.4 and cURL can not be installed at the same time.

apache2-bin depends on libcurl3
curl depends on libcurl4

:-(

Nick (nforced) wrote :

Any solution to the problem will be highly appreciated at this point ~(;

untoreh (untoreh) wrote :
David Dombrowsky (davek) wrote :

Here's what I did to "solve" it on 18.04

{{{
git clone https://github.com/curl/curl.git
cd curl
git checkout curl-7_58_0
autoreconf -i
sudo mkdir /opt/curl
./configure --prefix=/opt/curl
make
sudo make install
ln -s /opt/curl/bin/curl* /usr/local/bin/
}}}

Of course, that doesn't really fix anything, but it gets a compatible version of curl on to this system.

John McLane (z3r0cool) wrote :

Seriously is there anyone working on this bug?? Please help us by solving this bug. This is driving crazy to lots of people

cljk (marcel-pokrandt) wrote :

I´m having a problem with this issue too. I´m using a DEV-System on Ubuntu 18.04 with multiple installed PHP-versions (by ondrej) connected to Apache2 with FPM-modules. I cannot install "php-curl (7.1)" (by ondrej) because it depends on "libcurl4" ... and installing libcurl4 would result in deinstalling apache2 (and several other packages) which is dependent on libcurl3.

So my problem is not on pure Ubuntu - but I personally would need both lib versions at same time.

Duane Ellis (duanesd) wrote :

for an Explanation of the problem, and a work around see:

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

the problem started with libcurl3 having an incorrect symlink named: 'libcurl.so.4'

heytimc (heytimc) wrote :

 Thanks for the solution :)
Tim

    On Friday, 19 October 2018, 02:06:26 GMT+1, Duane Ellis <email address hidden> wrote:

 for an Explanation of the problem, and a work around see:

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

the problem started with libcurl3 having an incorrect symlink named:
'libcurl.so.4'

** Bug watch added: github.com/GitTools/GitVersion/issues #1508
  https://github.com/GitTools/GitVersion/issues/1508

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1754294

Title:
  After last updated libcurl3 on libcurl4, some apps are removed.

Status in curl package in Ubuntu:
  Confirmed

Bug description:
  Hi!

  After last updated libcurl3 on libcurl4, system (Kubuntu 18.04 bionic) deleted such applications as:
  virtualbox-5.2
  opera-stable
  slack-desktop
  mongodb

  I really need these applications, I installed them with broken
  dependencies, but they are deleted after each update. Is it possible
  to make the dependence of the libcurl3 in libcurl4, and not remove it
  altogether from system?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294/+subscriptions

John A Ramirez (mrcantaloupe) wrote :

I recently encountered this problem in 18.04 trying to play a game I recently purchased, Prime Mover. Upon startup it immediately aborts with the error

./PrimeMover: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./PrimeMover)

I realize it's not as vital as document databases or web browsers or version controllers, but I'm a bit shocked that the problem is this widespread.

Is there any news on this? Who maintains libcurl? This problem was reported eight months ago, and still no one is assigned to it?

David Dombrowsky (davek) wrote :

So basically the state of this bug is we still need 2 systems:
* 1 with libcurl3 and everything that depends on it, like virtualbox and slack
* another with libcurl4 and everything that depends on it, like kicad

Is there no work-around?

Petr Sedlacek (petr-sedlacek) wrote :

@davek I'm not saying this bug isn't bad but virtualbox-5.2 and slack-desktop have been fixed a long time ago. virtualbox-5.2 depends on libcurl4 and slack-desktop even better on "libcurl3 | libcurl4".

David Dombrowsky (davek) wrote :

AH HA!

@petr-sedlacek I thought the problem was: the oracle provided version of virtualbox depends on libcurl3, and the canonical provided version is 5.0 doesn't have 64-bit support (or at least, it doesn't work yet).

Whelll....

Turns out I was downloading the wrong version from Oracle. There is a "xenial" version of 5.2_5.2.22-126460, and a "bionic" version. That's right, two different versions of the same version. EXCELLENT! Install the copy of virtualbox for bionic and all is right with the world.

I apologize for my annoyance :)

Dave Chiluk (chiluk) on 2018-12-04
tags: added: indeed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.