我正在創建一個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的嘗試本身在運行時
現在這個插件的構建SYSTE找到插件m是cmake
,這使得Debian打包直截了當的大部分部位:debian/rules
文件只包含基本行:
#!/usr/bin/make -f
%:
dh [email protected]
然而,我正在與替換變量{shlibs中:取決於}:問題是根本沒有設置(特別是debian/<package name>.substvars
文件中沒有相應的行),林田正確地抱怨這個事實(林田的實際投訴是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/<package name>.substvars
),其中構建系統只是忽略它,Lintian一直抱怨缺少依賴關係。
我在猜測我的問題的根源在於我的Mapnik插件不符合POSIX庫命名約定(並且Mapnik插件無法這樣做),因此打包系統無法正確處理它。但是我對如何解決這個問題感到不知所措。
其他注意事項:
- 包使用
debuild
建。除了Lintian錯誤消息外,構建過程還可以正常工作並正確創建.deb
包。 - 我的實際目標是讓軟件包在Launchpad上乾淨地構建,以便將其添加到我的Ubuntu PPA中。
大,工程完全按照預期,並且擺脫了林田警告。 – Dreamer 2015-02-24 08:18:36
你的第一個代碼塊中有一個小的錯字(你寫的是「dh_slibdeps」而不是「dh_s ** h ** libdeps」)。 – Dreamer 2015-02-24 08:19:32