作为原始作者,最简单的方法是如何制作源代码和二进制包?

Debian的打包指南,根据我目前所阅读的内容,假设打包者不是维护者,因此需要有原始tarballs、补丁等。
如果我有一个使用"make"构建而不是autotools等的应用程序,我需要什么样的打包指南呢?
我不想制作无意义的tarballs和空白补丁。
我确实希望有源代码和二进制包。

如果您使用git,您可以尝试git-buildpackage,它将为您简化tarball部分。https://wiki.debian.org/PackagingWithGit#Using_the_upstream_repo - muru
3个回答

没有人想要毫无意义的东西。请放心,采用.deb打包方式的社区(Debian、Ubuntu、Mint等)已经对其中的一切进行了详细讨论。
打包的基本思想是这样的:
- 一个tarball,它与特定发行版无关,不需要争论,这就是程序的独立于发行版的源代码树。如果它已经知道如何在特定的发行版中运行,那太好了;如果不知道,也没关系。创建软件包时,必须将该tarball命名为yourname_version.orig.tar.(xz,gz,bz2)以便找到它。
- 另一个tarball,其中包含特定版本的Debian所需的所有内容,放在一个名为debian的单独文件夹中。将其分开的一个原因是,负责打包的个人通常与维护软件本身的人不同。这有助于在软件更新时避免覆盖打包内容。同时确保原始源代码树没有进行任何隐藏更改。RedHat开发人员也不希望看到Debian特定的部分,所以将debian文件夹与其他内容分开,每个人都很满意。
所以,这就是两个tarball。我认为并没有太多额外的工作量。主要问题是上游源代码树的完整性。

根据你居住的地区和你交际程度的高低,有不同的方法开始学习如何打包。对于许多人来说,只是浏览

就足够了。其他人则会使用

  • 提供dh_make自动打包的dh-make软件包

还有一些人会查看

与大多数社交Debian开发者会面,以便在最陡峭的时刻得到指导。一旦您有了一些常规,从0到可安装的软件包只需要几分钟,基本上等待的主要是编译时间,因此在我看来并不是太过分的要求。然后大部分工作都涉及软件包描述或者像缺失的手册页面或者自动更新通知这样的上游没有关注足够的位点。祝好运。

作为原始作者的Debian打包,这些软件包类型被称为“本地”。

  • debian文件夹是源代码树(源代码存档)的一部分。
  • 没有Debian补丁。

参考资料:

对于指南,有很多,但请尽量遵循Debian/Ubuntu官方指南。在开始之前,请始终验证其更新日期。我建议从这里开始:

Debian打包教程,它清楚地概述了发行版使用的上游工作流程。(许多教程都忽略了这一点)


我做的两件事是:
  1. 创建debian文件夹

    在文件夹中,按照需要创建以下文件(即不要创建不需要的文件):

     changelog
     compat
     control
     rules
     shlibs.local
     source/format
     source/options
     project-name.docs
     project-name.install
     project-name.preinst
     project-name.postinst
     project-name.prerm
     project-name.postrm
     project-name.service
     project-name.logrotate
     project-name.cron.daily
     project-name.cron.monthly
     ...
    
  2. 然后使用以下命令构建软件包:

     dpkg-buildpackage -us -uc
    

    实际上,我使用了一个脚本。该命令会在源代码树中生成各种文件。因此,在我的环境中,我首先创建一个副本,然后在副本中运行该命令。然后我可以删除副本。

     cd project-name
     VERSION=`dpkg-parsechangelog --show-field Version`
     cd ..
     cp -r project-name project-name-${VERSION}
     cd project-name-${VERSION}
     dpkg-buildpackage -us -uc
    
debian/source/options文件中,我有:
tar-ignore = "tmp"
tar-ignore = ".git"

因为如果没有这两个,那么这些文件夹就会被添加到您的源代码包中,而实际上可能不应该这样做。
另一种方法是使用https://launchpad.net/上的PPA系统,它的优点是非常容易在任何机器上安装生成的软件包。如果您想分享您生成的软件包(如果您不想分享,那么显然您不应该使用这个方法),它也是公开的。