我正在创建一个Mapnik插件(https://github.com/rbuch703/coords-mapnik-plugin),目前正在为Debian/Ubuntu打包它。二进制包仅由一个由C++代码构建的共享库组成。但是作为Mapnik插件,这个库遵循了与通常的POSIX库约定完全不同的约定:
<name>.input而不是lib<name>.so。/usr/lib/mapnik/input)中。ldconfig找到,而是Mapnik试图在运行时自行找到插件。现在插件的构建系统是cmake,它使Debian的大部分部分直接打包:debian/rules文件只包含基本行:
#!/usr/bin/make -f
%:
dh $@但是,我遇到了替换变量{shlibs:依赖性}的问题:它根本没有设置(特别是,debian/<package name>.substvars文件中没有对应的行),Lintian正确地抱怨了这个事实(Lintian的实际抱怨是missing-dependency-on-libc )。但是当我手动添加libc依赖项时,Lintian解释了package-depends-on-hardcoded-libc,这意味着“给定的包直接声明了libc上的依赖项,而不是在其debian/control节中使用${shlibs:依赖性}”)。我想满足林田而不是尊重,但却不能这样做。
现在我发现我可以加上这一行
dpkg-shlibdeps debian/<packagename>/usr/lib/mapnik/input/coords.input到我的rules文件。这将创建正确的${shlibs:Depends}行,但它将在错误的文件(debian/substvars而不是debian/<package name>.substvars)中创建它,其中构建系统只是忽略它,Lintian一直抱怨缺少依赖关系。
我猜想问题的根源在于我的Mapnik插件不符合POSIX库命名约定(而且Mapnik插件不能这样做),因此打包系统不能正确地处理它。但我不知道如何解决这个问题。
补充说明:
debuild构建的。除了Lintian错误消息之外,构建过程很好地工作,并正确地创建了.deb包。发布于 2015-02-23 16:05:52
可以为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 {} +https://stackoverflow.com/questions/28670862
复制相似问题