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

Fal*_*ken 1 debian packaging

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

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

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

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

一些线索:

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

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

  • 创建一个“package-common”包,其中包含其他 2 个包所依赖的库、手册页等。(但我不知道如何以这种方式编译上游源代码)

我知道这个问题很难解释,尤其是在英语不好的情况下,但我希望你能给我一些线索:)

感谢社区!

Phi*_*lds 5

您的第三个选项是最常见的。很多时候你会看到它被称为 -common 或 -base。它在很多地方都提供了单独的库包,以及文档包或插件。您实际上是从一个来源创建多个包。大多数 -doc 包和 -common 包以及大量的 lib* 包都是以这种方式创建的。

例如

package-base
package-option1
package-option2
Run Code Online (Sandbox Code Playgroud)

package-option1 和 package-option2 都依赖于 package-base。这是最好和最安全的方法。在 Debian / Ubuntu 软件包存储库中有很多这样的例子 - apache2、php5、dhcp3、nagios3、vim

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