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

时间:2015-05-31 09:50:42

标签: debian package libstdc++ debhelper

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

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

Depends:
 ${shlibs:Depends},
 ${misc:Depends}

因此,依赖关系会在创建的包中自动设置。但是,libstdc ++所需的版本太严格了。该软件包需要libstdc ++ 6(> = 4.9 ),我希望将其设置为libstdc ++ 6(> = 4.8 )。

为此目的,在阅读pagepage时,我编辑了“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软件包上做过这种定制?

由于

1 个答案:

答案 0 :(得分:0)

一般来说,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工具链)来构建软件包。