我开发了一个基于autotools的C ++应用程序,它可以与通常的./configure完美地编译和安装; make install。
现在我已经创建了一个.deb包,令我惊讶的是,它不包含我的任何数据或二进制文件。它只包含强制的.deb文件,如CONTENTS,DEBIAN,INFO,INSTALL等。
我用bzr(对于ubuntu)builddeb,debuild等尝试了很多不同的方法。所有这些方法都使我的程序没有错误,然后创建几乎空的.deb。
这些是debian文件夹中的相关文件: 的Debian /控制:
Source: gestiong
Section: office
Priority: optional
Maintainer: santilin <gestiong@programacionsocial.net>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.3
Homepage: www.programacionsocial.net
#Vcs-Git: git://git.debian.org/collab-maint/gestiong.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/gestiong.git;a=summary
Package: gestiong
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <Programa libre de gestión de ONG y asociaciones sin ánimo de lucro>
<GestiONG es un ...>
Package: gestiong-doc
Architecture: all
Description: documentation for gestiong
<insert long description, indented with spaces>
的Debian /更改日志:
gestiong (0.5-0ubuntu1) precise; urgency=low
* Initial release
-- santilín <gestiong@programacionsocial.net> Tue, 15 Oct 2013 14:21:22 +0200
从源代码tarball(gestiong_0.5.orig.tar.gz)构建de包的命令
bzr dh_make gestiong 0.5 gestiong_0.5.orig.tar.gz
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n] s
cd gestiong; bzr builddeb -- -us -uc
编译程序很长一段时间后,.deb创建没有错误。
drwxrwxr-x 3 santilin santilin 4096 oct 16 18:58 build-area
drwxrwxr-x 14 santilin santilin 4096 oct 16 18:35 gestiong
-rw------- 1 santilin santilin 2246 oct 16 18:51 gestiong_0.5-0ubuntu1.debian.tar.gz
-rw------- 1 santilin santilin 894 oct 16 18:51 gestiong_0.5-0ubuntu1.dsc
-rw------- 1 santilin santilin 1885 oct 16 18:51 gestiong_0.5-0ubuntu1_i386.changes
-rw------- 1 santilin santilin 2226 oct 16 18:51 gestiong_0.5-0ubuntu1_i386.deb
-rw-rw-r-- 1 santilin santilin 3638028 oct 16 18:35 gestiong_0.5.orig.tar.gz
-rw------- 1 santilin santilin 1888 oct 16 18:51 gestiong-doc_0.5-0ubuntu1_all.deb
但是.deb文件几乎是空的。我做错了什么?
(tarball可以从https://sourceforge.net/projects/gestiong/files/gestiong/gestiong-0.5.beta.tar.gz/download下载)
答案 0 :(得分:3)
除了缺少的acinclude.m4
之外,您似乎还有一些事情需要解决。
首先,您的debian/rules
:
DH_OPTIONS=extend-diff-ignore
这没有意义。很可能您打算将--extend-diff-ignore
参数提供给dpkg-source
,但将其放在DH_OPTIONS
中将无法实现。它只会让debhelper工具破解。所以完全取消它。
接下来,您缺少许多构建依赖项。如果不宣布这些,其他人就很难建立你的包装。一些快速的#include greps表明你可能至少想要:
Build-Depends: debhelper (>= 8.0.0), libmysqlclient-dev, libxml2-dev, libdb-dev,
qt4-qmake, libqt4-dev, libqt4-dev-bin, libjpeg-dev, libpng-dev,
libx11-dev, libboost-system-dev
最后,这是你要问的部分,你还没有告诉debhelper每个构建文件应该包含哪些包。应该在debian/tmp/
下构建和安装所有内容(因为您的debian/control
中有多个二进制包),但是您没有任何debian/*.install
个文件可以说明放在哪里所有(或者,你有一个,但它只有一行读“#DOCS#
”,这是无益的。)
因此,您需要确定要与软件包一起提供的已安装文件,并将其命名为debian/$packagename.install
文件。例如,您可能希望所有二进制文件都放在主程序包gestiong
中。所以:
echo '/usr/bin' >> debian/gestiong.install
如果有重要的共享库也需要发货,没有其他软件可以使用它们,您可能需要
echo '/usr/lib/*.so*' >> debian/gestiong.install
(如果您有其他软件包将使用的共享库,您应该将它们分解为libgestiong软件包或其他软件包,并了解打包库,这是一个全新的冒险。)< / p>
看起来好像在/usr/include
中安装了一堆头文件。我不知道你是否关心运送它们。同样,如果其他软件包可能需要针对这些文件进行构建,那么您将需要打破libgestiong-dev软件包。
看起来/ usr / share / gonglib下还有一些东西。
echo '/usr/share/gonglib' >> debian/gestiong.install
您还在debian/control
中定义了gestiong-doc包,但我不清楚您想要放在那里。
希望这会有所帮助。您可能需要查看dh_install
,dh_auto_install
,debhelper
和dh
的联机帮助页以获取更多信息。