封装库分发

封装库分发

我正在开发一些共享库,现在遇到了一些软件拒绝选择较新版本的问题,但有些软件必须使用最新版本,因为它有一些关键的更改。所以我需要保留同一个库的两个不同版本。

问题是我使用某种“胖”包libel.deb,其中包含开发人员所需的头文件以及so与头文件兼容的实际二进制文件。我正在考虑将libel.deb分成libel-dev.deblibel1-bin.deb, libel2-bin.deb

但问题是libel-dev包含与最新版本的库兼容的标头,因此开发人员实际上需要安装 2 个软件包:libel-devlibel2-bin哪个容易出错(很容易安装不兼容的dev软件包bin)。

这个问题该怎么办呢?也许 dev-package 也可能包含二进制文件......?

答案1

-dev、-bin 等包的内容完全是约定俗成的,包管理器实际上并不关心。如果您实际上上传到 Ubuntu(或 Debian)存档,各种工具(和人员)可能会检查是否遵循约定,但对于本地软件包,如果您不愿意,则不必遵循它们。也就是说,遵循它们通常有充分的理由——如果没有别的办法的话,可以减少混乱。

也就是说,各种包关系标头(Depends、Breaks 等)都支持版本;如果您正确声明了关系,包管理器应该阻止您安装不兼容的集。听起来甚至不需要版本;只是 libel-dev 需要依赖:libel2-bin 和 libel2-bin 需要冲突:libel1-bin(如果它们不可共同安装)。

您可能会发现Debian 政策手册“声明包之间的关系”有帮助。

相关内容