版本不匹配导致的损坏软件包

版本不匹配导致的损坏软件包

我一直在尝试修复一些依赖项以安装 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-2sudo 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 文件状态。

  1. 执行以下命令:

$ sudo nano /var/lib/dpkg/status

(您可以使用任何其他编辑器代替 nano(例如 gedit、vi 等...)

  1. 在打开的文件中搜索“Package: libapt-pkg”。
  2. 如果发现多个同名的片段,请将其全部剪掉,存储在文件中并保留适当的片段。
  3. 将文件保存在那里并继续执行常规的 apt 命令。
  4. 如果错误仍然存​​在,请将“Package: libapt-pkg”块与您复制的文件中的另一个块进行交换。

相关内容