dpkg 错误:“试图覆盖文件,该文件也在……”

mis*_*tor 146 apt dpkg software-installation

例如:

$ 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).
Run Code Online (Sandbox Code Playgroud)

当我尝试安装 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.
Run Code Online (Sandbox Code Playgroud)

dan*_*jjl 123

要解决您的问题,请运行

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjline-java_1.0-1_all.deb
Run Code Online (Sandbox Code Playgroud)

通过运行检查一切是否已修复: sudo apt-get -f install

如果你还有问题重新运行任何的第一步dpkg: error processing (...)剩余

webupd8 上找到的解决方案

  • 天哪,不,这是一个破坏系统的秘诀...... (13认同)
  • 这将有效地安装包,但当两个包尝试使用相同的库/文件/二进制文件时问题仍然存在。 (10认同)

Avi*_*Raj 107

请不要直接去找danjjl 的回答,如果你遇到这种“试图覆盖”的错误,很可能是你有冲突的包需要先解决。

该问题的直接解决方法是删除不受欢迎的冲突包,在这种情况下scala

sudo dpkg -P scala
Run Code Online (Sandbox Code Playgroud)

接下来,建议向相应的包维护者提交错误报告。这通常意味着Conflict: package在控制文件中添加一行。

另请参阅答案以获取有关此错误的更详细说明。

  • 不太确定这个建议。我认为这取决于情况。在您之前发布的链接中,同一软件的两个版本存在冲突。我同意应该先删除旧软件。但是,如果两个不同程序的打包方式存在问题,并且被覆盖的文件相同或无害,那么我认为建议没有问题。不,不理想......但如果替代方案是等到问题得到修复,那么要求某人不要寻求特定答案可能有点极端...... (4认同)
  • 仅供参考 *这个* 解决方案对我有用。在我的案例中,有问题的包是`libc6-dev-i386` (2认同)

Dav*_*Xia 58

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

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
Run Code Online (Sandbox Code Playgroud)

  • 很棒的小费。但要小心:如果文件不同,覆盖内容可能会导致严重的问题。您的冲突包之一将不再正常运行。 (4认同)
  • `sudo apt-get -o Dpkg::Options::="--force-overwrite" install -f` 为我解决了类似的问题 (3认同)