使用体系结构安装multiarch debian软件包:所有依赖项

时间:2016-11-17 08:19:15

标签: ubuntu debian packaging

这是a personal ppa archive here

上的问题

构建dosbox的一个依赖项是(由我在另一个配方上制作)mt32romdata包。它的目的是在程序包安装期间通过向用户询问它们来安装ROM的简单脚本,因此只有在每个使用包都被删除后才管理卸载(每个使用它的包,当前的dosbox和exult,都有应用的补丁来查找它把ROM放在哪里。

这是一个架构indep包(即:Architecture: all; any),因为它是一个简单的post-inst脚本。

Exult和dosbox包将它作为依赖项。现在很简单:我希望能够安装dosbox:i386(它的JIT在32位好得多)和exult 64位。实际的lib32emu库不是问题,因为exult捆绑了自己的版本,因此没有冲突。问题在于,当我尝试:

apt-get install dosbox:i386

吐出来:

dosbox:i386 : Depends: mt32romdata:i386 but it is not installable

我希望每个人都理解这与建筑独立包装的精神背道而驰。这只是dosbox包控制文件中的一个错误,我应该将运行时依赖项放在不同的地方:

Depends: ${shlibs:Depends}, ${misc:Depends}, mt32romdata

或者它是对ubuntu / debian的multiarch支持的限制?

提醒一下,在mt32romdata包控件架构定义中用'any'替换'all'并不吸引人,因为如果我想安装dosbox,两个版本都会发生冲突:i386和exult:amd64

1 个答案:

答案 0 :(得分:0)

我相信我明白了。这似乎是一个新的字段Multiarch

处理的向后兼容性问题

Dosbox恰好是(正确地)标记为Multiarch:foreign,这意味着mt32romdata架构:所有包也需要根据链接标记为Multiarch:foreign。