Jump to page: 1 2
Thread overview
[Issue 18649] curl on Ubuntu 18.04 depends on libcurl4, .deb installer depends on libcurl3
Mar 24, 2018
Seb
Mar 24, 2018
Seb
Mar 24, 2018
Seb
Mar 26, 2018
Alex Whitman
Mar 26, 2018
greenify
Mar 30, 2018
Seb
Mar 31, 2018
Martin Nowak
Apr 04, 2018
Alex Whitman
Jan 25, 2019
Pavlo Ivanchyshyn
Apr 12, 2020
Miles Lane
Dec 17, 2022
Iain Buclaw
March 24, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

Seb <greensunny12@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |greensunny12@gmail.com

--- Comment #1 from Seb <greensunny12@gmail.com> ---
I was shocked a bit about this because I thought libcurl4 doesn't exist in Ubuntu and is currently only available in experimental in Debian:

https://packages.debian.org/experimental/libcurl4 https://packages.ubuntu.com/search?keywords=libcurl&searchon=names&suite=artful&section=all

The binary library is called libcurl3 (the API/development packages is
libcurl4-dev)

https://askubuntu.com/questions/469360/what-is-the-difference-between-libcurl3-and-libcurl4

However, I tried this myself in Docker and I can reproduce this:

---
root@84fd31deb36c:/# apt-get 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:
 dmd : Depends: libc6-dev but it is not going to be installed
       Depends: gcc but it is not going to be installed
 libcurl3 : Depends: libssl1.0.0 (>= 1.0.2~beta3) but it is not going to be
installed
            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@84fd31deb36c:/# apt-get install libcurl4
Reading package lists... Done
Building dependency tree
Reading state information... Done
libcurl4 is already the newest version (7.58.0-2ubuntu3).
libcurl4 set to manually installed.
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 dmd : Depends: libc6-dev but it is not going to be installed
       Depends: gcc but it is not going to be installed
       Depends: libcurl3 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or
specify a solution).
---

At least it seems like dmd isn't the only application: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294


BTW the file that creates the DEB ball is here:

https://github.com/dlang/installer/blob/master/linux/dmd_deb.sh#L347

I'm not sure what's the best fix for this as libcurl4 doesn't exist in Debian (and the DEB ball is supposed to be general-purpose).

--
March 24, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #2 from Seb <greensunny12@gmail.com> ---
Background info on the rename:

https://launchpad.net/ubuntu/+source/curl/7.58.0-2ubuntu2

 Rename libcurl3 to libcurl4, because libcurl exposes an SSL_CTX via
    CURLOPT_SSL_CTX_FUNCTION, and this object changes incompatibly between
    openssl 1.0 and openssl 1.1.

--
March 24, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #3 from Seb <greensunny12@gmail.com> ---
BTW @Alex: as another an alternative until this is resolved, you might want to try the install script:

https://dlang.org/install.html

--
March 26, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #4 from Alex Whitman <alex.whitman@durham.ac.uk> ---
My 18.04 install was done just before curl was moved to libcurl4 so for now I'm holding back the upgrade of those packages, meaning I was able to install the 2.079.0 deb.

The solution might be as simple as changing the dependency to libcurl3 OR libcurl4 but I don't know the internals at all to know if that would work.

--
March 26, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

greenify <greeenify@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |greeenify@gmail.com

--- Comment #5 from greenify <greeenify@gmail.com> ---
The "official" deb ball is supposed to run on Debian too, so probably the only
solution for a universal deb ball would be to drop the dependency on libcurl.
It's only used for std.net.curl and dynamically loaded when needed.
The d-apt registry should be able to set the dependency correctly though.

--
March 30, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #6 from Seb <greensunny12@gmail.com> ---
An attempt at fixing it by simply making libcurl optional (it's only needed for std.net.curl) https://github.com/dlang/installer/pull/314

--
March 31, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu

--- Comment #7 from Martin Nowak <code@dawg.eu> ---
- The libcurl dependency should be demoted to recommended (installed by default) or suggested, atm. it's still a dependency.

- It's confusing to see libcurl3 as dependency and libcurl4-openssl-dev as
suggestion.

https://github.com/dlang/installer/blob/47830a15d1a576b683c92b4bb4adc4a1d83a2b5d/linux/dmd_deb.sh#L347-L348
  Has anyone ever succeeded to install that with `-o
APT::Install-Suggests="true"` or `--install-suggests`?

- It's a pity that debian doesn't have a meta-package for libcurl, but I'd research how other packages resolved this issue (libcurl-ocaml depends on libcurl3-gnutls while libcurl-ocaml-dev depends on libcurl4-gnutls-dev).

- Use an alternative package name `libcurl4 | libcurl3` to support installations without libcurl4 availability. Assuming that all OSes with libcurl4 switch to that by default, otherwise you'd be back to the conflict.

So how about:
DEPENDS='libc6, libc6-dev, gcc, libgcc1, libstdc++6'
RECOMMENDS='libcurl4 | libcurl3'
SUGGESTS='libcurl4-openssl-dev, gcc-multilib'

--
April 04, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #8 from Alex Whitman <alex.whitman@durham.ac.uk> ---
I've given Martin's suggestion of using Recommends a go and it appears to work.
 The steps I took were:

- Purge existing dmd installation
- Upgrade curl, bringing in libcurl4, removing libcurl3
- Unpacked dmd_2.079.0-0_amd64.deb
- Edited the control file with the changes to the Depends section and added the
Recommends section.
- Repacked the .deb
- Installed the .deb

The installation worked but I don't have anything that uses std.net.curl to test.

--
April 17, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

--- Comment #9 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/dlang/installer

https://github.com/dlang/installer/commit/4790451e11f3891cf74efa54b9e1b2e29fd4eaa9 fix Issue 18649 - curl on Ubuntu 18.04 depends on libcurl4, ...

... .deb installer depends on libcurl3

- depend on libcurl4 | libcurl3 alternative
- degrading libcurl from dependency to recommends would be welcome,
  but does not work because recommendations are not installed for raw
  .deb packages (--fix-broken only installs dependencies).
  `dpkg -i dmd_2.079.1-0_amd64.deb && apt-get --fix-broken install`
- also add suggested libcurl-dev alternative

https://github.com/dlang/installer/commit/8233177ccc37c4ca5e6a8cfdc39b0a06ece5b2d7 Merge pull request #318 from MartinNowak/test_pkg_install

fix Issue 18649 - curl on Ubuntu 18.04 depends on libcurl4, ...

--
April 17, 2018
https://issues.dlang.org/show_bug.cgi?id=18649

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--
« First   ‹ Prev
1 2