When performing sudo apt upgrade I get the following error message:

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:
 libcurl4 : Conflicts: libcurl3 but 7.60.0-1 is to be installed
E: Broken packages

I understand this to mean:

  • You have previously installed package X, which relies on libcurl4 (so libcurl4 is already installed).
  • Your upgrade includes a package Y with a new dependency on libcurl3 (version 7.60.0-1).
  • libcurl3 cannot be installed because it conflicts with libcurl4.

I used GNOME Packages to look at the lists of packages that require libcurl3 and libcurl4, but the lists are very long and can't be narrowed down (specifically, they don't indicate which packages are already installed or which are about to be installed).

I tried apt debugging but it doesn't seem to add any information:

$ sudo apt -o Debug::pkgProblemResolver=yes upgrade                                                                                                           
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Entering ResolveByKeep 10%
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Keeping package libcurl4:amd64
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Package libcurl4:amd64 libcurl4:amd64 Conflicts on libcurl3:amd64 < none -> 7.60.0-1 @un uN >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Calculating upgrade... Done
<repeats previous error message>

How can I identify package X (the existing package) and package Y (the new package, or an existing package with a new dependency)?

  • 1
    I think you mixed different repositories. – Ipor Sircer Jul 30 '18 at 12:14
  • @IporSircer I do have multiple repos (that should be non-conflicting), but how can I identify the packages causing the conflict? – david.libremone Jul 30 '18 at 12:15

To identify packages causing conflicts (or other issues) during a package upgrade, I find the most helpful approach is to enable the resolver’s debugging mode:

apt -o Debug::pkgProblemResolver=yes upgrade

This will show you all the problems the resolver runs into, along with the packages which caused it to consider the problematic dependencies.

  • this looks promising, but my results (see updated question) don't mention any new packages -- is this a peculiarity of my situation? – david.libremone Jul 30 '18 at 14:50
  • No, upgrades typically don’t install new packages, unless they’re pulled in as new dependencies (and you’re using apt or aptitude rather than apt-get). I imagine you’re running testing or unstable and got caught partway through the libcurl3 to libcurl4 transition. – Stephen Kitt Jul 30 '18 at 20:57

Another take to add to @StephenKitt excelent answer is installing and using aptitude.

aptitude is usually a bit smarter managing packages and specially helping and suggesting alternatives when there are conflicts.

The usage is also very similar to apt as in using, aptitude install, aptitude update and aptitude upgrade. If you call aptitude without arguments, it will invoke a text menu interface.

From man aptitude

aptitude - high-level interface to the package manager

aptitude is a text-based interface to the Debian GNU/Linux package system.

It allows the user to view the list of packages and to perform package management tasks such as installing, upgrading, and removing packages. Actions may be performed from a visual interface or from the command-line.

For more details see aptitude - Command-line reference

  • 1
    aptitude upgrade gets most packages installed as you suggested, it reports "1 will not be upgraded" but doesn't say which one? – david.libremone Jul 30 '18 at 14:54
  • Odd, it shoud say it....do you have the output? – Rui F Ribeiro Jul 30 '18 at 18:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.