![使用非标准选项构建 Debian 软件包](https://linux22.com/image/74891/%E4%BD%BF%E7%94%A8%E9%9D%9E%E6%A0%87%E5%87%86%E9%80%89%E9%A1%B9%E6%9E%84%E5%BB%BA%20Debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我想从源代码构建 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
.