使用debhelper创建Debian包:更改依赖项版本

使用debhelper创建Debian包:更改依赖项版本,debian,package,libstdc++,debhelper,Debian,Package,Libstdc++,Debhelper,我正在Debian的最新稳定版本下使用DebHelper创建一个Debian包 “debian/control”文件包括以下几行: Depends: ${shlibs:Depends}, ${misc:Depends} 因此,依赖项将在创建的包中自动设置。但是,libstdc++所需的版本过于严格。该包需要libstdc++6(=4.9),我希望将其设置为libstdc++6(=4.8) 为此,在阅读此和此时,我编辑了“debian/rules”文件,该文件现在看起来像: #!/usr/b

我正在Debian的最新稳定版本下使用DebHelper创建一个Debian包

“debian/control”文件包括以下几行:

Depends:
 ${shlibs:Depends},
 ${misc:Depends}
因此,依赖项将在创建的包中自动设置。但是,libstdc++所需的版本过于严格。该包需要libstdc++6(=4.9),我希望将其设置为libstdc++6(=4.8

为此,在阅读此和此时,我编辑了“debian/rules”文件,该文件现在看起来像:

#!/usr/bin/make -f

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

%:
    dh $@ 

override_dh_makeshlibs:
    dh_makeshlibs -V 'libstdc++6 (>= 4.8)'
然而,最后两行并没有起作用。有人在Debian软件包上做过这种定制吗


谢谢一般来说,debhelper在检测依赖项方面做得非常好

如果它说您的软件包需要
libstdc++6(>=4.9)
,那么您的软件包很可能需要此特定版本,并且会失败,例如
libstdc++6-4.8
。(如果您不相信我,请尝试一下;强制将您的软件包安装在只安装了libstdc++6-4.8的系统上,然后看看是否一切正常)

如果有人声称它可以用
libstd++6-4.8
(或者更确切地说是
gcc-4.8
)构建,那么我会考虑以下可能性:

  • 要么是那些人错了
  • 或者二进制文件(在您的包中)将略有不同,这取决于它是基于libstdc++6-4.8还是4.9构建的
第二点很可能是这样

这可能有许多原因,例如: -如果您的软件包检测到libstdc++6-4.9,它将自动启用功能 -libstdc++6中的一些实现细节已经更改,这使得生成的二进制文件不兼容(或者至少:不向后兼容)


如果您想要一个可以与libstdc++6==4.8一起使用的包,那么您应该使用
libstdc++6-4.8
(或者很可能是整个g++4.8工具链)来构建包。

我已经阅读了文档,您提出的解决方案似乎有效。当您检查生成的
DEBIAN/control
文件时,它是否包含任何特定版本?您说过您正在为最新的Debian stable(我假设jessie)构建包,它包了
libstdc++6
4.9.2。在这些条件下是否有必要放宽版本要求?(换句话说,包针对不同的分发工作不是更好吗?)生成的DEBIAN/control就是包完成后我检查的内容。我有Jessie,正如您所说,她将lidstdc++4.9.2打包。我不知道这是不是一个好主意,但是其他人说软件可以用版本4.8构建,所以我可以在软件包中放松版本。因此,该包将与其他基于debian的发行版兼容。