我正在开发一些共享库,现在遇到了一些软件拒绝选择较新版本的问题,但有些软件必须使用最新版本,因为它有一些关键的更改。所以我需要保留同一个库的两个不同版本。
问题是我使用某种“胖”包libel.deb
,其中包含开发人员所需的头文件以及so
与头文件兼容的实际二进制文件。我正在考虑将libel.deb
分成libel-dev.deb
和libel1-bin.deb
, libel2-bin.deb
。
但问题是libel-dev
包含与最新版本的库兼容的标头,因此开发人员实际上需要安装 2 个软件包:libel-dev
和libel2-bin
哪个容易出错(很容易安装不兼容的dev
软件包bin
)。
这个问题该怎么办呢?也许 dev-package 也可能包含二进制文件......?
答案1
-dev、-bin 等包的内容完全是约定俗成的,包管理器实际上并不关心。如果您实际上上传到 Ubuntu(或 Debian)存档,各种工具(和人员)可能会检查是否遵循约定,但对于本地软件包,如果您不愿意,则不必遵循它们。也就是说,遵循它们通常有充分的理由——如果没有别的办法的话,可以减少混乱。
也就是说,各种包关系标头(Depends、Breaks 等)都支持版本;如果您正确声明了关系,包管理器应该阻止您安装不兼容的集。听起来甚至不需要版本;只是 libel-dev 需要依赖:libel2-bin 和 libel2-bin 需要冲突:libel1-bin(如果它们不可共同安装)。
您可能会发现Debian 政策手册“声明包之间的关系”有帮助。