到目前为止,我读过的 Debian 打包指南都假设打包者不是维护者,因此需要有原始的 tarball、补丁等。
如果我有一个使用“make”(而不是自动工具等)构建的应用程序,我需要什么样的打包指南?
我不想制作无意义的 tarball 和空补丁。
我确实想要源代码和二进制包。
答案1
Debian 以原作者身份进行打包,这些软件包类型称为本国的。
debian
文件夹是源树(源档案)的一部分。- 没有 Debian 补丁。
参考:
指南有很多,但尽量坚持使用 Debian/Ubuntu 官方指南。此外,在开始之前,请务必验证其更新日期。我建议从这里开始:
Debian 打包教程它清晰地概述了发行版所使用的上游工作流程。(许多教程都忽略了这一点)
答案2
没人想要无意义的东西。请放心,采用 .deb 打包的社区(Debian、Ubuntu、Mint 等)已经就其中的所有内容进行了深入讨论。
关于包装的基本思想是:
tarball 不与发行版相关,它是程序独立于发行版的源代码树。如果它已经知道如何在特定发行版中运行 - 很好 - 如果不知道,那就不行。这是创建包时必须命名为 yourname_version.orig.tar.(xz,gz,bz2) 的 tarball。
tarball 包含特定于 Debian 特定版本的所有内容,位于名为 debian 的单独文件夹中。将其分开的一个原因(问题已经准备好)是,单个包装通常与维护软件本身的包装不同。这有助于在软件更新时不会覆盖包装。并且可以确保对原始源代码树没有执行任何隐藏的更改。RedHat 开发人员不希望看到特定于 debian 的部分,因此每个人都乐于将 debian 文件夹与其他文件夹分开。
所以,有两个 tarball。我认为开销不会太大。主要关注的是上游源代码树的完整性。
根据你居住的地方和你的社交能力,有不同的方法来开始学习如何打包。对于很多人来说,只是浏览一下
- Debian 政策https://www.debian.org/doc/debian-policy/(令人惊奇的易读性)和
- Debian 新维护者指南https://www.debian.org/doc/manuals/maint-guide/
就是他们想要的一切。其他人则对
- dh-make 包提供了 dh_make,基本上可以自动打包
其他人又会看看
与一位社交能力较强的 Debian 开发人员见面,指导他度过最初最艰难的时刻。一旦您掌握了一些常规,从 0 到可安装包真的只需要几分钟,基本上您等待的主要是编译时间,所以在我看来,要求并不过分。然后大部分工作都投入到包描述中,或者上游不太关心的部分,例如缺少手册页或可选部分,例如自动通知更新。
祝你好运。
答案3
我做的两件事是:
创建 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 ...
然后我使用以下命令构建包:
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"
因为如果没有这两个,那么这些文件夹就会被添加到您的源包中,而它可能不应该被添加。
另一种方法是使用 PPA 系统https://launchpad.net/这样做的好处是,可以非常轻松地在任何机器上安装生成的软件包。如果您想共享生成的软件包,它也是公开的(如果您不想共享,那么显然您不应该使用那个)。