创建的.deb pacckage不包含autoconf项目中make install创建的文件

时间:2013-10-16 17:15:12

标签: package autoconf deb

我开发了一个基于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下载)

1 个答案:

答案 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_installdh_auto_installdebhelperdh的联机帮助页以获取更多信息。