例如:

$ 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).


尝试安装clojure1.3,leiningen和其他几个软件包时,出现相同或相似的错误。

当我尝试错误消息中的建议时,会发生以下情况:

$ 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.


评论

看上去也很生动,您需要安装Java,并在软件中心中进行搜索

可能是此问答的副本,或者至少是解决方案应该有所帮助

@markkirby,如果您要的是我,请运行sudo apt-get update。

#1 楼

请不要直接寻求danjjl的答案,如果您遇到此类“尝试覆盖”错误,则可能是您有冲突的软件包需要首先解决。

立即修复问题是删除不需要的有冲突的软件包,在这种情况下,建议与各自的软件包维护者一起提交错误报告。这通常意味着在控制文件中添加了scala行。

评论


不太确定此建议。我认为这取决于情况。在您以前的文章的链接中,同一软件的两个版本存在冲突。我同意在那里应该首先删除较旧的软件。但是,如果打包两个不同程序的方式存在问题,并且被覆盖的文件相同或无害,则我认为该建议没有问题。不,不是理想的...但是,如果替代方法是等到问题解决后再问某人不要寻求特定答案可能有点极端。

–雷
15年2月2日在13:11

在这种情况下,@ Ray可能会按顺序提交错误报告...但是我怀疑Ubuntu仓库中的软件是否存在此问题,因为它们已从Debian和Debian测试中全面抽出了此类问题。

–脑袋
16年7月14日在1:35

@Braiam自从我使用Debian已有很长时间了。也许现在更好了,但是我发现Debian也有类似的问题。这不是因为缺乏详尽的测试,而是有时很难测试所有可能的情况。无论执行多少测试,都会漏掉一些东西。我不反对编写错误报告,但“更轻松地说完成了”。毕竟,可能很难总结所有有冲突的软件包。而且,如果错误不是很“热”(即,它们不会影响很多人),您最终将不得不等待。

–雷
16年7月14日在1:48

如果将原始答案修改为“请不要因为某些原因而这样做”可能会更好。这样,一旦知道了利弊,就可以选择忽略它。就目前而言,上面的答案只是说不要这样做。

–雷
16年7月14日在1:52

仅供参考。此解决方案对我有用。在我看来,令人反感的软件包是libc6-dev-i386

– FractalSpace
18年1月29日在16:51

#2 楼

要解决您的问题,请运行

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


通过运行以下命令检查所有问题是否已解决:sudo apt-get -f install

如果仍有问题,请使用任何dpkg: error processing (...)重新运行第一步剩余的

在webupd8上找到的解决方案

评论


这将有效安装软件包,但是当两个软件包都尝试使用相同的库/文件/二进制文件时,问题仍然存在。

–脑袋
2014年5月11日23:11

天哪,这是导致系统损坏的秘诀...

–fkraiem
16年7月14日在1:41

“强制覆盖”可能至少应具有某种警告/免责声明

–减少活动
19年11月14日在21:31

太棒了,这应该是公认的答案。

–微积分
20/11/29在8:27

#3 楼

@danjjl的命令适用于.deb文件。我发现此命令适用于apt / apt-get

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>


评论


很棒的小费。但是请小心:如果文件不同,覆盖内容可能会造成严重的麻烦。您有冲突的软件包之一将无法正常运行。

– Potaito
17年1月24日在9:34

sudo apt-get -o Dpkg :: Options :: =“-force-overwrite” install -f为我解决了类似的问题

–user2205916
18年7月23日在1:28

@猫:然后更像是“伟大的黑客”。 ;-]

–大卫·福斯特(David Foerster)
18/08/17在12:41



在我的apt命令中添加-o Dpkg :: Options :: =“-force-overwrite”解决了我的问题!谢谢

–汤姆·古达(Thamme Gowda)
20年6月27日在15:15

#4 楼

不知道这是一个全局修复程序,因为我遇到了同样的问题,但是缓存中的libglx-mesa文件与Nvidia-390冲突。我删除了文件并发出apt install -f -y,让它结束,然后按该顺序继续进行apt updateupgradeautoremove

在Ubuntu 18.04上执行apt dist-upgrade时出现错误,并再次继续该过程,没有更多问题,这似乎是“我的”修复。 />
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:强制覆盖是我尝试过的一个坏主意,我很幸运。但是最好找到根本原因并加以解决。我仍然需要调查,但是错误导致我将文件移开。