我一直在尝试修复一些依赖项以安装 cinelerra,并愚蠢地为 Sid 安装 libvpx1:amd64,这导致软件包损坏。Synaptic 无法修复它。我试过了apt-get install -f
,它给了我以下信息:
ZHD ~ # apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... failed.
The following packages have unmet dependencies:
libvpx1 : Breaks: libvpx1:i386 (!= 1.3.0-2) but 1.2.0-2 is installed
libvpx1:i386 : Breaks: libvpx1 (!= 1.2.0-2) but 1.3.0-2 is installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
E: Unable to correct dependencies
我尝试删除 libvpx1:amd64,但系统提示无法删除,因为 libvpx1:i386 是不同的版本。我尝试反过来删除 libvpx1:i386,但系统提示无法删除,因为 libvpx1:amd64 是不同的版本。我无法降级或升级这两个软件包以尝试使它们成为同一版本。
如果有人有什么建议我会很高兴听到!
Aptitude 提供了一些解决方案,但涉及卸载我的一半软件......
答案1
您在不同的体系结构(amd64、i386)中安装了相同库的不匹配版本。这是不允许的。
要修复此问题,请运行sudo apt-get install -f libvpx1:i386=1.3.0-2
或sudo apt-get install -f libvpx1=1.2.0-2
。前一个命令会将 libvpx1:i386 提升至 Sid 中的版本,后一个命令会将 libvpx1:amd64 降低至 i386 版本(Wheezy?Jessie?)。
答案2
我在这个页面上找到了答案:
http://www.iasptk.com/ubuntu-fix-broken-package-best-solution
尝试后
sudo dpkg --configure -a
和
sudo apt-get install -f
损坏软件包的问题仍然存在,解决方案是手动编辑 dpkg 状态文件。
sudo nano /var/lib/dpkg/status
(您可以使用 vi 或 gedit 代替 nano)
找到损坏的包,删除有关它的整个信息块并保存文件。
然后我跑了sudo apt-get update && upgrade
并要求安装缺少的软件包。现在一切都运行良好,我已经学会不要那么大胆地安装其他版本的软件包……
答案3
发生这种情况的原因是,您可能安装了两个不同的 apt 版本,其中一个版本不兼容。因此,找出您系统的体系结构版本,然后使用以下步骤删除另一个软件包:您需要手动编辑 dpkg 文件状态。
- 执行以下命令:
$ sudo nano /var/lib/dpkg/status
(您可以使用任何其他编辑器代替 nano(例如 gedit、vi 等...)
- 在打开的文件中搜索“Package: libapt-pkg”。
- 如果发现多个同名的片段,请将其全部剪掉,存储在文件中并保留适当的片段。
- 将文件保存在那里并继续执行常规的 apt 命令。
- 如果错误仍然存在,请将“Package: libapt-pkg”块与您复制的文件中的另一个块进行交换。