Debian

使用非標準選項建構 Debian 軟體包

  • October 12, 2015

我想從原始碼建構 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。網上還有其他資訊。

引用自:https://unix.stackexchange.com/questions/235461