【问题标题】:Empty ${shlibs:Depends} while packaging a Mapnik plugin with cmake-based build system for Debian/Ubuntu使用基于 cmake 的 Debian/Ubuntu 构建系统打包 Mapnik 插件时清空 ${shlibs:Depends}
【发布时间】:2015-02-23 09:49:14
【问题描述】:

我正在创建一个 Mapnik 插件 (https://github.com/rbuch703/coords-mapnik-plugin),目前正在为 Debian/Ubuntu 打包它。二进制包仅包含一个由 C++ 代码构建的共享库。但是作为一个 Mapnik 插件,这个库遵循与通常的 POSIX 库约定完全不同的约定:

  • 文件名必须是<name>.input 而不是lib<name>.so
  • 文件安装在 Mapnik 插件目录(通常为/usr/lib/mapnik/input
  • ldconfig 不应该找到该文件,而是 Mapnik 尝试在运行时自行查找该插件

现在插件的构建系统是cmake,这使得 Debian 打包的大部分内容变得简单:debian/rules 文件只包含基本行:

#!/usr/bin/make -f
%:
    dh $@

但是,我遇到了替换变量 {shlibs:Depends} 的问题:它根本没有设置(特别是,debian/<package name>.substvars 文件中没有相应的行),而 Lintian 正确地抱怨了这个事实( Lintian 的实际投诉是 missing-dependency-on-libc。但是当我手动添加 libc 依赖项时,Lintian 解释说 package-depends-on-hardcoded-libc,这意味着“给定的包直接声明了对 libc 的依赖,而不是在其 debian/control 节中使用 ${shlibs:Depends} 。”)。我想在比尊重上满足林天,但无法做到。

现在我发现我可以添加行了

dpkg-shlibdeps debian/<packagename>/usr/lib/mapnik/input/coords.input

到我的rules 文件。这将创建正确的 ${shlibs:Depends} 行,但它会在错误的文件中创建它(debian/substvars 而不是 debian/&lt;package name&gt;.substvars),构建系统会忽略它,并且 Lintian 一直抱怨缺少依赖项。

我猜我的问题的根源是我的 Mapnik 插件不符合 POSIX 库命名约定(因为 Mapnik 插件不能这样做),因此打包系统无法正确处理它。但是我不知道如何解决这个问题。

补充说明:

  • 这些包是使用debuild 构建的。除了 Lintian 错误消息之外,构建过程工作正常并正确创建了 .deb 包。
  • 我的实际目标是在 Launchpad 上干净地构建包,以便我可以将它添加到我的 Ubuntu PPA。

【问题讨论】:

    标签: cmake debian packaging mapnik


    【解决方案1】:

    您可以为dpkg-shlibdeps 提供带有-T 标志的输出文件。 类似:

    override_dh_shlibdeps:
            dh_shlibdeps
            dpkg-shlibdeps \
               -Tdebian/<packagename>.substvars \
               debian/<packagename>/usr/lib/mapnik/input/coords.input
    

    如果有多个 *.input 文件,你也可以这样做:

    override_dh_shlibdeps:
            dh_shlibdeps
            find debian/<packagename>/ -name "*.input" -exec \
                dpkg-shlibdeps -Tdebian/<packagename>.substvars {} +
    

    【讨论】:

    • 很好,完全按照预期工作,并且摆脱了 Lintian 警告。
    • 您的第一个代码块中有一个小错字(您写的是“dh_slibdeps”而不是“dh_shlibdeps”。
    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2011-03-08
    相关资源
    最近更新 更多