Debian的包装:如何防止“试图覆盖”的错误

我有两个以前在我们的内部存储库中制作的Debian软件包。 他们都共享相同的源代码,但编译与一个不同的选项,创build两个单独的二进制文件相同的库。 他们被安装在不同的服务器上

因此,这两个软件包不能同时安装,因为他们尝试安装相同的库,因此dpkg错误“试图覆盖/ my / lib”。

问题:我需要将它们安装在同一台服务器上。

问题是:我应该添加什么样的修改来使它们兼容?

一些线索:

  • 从同一个源创build第三个包,编译整个源代替两个单独的(但我想这是肮脏的方式)

  • find一个选项告诉这两个包可以相互走(但我不知道它是否存在)

  • 创build一个“包通用”包,包含其他2个包依赖的库,手册页等。 (但是我不知道如何编译上游源代码)

我明白这个问题很难解释,特别是在一个不好的英语,但我希望你会给我一些线索:)

感谢社区!

您的第三个选项是最常见的。 很多时候你会看到它叫做-common或者-base。 这是在很多地方提供单独的库包,以及文档包或插件。 你基本上是从一个来源创build多个包。 大多数-doc包和-common包以及大量的lib *包都是这样创build的。

例如

package-base package-option1 package-option2 

package-option1和package-option2都依赖于软件包基础。 这是做到这一点的最好和最安全的方法。 在Debian / Ubuntu包repositorites中有很多这样的例子 – apache2,php5,dhcp3,nagios3,vim

dh_make支持从一个源创build这些库包或多个二进制包,值得一试。

Phil所描述的通用基础包方法可能是最好的select,但是如果你将一个包标记为replace另一个包,它将允许包B覆盖包A所拥有的文件。当然,这是一个更快速的修复一个长期的解决scheme。