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