如何避免 aptitude 修复损坏的软件包?

如何避免 aptitude 修复损坏的软件包?

我正在使用运行我的服务器的一个应用程序所需的 ruby​​gems 版本,该版本以这种方式安装:

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

每次使用时,aptitude 都会回滚到旧版本的 ruby​​gems(存储在存储库中)。

我怎样才能告诉 aptitude 忽略这个问题?

由于我正在使用服务器(Ubutun 10.04),所以我想要一个命令行解决方案,所以这不是重复的:告诉 aptitude 忽略损坏的包

答案1

只需安装 apt 之外所需的 gems 版本即可。这实际上是更好的也是,因为它将位于/usr/local/bin(您安装的东西)中,而不是/usr/bin应该位于发行版中(您从中下载的存储库中构建的东西)。在这种情况下,发行版显然试图拒绝您的 gem 版本。

此外,与你的 Ruby Gems 版本一起安装的内容可能位于包含路径/usr/local/share而不是。/usr/lib这意味着当你使用 安装东西时,/usr/local/bin/gem它会进入一个特殊的地方,不会干扰正在/usr/bin/gem安装的东西。

答案2

我使用 保存包裹aptitude hold <package>。我不确定它是否也能防止回滚,但值得一试。

你也可以使用 dpkg: echo “<package> hold” | dpkg --set-selections

参考

答案3

如果我是你,我会重新编译(修改)该包,这样它就不会破坏依赖关系。

因为我认为没有一种可接受的方式来告诉 dpkg/apt 对未满足/损坏的依赖关系感到满意......因为这基本上就是它们被创建的原因。

答案4

您可以使用equivs创建提供缺失包的虚拟包。

当然,只有安装的软件包之间没有冲突,这才有效。

相关内容