What is the difference between libcurl3 and libcurl4

I was setting up an Ubuntu 14.04 development environment and went to install libcurl but noticed that there are two different version in my aptitude caches. What are the main differences between the versions and which do people recommend for Django projects?

I'm assuming libcurl4 is newer, and possibly better, but I'm worried that it may break compatibility with other products, act strange with snake oil certs or cause me headaches in the future.

Are there any big gotchas that I should be aware of with libcurl4? Thanks.


Solution 1:

If you look closely you will see, that actually only the -dbg, -dev and -doc packages contain a version 4 in their package name, while the packages that ship the actual compiled libcurl library are still at version 3.

For a discussion on Debian about this, see this link: https://lists.debian.org/debian-release/2007/04/msg00257.html

If I understand it right, there was a change in the API but not the ABI, so the binary packages were left at version 3, while the development files needed a version bump.

It also means that for example libcurl4-openssl-dev is the corresponding development package for libcurl3 despite the different version in the package name. You can see that if you take a look at libcurl3-dev (which is a virtual package and points to libcurl4-openssl-dev:

No current or candidate version found for libcurl3-dev
Package: libcurl3-dev
State: not a real package
Provided by: libcurl4-openssl-dev (7.47.0-1ubuntu2), 
    libcurl4-openssl-dev (7.47.0-1ubuntu2.2)

The above snippet was taken on Ubuntu 16.04 but this will probably look similar on 14.04.

Solution 2:

You can read the changelog of the related packages yourself, via:

for i in $(dpkg -l libcurl\* | grep libcurl  | awk '{print $2}'); do
  apt-get changelog $i >$i.changelog
done

Then read the *.changelog files.