200

For example:

$ sudo apt-get install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
bsh : Depends: libjline-java but it is not going to be installed
groovy : Depends: libjline-java but it is not going to be installed
rhino : Depends: libjline-java but it is not going to be installed
E: Unmet dependencies. 

Try 'apt-get -f install' with no packages (or specify a solution).

I get the same or similar errors when I attempt to install clojure1.3, leiningen, and several other packages.

When I try the suggestion made in the error message, this is what happens:

$ sudo apt-get -f install 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  diffstat linux-headers-3.2.0-26-generic linux-headers-3.2.0-26 dh-apparmor dkms html2text libmail-sendmail-perl libsys-hostname-long-perl
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libjline-java
Suggested packages:
  libjline-java-doc
The following NEW packages will be installed:
  libjline-java
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
23 not fully installed or removed.
Need to get 0 B/72.0 kB of archives.
After this operation, 129 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
(Reading database ... 226243 files and directories currently installed.)
Unpacking libjline-java (from .../libjline-java_1.0-1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
 trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
 /var/cache/apt/archives/libjline-java_1.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 bsh : Depends: libjline-java but it is not installed
 groovy : Depends: libjline-java but it is not installed
 rhino : Depends: libjline-java but it is not installed
E: Unmet dependencies. Try using -f.
4
  • Also looks live you need to install java, search for it in software center
    – Mark Kirby
    Aug 15, 2012 at 12:46
  • 3
    Probably a duplicate of this Q&A or at least the solution should help
    – danjjl
    Aug 15, 2012 at 12:51
  • @markkirby, I have run sudo apt-get update if that is what you are asking. Aug 15, 2012 at 16:59
  • The solution by @Lety here is the most appropriate and least invasive approach, if you are working on your own installers - askubuntu.com/questions/491401/…
    – zookastos
    May 24, 2023 at 4:09

6 Answers 6

177

Warning: This answer is dangerous and may lead to a broken system (because this will effectively install the package but new problems may arise when both the packages try to use the same library/file/binary). Use Avinash Raj's answer instead. Also consider reporting a bug for both conflicting packages.


You have to force overwrite the files causing issues:

sudo dpkg -i --force-overwrite <file-path>

In your case it would be:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjline-java_1.0-1_all.deb

Check that everything is fixed by running:

sudo apt-get --fix-broken install

If you still have problems, rerun the first step with any of the dpkg: error processing (...) remaining.

Solution found on webupd8

11
  • 11
    This will effectively install the package but the problem remains when both package tries to use the same library/file/binary.
    – Braiam
    May 11, 2014 at 23:11
  • 21
    Goodness, no, that's a recipe for a broken system...
    – fkraiem
    Jul 14, 2016 at 1:41
  • "force-overwrite" probably should at least have some kind of warning/disclaimer Nov 14, 2019 at 21:31
  • awesome, this should be the accepted answer.
    – Wizard
    Nov 29, 2020 at 8:27
  • Could you provide more information of --force-overwrite? Doesn't seems to be present on current dpkg Nov 6, 2021 at 19:26
165

Please don't go for the danjjl answer directly, if you face this kind of "trying to overwrite" error, is likely that you have conflicting packages that need to be solved first.

The immediate fix for the issue is to remove the conflicting package that is undesirable, in this case scala,

sudo dpkg -P scala

Next it would be recommended to submit a bug report with the respective package maintainers. This normally imply adding a Conflict: package line in the control file.

Also see this answer for more detailed explanation about this error.

18
  • 7
    Not so sure about this advice. I think it depends on the situation. In the link to your earlier posting, there is a conflict from two versions of the same software. I agree there that one should remove the older software first. However, if there is a problem with how two different programs were packaged and the file that is being overwritten is identical or otherwise harmless, then I don't see a problem with the advice. No, not ideal...but it's probably a bit extreme to ask someone to not go for the a particular answer if the alternative is to wait until the problem is bug fixed...
    – Ray
    Dec 2, 2015 at 13:11
  • @Ray in that case a bug report may be in order... but I doubt software from Ubuntu repositories has that problem, since they pull from Debian and Debian tests for these kind of problems exhaustively.
    – Braiam
    Jul 14, 2016 at 1:35
  • 1
    @Braiam It's been a long time since I used Debian. Perhaps it's better now, but I saw similar problems with Debian. It isn't because of lack of exhaustive testing, but sometimes it is hard to test every possible scenario. No matter how much testing is performed, something can slip through. I'm not against writing a bug report, but "easier said that done". After all, it may be hard to summarize all of the conflicting packages. And, if bugs are not "hot" (i.e., they don't affect a lot of people), you'll just end up waiting.
    – Ray
    Jul 14, 2016 at 1:48
  • 1
    Perhaps it would be better if the original answer was modified so that it said, "Please don't do because of (some reason)." So that someone can choose to ignore it once they know the pros and cons. As it stand, the answer above just says don't do it.
    – Ray
    Jul 14, 2016 at 1:52
  • 2
    FYI This solution worked for me. Offending package in my case was libc6-dev-i386 Jan 29, 2018 at 16:51
88

@danjjl's command works for .deb files. I found this command works with apt/apt-get:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
4
  • 5
    Great tipp. Be careful though: Overwriting things can cause serious trouble if the files are different. One of your conflicting packages will no longer function properly.
    – Potaito
    Jan 24, 2017 at 9:34
  • 8
    sudo apt-get -o Dpkg::Options::="--force-overwrite" install -f worked for me for a similar issue Jul 23, 2018 at 1:28
  • @Cat: More like "great hack" then. ;-] Aug 17, 2018 at 12:41
  • Adding -o Dpkg::Options::="--force-overwrite" to my apt command fixed my problem! Thanks Jun 27, 2020 at 15:15
3

Not sure that is a global fix as I had the same issue, but with a libglx-mesa file in the cache conflicting with Nvidia-390. I removed the file and issued an apt install -f -y, let that finished and then proceeded with the apt update, upgrade and autoremove in that sequence.

I got the error while executing an apt dist-upgrade on Ubuntu 18.04 and continued the process again, no more issues and that seemed to be "my" fix.

Commands:

sudo su -
mv /var/cache/apt/archives/libglx-mesa0_18.0.0~rc5-1ubuntu1_amd64.deb ~
apt install -f -y
apt update -y
apt upgrade -y
apt autoremove -y
apt dist-upgrade

PS: Forcing an overwrite was a bad idea that I tried and I got lucky. But it's better to find the root cause, and fix it. I still have to investigate but the error lead me to move the file out the way.

3

So dpkg --force-overwrite is the hacky workaround that has been presented here in various forms. But dpkg-divert(8) is the intended way to handle this situation.

3

For Debian, Ubuntu, etc., let aptitude handle it for you`:

sudo apt update
sudo apt install aptitude

sudo aptitude install my_package_name
# Then choose the necessary options. Ex: for me I choose No, Yes, Yes,
# to choose to downgrade the troublesome package. Then it installs and
# works!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .