我正在使用运行我的服务器的一个应用程序所需的 rubygems 版本,该版本以这种方式安装:
dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb
每次使用时,aptitude 都会回滚到旧版本的 rubygems(存储在存储库中)。
我怎样才能告诉 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
创建提供缺失包的虚拟包。
当然,只有安装的软件包之间没有冲突,这才有效。