当“apt-get install -f”不起作用时,如何修复损坏的软件包?

PhD*_*hDP 43 apt

我尝试使用类型安全堆栈安装Scala,但遇到了麻烦。现在我不能用 apt 做很多事情(更新除外),损坏的包似乎无法删除/清理:

这是结果apt-get -f install

$ 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:
  gstreamer0.10-fluendo-mp3:i386 scala-library liboil0.3:i386
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  scala
The following NEW packages will be installed:
  scala
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
Need to get 21.5 MB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://apt.typesafe.com/ unicorn/main scala all 2.9.2-400 [21.5 MB]
Fetched 21.5 MB in 13s (1,567 kB/s)                                                                          
(Reading database ... 329381 files and directories currently installed.)
Unpacking scala (from .../scala_2.9.2-400_all.deb) ...
dpkg: error processing /var/cache/apt/archives/scala_2.9.2-400_all.deb (--unpack):
 trying to overwrite '/usr/share/java/scala-partest.jar', which is also in package scala-library 2.9.1.dfsg-3
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/scala_2.9.2-400_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

这是我的尝试autoremove

$ apt-get autoremove
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
phdp@desktop:~/work/manuscripts/ideas/ibm_food_webs$ sudo apt-get autoremove
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:
 typesafe-stack : Depends: scala but it is not installed
E: Unmet dependencies. Try using -f.
Run Code Online (Sandbox Code Playgroud)

小智 44

我使用以下命令修复了我的问题:

sudo dpkg -i --force-overwrite path-to-the-deb-file
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/scala_2.9.2-400_all.deb
Run Code Online (Sandbox Code Playgroud)

  • 太感谢了!你让我今天很开心。这帮助我解决了“sudo apt --fix-broken install”失败的问题。 (2认同)

Eli*_*gan 12

似乎删除scala-library包然后重新配置可能会起作用。所以你在正确的轨道上。正确的命令是,按以下顺序:

sudo apt-get autoremove
sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

您的autoremove命令没有成功,因为您没有将它作为root(使用sudo)运行。

  • 不起作用... (2认同)

pre*_*mal 11

以下命令有效。

sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists/*
sudo rm /var/cache/apt/*.bin
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get update
sudo dpkg --configure -a
sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

如果仍然出现相同的错误,请尝试

sudo dpkg --remove --force-remove-reinstreq package_name 
Run Code Online (Sandbox Code Playgroud)

删除软件包后更新您的系统并重新启动一次。

  • 令人惊讶的是,任何人都可以想出精确的命令序列。 (2认同)

小智 7

在我的情况下,这有效:

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

(不是 deb 名称)


小智 5

打开突触的简单方法。它会告诉您发现了损坏的软件包,因此您必须找到损坏的软件包并将其删除,然后您就可以做任何您喜欢的事情。