我不确定是什么原因导致这种情况发生,但它发生在 Ubuntu 尝试安装内核更新之后。我无法再使用最新内核启动。我使用以前的内核启动,清除了一些空间(更新失败的原因)然后我可以再次启动。但是,现在我得到的是一个损坏的软件包。
同时,我尝试安装 Emulation Station。安装过程中出现一些错误,提示我清理空间,从而导致上述问题。
最后,我剩下一个损坏的软件包,它阻碍了我安装任何新软件。根据 synaptic 的说法,libsdl2-dev 已损坏,似乎无法修复它。我尝试通过 synaptic 重新安装,但没有成功。以下错误是由于让它尝试修复而导致的:
(Reading database ... 385577 files and directories currently installed.)
Preparing to unpack .../libsdl2-2.0-0_2.0.2+dfsg1-3ubuntu1.1_amd64.deb ...
Unpacking libsdl2-2.0-0:amd64 (2.0.2+dfsg1-3ubuntu1.1) ...
dpkg: error processing archive /var/cache/apt/archives/libsdl2-2.0-0_2.0.2+dfsg1-3ubuntu1.1_amd64.deb (--unpack):
trying to overwrite '/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0', which is also in package libsdl2:amd64 2.0.3+z4~20140315-8621-1ppa1precise1
Errors were encountered while processing:
/var/cache/apt/archives/libsdl2-2.0-0_2.0.2+dfsg1-3ubuntu1.1_amd64.deb
Error in function:
dpkg: dependency problems prevent configuration of libsdl2-dev:
libsdl2-dev depends on libsdl2-2.0-0 (= 2.0.2+dfsg1-3ubuntu1.1); however:
Package libsdl2-2.0-0:amd64 is not installed.
dpkg: error processing package libsdl2-dev (--configure):
dependency problems - leaving unconfigured
我搜索过 Google,没有找到关于此特定依赖项/包的帖子。
答案1
眼前的问题在您的错误消息中用通俗易懂的语言写成:
dpkg: error processing archive /var/cache/apt/archives/libsdl2-2.0-0_2.0.2+dfsg1-3ubuntu1.1_amd64.deb (--unpack): trying to overwrite '/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0', which is also in package libsdl2:amd64 2.0.3+z4~20140315-8621-1ppa1precise1
好吧,其实可以更简单。我们再说一遍,不用那些复杂的文件名:
dpkg: error processing NEW_PACKAGE: trying to overwrite FILE, which is also in OLD_PACKAGE
系统中的每个文件一次只能由一个(且只能由一个)软件包提供。当多个软件包尝试提供同一个文件时,这些软件包冲突。
换句话说,NEW_PACKAGE 和 OLD_PACKAGE 发生冲突。它们都试图提供相同的 FILE。
更深层次的问题是您正在添加提供冲突包的 PPA 和其他非 Ubuntu 源。
例如:您的旧 libsdl2 是libsdl2:amd64 2.0.3+z4~20140315-8621-1ppa1precise1
。
这是 14.04 系统上的 12.04 包(糟糕!)
它是一个提供关键系统服务的 PPA 包(糟糕!)
- PPA 包使用了奇怪的、非标准的版本控制,与 Ubuntu 和 Debian 都不太匹配(糟糕!)
出现上述情况之一,您的系统就很容易崩溃,需要完全重新安装。
避免此问题的最简单方法是尽量减少使用 PPA,并坚持使用经过测试的、兼容的 Ubuntu 存储库。
怎么修您当前面临的问题:
- 在你的 apt 源中找到该 PPA。删除它。它不再是你的朋友了。
- 卸载全部该 PPA 提供的软件包。
- 由于您更改了源,请刷新您的包数据库(
sudo apt-get update
) - 重新安装已删除的软件,这次从 Ubuntu 存储库安装(
sudo apt-get install <whatever>
)