Mar*_*ter 6 compiling debian dpkg package-management configure
我想从源代码构建 Debian 软件包,使用dpkg-buildpackage. 我已经下载了包源:
apt-get -t wheezy-backports source gnucash
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
我应该编辑哪些?
什么是正确的方法呢?
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步骤都有默认值,如有必要可以覆盖。哪个链接到 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
Run Code Online (Sandbox Code Playgroud)
所以,这是覆盖dh_auto_configure debhelper目标。查看man dh_auto_configure有关该目标的更多信息。
在这种情况下,默认值dh_auto_configure将configure不带参数运行,即./configure. 覆盖仅configure使用给定的参数/选项运行。因此,您需要在--enable-aqbanking此处删除参数/选项。
这里有一些关于 dh 的幻灯片:Not Your Grandpa's Debhelper。网络上还有其他信息。