告诉 aptitude 忽略损坏的包

告诉 aptitude 忽略损坏的包

我在 Karmic 中安装了 Lucid 的 Amsynth,使用方法如下:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

安装 Lucid 版本的原因是因为 Karmic 版本已经 3 年了,在我的计算机上崩溃了。Lucid Amsynth 软件包依赖于比 Karmic 更新的 libatk1 和 libjack0 版本,但我想我会冒险一试,结果发现 Amsynth 运行良好。

但是每次我升级时,aptitude 都会尝试卸载 Amsynth。我想我已经设法将其搁置,但现在 aptitude 中止了。我该如何告诉 aptitude 忽略损坏的软件包并继续。

答案1

有一个被破解的解决方案Ubuntu论坛。〜quack 的解决方案更好,但是工作量更大。

我在谷歌上找不到任何关于此问题的信息,只能编译你自己的“虚拟包”(如果不卸载损坏的包就不可能,除非你足够幸运已经拥有这些工具),但搜索我自己的硬盘最终给了我答案!

对于那些想要了解的人来说,这里介绍了如何在 synaptic / aptitude / apt-get 中“取消破坏”软件包,而无需卸载它。

首先,记下您安装的软件包,以及它所依赖的导致其状态为损坏的软件包。假设我强制安装了 apples,它依赖于存储库中没有的 obsolete 软件包:

在终端输入代码:

sudo gedit /var/lib/dpkg/status

在文件中搜索苹果,直到找到类似以下内容的内容:

代码:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

从 Depends: 行中删除 obsolete,保存文件,就大功告成了。希望这对某些人有所帮助。

答案2

如果您通过 deb 文件和 dpkg 安装程序,您还可以手动更改已安装 .deb 文件的依赖项。我曾经被迫采取过这种极端措施……

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

dpkg 不再了解 foo 的依赖项。在 vim 中,您必须选择 ./control(我使用 vim 读取打包文件 - 如果您愿意,可以解压并使用其他编辑器重新打包)并从行中删除不需要的依赖项

Depends: foo bar

答案3

在 aptitude 的“首选项”部分(Ctrl-T 进入菜单;在“选项”下),取消选中“依赖处理”部分内容“安装或删除前自动修复损坏的软件包”. 这应该会使 aptitude 停止在您每次更改其他软件包时尝试修复该软件包。

作为更永久的修复,你应该获取 Lucid 的源包安美信您安装的软件包,以及libatk1libjack0,并构建您自己的更新包。根据使用这些库的其他内容,您可能还需要更新其他包,但您可能只需要更新这些包即可。(这本质上向后移植将这些软件包从 Lucid 迁移到 Karmic — 您应该检查 Karmic-backports 存储库或 PPA,看看是否有人已经这样做了。如果您的新软件包可以工作,请考虑将它们发送到 Karmic-backports 供其他人使用。)

相关内容