使用非標準選項建構 Debian 軟體包
我想從原始碼建構 Debian 包,使用
dpkg-buildpackage
. 我已經下載了包源:apt-get -t wheezy-backports source gnucash
在
gnucash-2.6.9/configure
我看到的文件中,有一些選項可以在建構包時選擇/取消選擇。Debian 維護者已經為我做出了決定。但是如果我想禁用某些選項,我應該怎麼做?
可以說,我想編譯沒有
--enable-aqbanking
. 此選項出現在幾個配置文件中:$ grep -rl enable-aqbanking gnucash-2.6.9/ gnucash-2.6.9/packaging/gnucash.spec gnucash-2.6.9/packaging/gnucash.spec.in gnucash-2.6.9/configure.ac gnucash-2.6.9/configure
我應該編輯哪些?
正確的方法是什麼?
好的,看看
gnucash-2.6.x/debian/rules
。找到上面寫著的行
override_dh_auto_configure:
(在我的例子中是第 23 行),然後在它下面添加你的覆蓋。在您的情況下
--enable-aqbanking
已經存在(至少對於 wheezy-backports),所以只需將其刪除。更多資訊可以在手冊頁中找到。
**更新:**此外,有時
rules
文件中有一個變數負責將自定義內容傳遞給configure
. 它通常位於文件的頂部,稱為DEB_CONFIGURE_EXTRA_FLAGS
.
gnucash-2.6.9/packaging/gnucash.spec
並且gnucash-2.6.9/packaging/gnucash.spec.in
不是 Debian 包裝的一部分。它們是項目自己的規範文件(第二個是模板),用於以 RPM 形式打包 gnucash。
gnucash-2.6.9/configure.ac
也是上游的一部分。這是一個 Autoconf 文件,用於生成gnucash-2.6.9/configure
. 該autoconf.ac
文件由 Debian 打包使用,但不是其中的一部分。所有 Debian 軟體包都位於
debian/
子目錄中。實際的建構腳本(實際上只是一個 Makefile)是
debian/rules
,所以這就是您需要關心的全部內容。大多數 Debian 軟體包都使用該debhelper
程序。這個包碰巧使用了更新和現代的dh
變體,它是debhelper
.簡而言之,“傳統”的
debhelper
工作方式是提供一套可用於建構包的標準命令,而不必從頭開始做所有事情。dh
是一個較新的變體,每個 stahdarddebhelper
步驟都有預設值,必要時可以覆蓋。這與AP所說的有關。在這種情況下,規則文件將覆蓋預設配置步驟。因此。您需要修改此override_dh_auto_configure
目標以更改配置步驟的作用。這是override_dh_auto_configure
目標:override_dh_auto_configure: dh_auto_configure -- \ --libdir=/usr/lib/$(DEB_HOST_MULTIARCH)/gnucash \ --infodir=/noinst \ --mandir=/noinst \ --docdir=/noinst \ --disable-static \ --enable-dbi \ --enable-ofx \ --enable-aqbanking \ --enable-locale-specific-tax \ --enable-python
所以,這是覆蓋
dh_auto_configure
debhelper
目標。查看man dh_auto_configure
有關該目標的更多資訊。在這種情況下,預設值
dh_auto_configure
只會在configure
沒有參數的情況下執行,即./configure
. 覆蓋僅configure
使用給定的參數/選項執行。因此,您需要在--enable-aqbanking
此處刪除參數/選項。這裡有一些關於 dh 的幻燈片:不是你爺爺的 Debhelper。網上還有其他資訊。