Debian Debild-已设置依赖项,但没有版本

Debian Debild-已设置依赖项,但没有版本,debian,packaging,deb,software-packaging,Debian,Packaging,Deb,Software Packaging,假设我有以下软件包:zs-boost\u 1.71.0\u armhf.deb。这是将boost 1.71安装到某个自定义位置的自定义软件包(假设/opt/deps) 我还有一个使用这个库的项目。它构建和运行良好。现在我正在包装它。我在debian/control文件中有以下内容: dependens:${shlibs:dependens},${misc:dependens} 我使用:debuild-b-us-uc-aarmhf构建包。软件包可以按照预期进行构建和工作。我唯一的问题是它的依赖于

假设我有以下软件包:
zs-boost\u 1.71.0\u armhf.deb
。这是将boost 1.71安装到某个自定义位置的自定义软件包(假设
/opt/deps

我还有一个使用这个库的项目。它构建和运行良好。现在我正在包装它。我在
debian/control
文件中有以下内容:

dependens:${shlibs:dependens},${misc:dependens}
我使用:
debuild-b-us-uc-aarmhf
构建包。软件包可以按照预期进行构建和工作。我唯一的问题是它的
依赖于deb的
控件中的
条目,如下所示:

dependens:dependens:libc6(>=2.9)、libpq5(>=9.0~)、zs boost、init系统助手(>=1.18~)
请注意,zsboost没有版本。我怎样才能修好它?它是由安装到自定义目录引起的吗?我假设如果包被正确识别,那么它的版本也应该被使用

debian/package.subsvars
包含
shlibs
的以下行:

shlibs:dependens=libc6(>=2.9)、libssl1.1(>=1.1.0)、libuuid1(>=2.16)、zs boost
我应该怎么做才能正确地对依赖项进行版本控制?请注意,我对手动提供版本号不感兴趣,这只是一个软件包,我们有20多个不断更新和重建的软件包,手工操作是毫无疑问的


提前感谢。

如果您想要版本化的依赖项,请在
debian/control
中添加一个

Depends: zs-boost (>= 1.71.0)

您在生成的
shlibs
中看到的对特定版本的
libc6
的版本依赖性最终取决于包维护人员确定的类似显式声明(通常保守且非常小心)。

为什么需要版本依赖性?为什么您希望生成一个?您希望b生成哪个版本?我需要版本依赖关系,因为我的版本包和版本经常更改,并且我们的包不一定与旧版本的包一起工作。我希望依赖关系看起来像“zsboost(>=1.71.0)”。我希望会生成该版本,因为它是为其他库/包生成的。我甚至试图在“debian/rules”中添加
override\u dh\u makeshlibs:/dh\u makeshlibs-V
,但它什么也没做。事实上,DEBIAN/shlibs文件似乎应该由dh_makeshlibs生成,但事实并非如此。很抱歉,但我特别指出,我不想手动创建依赖项,因为libc6版本是为我的包自动生成的,包维护人员肯定不会非常小心地确定,因为我是这个包的维护者,正如您所看到的,我只在我的包的
Depends
部分指定了
${shlibs:Depends}
。我假设将
-V
添加到
dh_makeshlibs
中会像程序手册页上所描述的那样自动添加pacakge的版本,但事实并非如此。如果
libc6
依赖项是从您碰巧安装的任何版本盲目生成的,您会看到类似
(==2.28-10)
的内容。
=2.9
对应于一个ABI更改,维护人员认为该更改非常重要,足以保证禁止早期版本。好的,对不起,在进行了更多的实验之后,我才意识到您的意思不是缺少依赖项的包中的
shlibs
文件,而是
zsboost
包中的
shlibs
。在重写对
dh_makeshlibs
的调用并重建包(但更早的gcc 9.2.0,但更早的…)之后,我最终在我的最终包中获得了适当的依赖项。这太棒了。谢谢。你的编辑建议被拒绝了,我不能说我真的想在这里合并它。如果你认为这很重要的话,也许可以发布一个单独的答案。我认为这很重要,因为现在你的答案在某种意义上是误导性的,如果一些人(像我一样)对deb building不太熟悉,那么你提到的“shlibs”被(错误地)假定为来自“package”,而不是来自“zs boost”,所以“package”所依赖的package。我已经知道它是如何工作的,所以我不在乎,我只是觉得更完整的答案在将来会更有用。