dh-make是构建Debian软件包的标准方法吗?

我一段时间前开始为我的软件创建一个.deb包,并且当时我偶然发现了这种方法(我对这个领域一无所知),基本上是这样的:
- 创建一个如下所示的目录结构
-- pkg-dir
   -- DEBIAN
      -- controlfile
      -- postinst
      -- postrm
      -- conffiles
   -- usr
      -- share
         -- myapp
   -- etc
      -- myapp
fakeroot dpkg-deb --build pkg-dir lintian pkg.deb
然而,如今我找到的所有信息都指向了dh-make。dh-make是新的或推荐的方式吗?我的方法从何而来?将来我想使用标准的方式,但现在为了节省时间,我想完成我已经开始的工作。我在哪里可以获取更多关于我的方法的信息?

1这是官方的Ubuntu打包指南:http://developer.ubuntu.com/packaging/html/ - saji89
你打算构建一个针对Ubuntu还是上游(Debian本身)的软件包? - saji89
其实我正在忙着打包我们公司的Java应用,所以这是一个商业应用...但是我也想以后分发我自己的开源应用。主要是针对Ubuntu平台,但保持与上游的选择性会更好。 - Hannes de Jager
我猜我的学习曲线会比较陡峭,因为我正在打包一个商业应用程序,而大多数示例显然是针对开源的,并且利用了商业应用程序无法使用的存储库系统(我认为)。如果有关于打包商业应用程序的任何提示,我将不胜感激。我对Linux充满热情,并希望能够最大程度地将我们的商业软件与Linux集成起来,所以我在努力推动这个工作,但还有很多东西需要学习。 - Hannes de Jager
2个回答

你可以用几种方法创建Debian软件包。`dh-`工具是帮助脚本,可以帮助你创建正确的目录结构和文件。`dh-make`是最基本的一个,但它有很多启发式算法,并且与使用GNU autotools(即`./configure`、`make`、`make install`)的软件配合得很好。它会为你做很多工作。
然后你可以使用`debuild`来创建源码和二进制软件包。
“你的方式”只是从二进制文件构建。这是不可取的,因为你无法为其他发行版(版本)或架构进行构建。此外,Debian/Ubuntu要求必须有一个源码软件包才能被包含在软件仓库中(还有很多其他要求和指南)。更多信息请参考@saji89提供的链接。我还建议你下载软件包并检查它们是如何组装的,可以使用`apt-get source packagename`命令。

更新

你在评论中提到你正在打包一个Java应用程序。Debian Java打包维基中提到了这一点。

使用javahelper并非必需,但是如果不使用javahelper来实现所需的策略元素将会相当困难,因此我们假设您将使用javahelper。
因此,我建议您开始阅读如何使用javahelper和DH进行打包的相关内容,或者可以选择DH的替代方案:CDBS。

谢谢您的概述。如果我要打包一个Java应用程序,您会建议使用哪些工具? - Hannes de Jager
1@HannesdeJager 我建议您阅读Debian Java/Packaging维基页面 - gertvdijk