【问题标题】:Debian package creation with debhelper: change dependency version使用 debhelper 创建 Debian 软件包:更改依赖版本
【发布时间】:2015-05-31 09:50:42
【问题描述】:

我正在使用 DebHelper 创建一个 Debian 软件包,在 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 软件包上进行过这种自定义?

谢谢

【问题讨论】:

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

标签: debian package libstdc++ debhelper


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多