我有两个以前在我们的内部存储库中制作的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。