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