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

我尝试使用类型安全堆栈安装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) 

这是我尝试自动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. 

我使用这个命令解决了我的问题:

 sudo dpkg -i --force-overwrite path-to-the-deb-file 
  • 如果--force-overwrite不起作用,请尝试:

     sudo dpkg -i --force-overwrite-all path-to-the-deb-file 

在你的情况下:

 sudo dpkg -i --force-overwrite /var/cache/apt/archives/scala_2.9.2-400_all.deb 

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

 sudo apt-get autoremove sudo apt-get install -f 

您的autoremove命令未成功,因为您没有以root身份运行它(使用sudo )。

在我的情况下,这工作:

 sudo dpkg -P package_name 

(不是deb名称)

以下命令有效。

 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 

如果仍然得到相同的错误然后尝试

 sudo dpkg --remove --force-remove-reinstreq package_name 

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

以下对我有用(虽然我在x86上):

 $ sudo vim /var/lib/apt/lists/apt.typesafe.com_dists_unicorn_main_binary-i386_Packages 

更改行读数

 Filename: pool/main/s/scala/scala_ 2.9.2-400_all.deb 

至:

 Filename: pool/main/s/scala/scala_%20%20%20%20%202.9.2-400_all.deb 

其次是:

 sudo apt-get remove scala-library sudo apt-get remove scala sudo apt-get install scala 

打开突触的简便方法。 它会告诉你,找到了破损的包裹,所以你必须找到破损的包裹,然后删除,然后你就可以做任何你喜欢的事情。

在我的情况下,由于尝试sudo apt-get install -f时出现以下错误,我无法更新系统:

 update-alternatives: error: /var/lib/dpkg/alternatives/package_name broken: invalid status 

解决方法是从/var/lib/dpkg/alternatives删除该文件并重复上述命令。 我运行了几次,直到修复了所有无效的软件包。

在我的情况下,它阻止我正确配置Java。

我有一次这个问题,对于一些反应我认为这是一个Skype包

实际上我记得我曾经两次,有一次当skype软件包只在这种情况下被打破如果它只有几个1.open软件更新程序,并等待它加载2.点击设置3.点击其他软件选项卡这些都是你的包,查看你的控制台输出,使用最后几行找到它是什么包并将其删除,或逐个执行,直到你不再收到错误

如果它像我曾经一样,所有包都无法像上面那样正确地收回,但是点击Ubuntu Software选项卡

仅检查第一个和第三个框从下拉列表中选择主服务器,单击关闭sudo apt-get update