如何创建一个Debian包作为autotools构建的一部分?

CAB*_*CAB 13 debian automake packaging autotools

我可以找到的所有Debian打包示例都假设用户从上游构建重新打包,因此它解压缩源tar包,配置,重建和重新打包.我正在尝试为自己的库构建一个包,它是使用autotools构建的.我尝试了几种不同的方法,我最近的尝试看起来像这样:

DH_PACKAGE_NAME=`echo $(PACKAGE_NAME) | sed s/_/-/g`
dist-hook:
    cd $(distdir) ; \
    export DEBFULLNAME="Some One" ; \
    export DEBEMAIL="someone@foo.com" ; \
    echo -e "\n" | dh_make --copyright blank --library --native \
        --packagename $(DH_PACKAGE_NAME)
    mv $(distdir)/debian $(distdir)/DEBIAN
    dpkg-deb --build $(distdir)
Run Code Online (Sandbox Code Playgroud)

为此dpkg-deb抱怨dh_makes控制文件.我有一个问题,解决方案更简单了吗?

uml*_*ute 6

整个包装过程被简化为将构建过程包装到包装过程中。因此,尝试将打包过程包装到构建过程中可能不是很容易,但我认为没有必要不按照标准方式进行。

所以:

  • 制作基于自动工具的构建系统,就好像您根本不关心 debian 软件包一样。
  • 创建一个简单的 debian/rules 文件,它将调用您的构建系统并制作一个 deb 包
  • 如果您(或您的软件包的其他用户)想要构建 deb,请运行 dpkg-buildpackage
  • 如果您(或您的软件包的其他用户)不想构建 deb,只需运行 ./configure && make && make install

这是更好的做法,因为它将 2 个独立的阶段(构建和包装)分开。它还允许更轻松地集成到任何基于 Debian 的发行版中(例如,如果您决定将您的软件包放在“真正的”Debian 中会很棒),因为 Debian 打包指南非常严格地将这两个进程分开(上游源代码)运送自己的 debian/ 的人不赞成,上游的 debian/ 通常被删除)


CAB*_*CAB 6

不幸的是,我无法让这里的任何一个优秀答案在我的环境中真正起作用。dpkg-buildpackage 在从源代码构建包方面太善变了。我终于确定了这里显示的 dpkg-deb --build 方法