使用非标准选项构建 Debian 软件包

使用非标准选项构建 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

我应该编辑哪一个?

正确的做法是什么?

答案1

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是一个较新的变体,每个标准debhelper步骤都有默认值,如有必要可以覆盖。这与美联社所说的有关。在这种情况下,规则文件将覆盖默认配置步骤。因此。您需要修改此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。网上还有其他信息。

答案2

好的,看一下gnucash-2.6.x/debian/rules

找到显示的行override_dh_auto_configure:(在我的例子中为第 23 行),然后在其下方添加您的覆盖。

在你的情况下--enable-aqbanking已经存在(至少对于喘息向后移植),所以只需删除它。

更多信息可以在手册页

更新:此外,有时rules文件中会有一个变量负责将自定义内容传递给configure.它通常位于文件的顶部,称为DEB_CONFIGURE_EXTRA_FLAGS.

相关内容