告诉有能力忽略损坏的包装


9

我使用以下方法在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忽略损坏的程序包并继续进行。


目前,我刚刚将其卸载。每当我再次需要它时,我都将重新安装,它并不需要花费太长时间,直到它使我烦恼到足以再次尝试编译它为止。

如果您需要较新版本中的某些内容,并且需要较新的库,则通常可以随便拉它们或下载源包并在系统上重建它。但是,我遇到过尝试使用第三方程序包的情况,因此需要黑客。
Jan Hudec

Answers:


7

如果通过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

1
您最好使用dpkg-deb而不是arar是dpkg实施细节,将来可能会更改。
jmtd

谢谢,此解决方案对我有用,但是当我进行apt-get升级时,我收到消息“以下软件包已保留:numptyphysics:i386”(apt-get dist-upgrade什么也没说)。这是正常消息吗,我们不能摆脱它吗?
baptx 2015年

7

Ubuntuforums有一个被黑的解决方案。〜quack的解决方案更好,但是工作更多。

我在Google上找不到任何相关内容,保存了自己的“虚拟程序包”(除非卸载幸运的程序包,否则除非卸载损坏的程序包是不可能的),但是搜索自己的硬盘驱动器给了我最终的答案!

对于任何想知道的人,这里都是如何在synaptic / aptitude / apt-get中“解开”软件包,而无需卸载它。

首先,记下您所安装的软件包,以及它所依赖的软件包会导致其损坏。说我强制安装了一个苹果,这取决于存储库中没有的已淘汰软件包:

在终端中键入代码:

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:行中删除过时的文件,保存文件,然后完成。希望这可以帮助一些人。


ick 很好的发现,但我不喜欢对软件包管理器撒谎(本质上就是骇客所做的事情)。最好是根本不使用APT,而不是随意破坏APT。这就是为什么编译自己的程序包是一件好事的原因-没有坏的依赖关系,也没有对程序包管理者撒谎。
quack quixote 2010年

我对程序包管理器撒谎没有任何问题,尤其是因为几个月后我将重新安装操作系统,但是找不到线程中引用的文件。

奇怪的。它应该在那里。尝试执行“ cd / var / lib / dpkg”,然后执行“ sudo nano status”。
伊恩

1
链接不再有效。这就是为什么仅链接的答案在这里不被接受的确切原因。如果您在这里说明,那将是正确的答案。
Jan Hudec

不知道这是否是永久性的,但到目前为止,对于安装对Java不再可用版本具有严格依赖性的软件包而言,这似乎是一个不错的解决方案。
krispy

2

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

作为更永久的修复,您应该获取已安装的Lucid Amsynth软件包的源软件包,以及libatk1libjack0的源软件包,并构建自己的更新软件包。根据使用这些库的其他方式,您可能还需要更新其他软件包,但是您可能只需要摆脱这些软件包。(这实际上是那些软件包从Lucid反向移植到Karmic -您应该检查Karmic-backports存储库或PPA,以查看是否有人已经这样做了。如果您的新软件包有效,请考虑将其发送到Karmic-backports供其他人使用。 )


谢谢,我尝试了您的第一个建议,但似乎没有什么不同。更新只会中止。在尝试安装Lucid软件包之前,我还尝试过对其进行编译,但运气不佳。我将来可能会再试一次。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.