在我的公司,我正在努力deb
从第三方库创建Debian 软件包.该库是使用Autotools构建的.我之前从未使用过Autotools,而且我遇到了一些困难.库源包含configure.in
与Makefile.am
文件和m4/
目录.我能够使用以下序列构建库:
aclocal -I m4 -I /usr/share/aclocal autoheader libtoolize --automake automake -a autoconf ./configure make
在debian/rules
文件中我想使用CDBS.我写了这个:
#!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/autotools.mk
但它不起作用.它抱怨该configure
文件丢失.这是对的,因为Autotools类希望这个文件存在.但它不存在,有人必须先autoconf
和朋友打电话!
为什么Autotools CDBS课程不让我autoconf
和朋友打电话?我该如何规避呢?
题外话:
当我使用程序时,我不会每次都编译它,我编译一次并重用二进制文件.
当人们安装软件时,他们不会自己编译,维护者编译一次,人们重用二进制包.
当维护者编译包时,他/她configure
每次编译时都不创建脚本,上游作者创建它一次,维护者可以重用它.
这最后一句是真的吗?因为对我而言,似乎Autotools CDBS类的作者假设了这样的东西 - 他们假设configure
存在,并在为不同的架构编译包时重用它.我对吗?
一方面,如果configure
可以生成,它不应该出现在任何地方 - 如果你需要它,你从其他文件生成.另一方面,Autotools CDBS类的作者必须有一些理由以这种方式实现它而不是另一种.
摘要:
如何处理上述Autotools CDBS类问题?
我多久重生一次configure
?(一般情况下和构建Debian软件包时.)
William Purs.. 6
首先,你工作太辛苦了.而不是运行aclocal && autoheader && etc ...,你可以运行autoreconf.这将确保以正确的顺序调用所有自动工具(并且在手指和大脑上更容易).其次,一旦你生成了配置脚本,你应该创建一个构建目录并运行'make dist'来获得将用于生成deb的tarball.tarball将包含configure脚本.(更好的是,只使用上游生成的tarball,不要担心运行autotools.)
首先,你工作太辛苦了.而不是运行aclocal && autoheader && etc ...,你可以运行autoreconf.这将确保以正确的顺序调用所有自动工具(并且在手指和大脑上更容易).其次,一旦你生成了配置脚本,你应该创建一个构建目录并运行'make dist'来获得将用于生成deb的tarball.tarball将包含configure脚本.(更好的是,只使用上游生成的tarball,不要担心运行autotools.)