当“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