我正在构建一个运行时共享库包,libfoo0.deb
其中0
这是一个主要包版本,并遵守中指定的命名约定Debian 政策。
问题是我想libbar
根据运行时共享库包构建另一个共享库libfoo0
。所以我正在考虑添加一个依赖节,但我不确定是否有必要指定一个版本,例如
Depends: libfoo0 (= 0.0.4)
这是构建0.0.4
的版本libfoo0-dev.deb
(包含开发文件/必要的符号链接的包/usr/lib/
) 。libbar
我看到的问题是这会禁止用户更新libfoo0
.
问题:只要libfoo0
二进制文件在主要库版本之间向后兼容,是否不需要指定对libfoo0
构建的库/二进制文件的确切版本的依赖关系?
答案1
如果您的构建包含dh_shlibdeps
或dpkg-shlibdeps
(如果您正在使用dh
,这将被处理),您应该添加
Depends: ${shlibs:Depends}
tolibbar
的control
文件,并且将为您添加适当的依赖项。
您不应该对特定版本进行硬编码,除非需要同步升级库。这个想法是,具有相同主要版本的库应该向后兼容,因此只要您的版本大于或等于您需要的版本,就应该没问题。这些工具也会为您处理这个问题;您可能需要手动添加一个shlibs
或symbols
文件到libfoo
; IIRC 构建会告诉您何时需要处理该问题。