Ubuntu包装指南

文档

与Debhelper包装


[重要]

要求: “包装从零开始”加上debhelper和dh-make的要求

作为一个打包者,你将很少像从前一节那样从头开始创建软件包。 正如您可以想象的那样,例如, 规则文件中的许多任务和信息对于包是常见的。 为了使包装更容易和更高效,您可以使用debhelper来帮助完成这些任务。 Debhelper是一套Perl脚本(前缀为dh_ ),可以使包构建过程自动化。 通过这些脚本,构建Debian软件包变得非常简单。

在这个例子中,我们将再次构建GNU Hello包,但这次我们将把我们的工作与Ubuntu hello-debhelper包进行比较。 再次,创建一个你将要工作的目录:

mkdir〜/ hello-debhelper cd〜/ hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

然后,获取Ubuntu源码包:

apt-get source hello-debhelper cd ..

像前面的例子一样,我们需要做的第一件事是解压原始(上游)压缩包。

tar -xzvf hello-2.1.1.tar.gz

正如我们在前面的例子中那样, 不是像上一个例子那样将上游tarball复制到hello_2.1.1.orig.tar.gz ,而是让dh_make为我们完成这项工作。 您必须做的唯一事情是重命名源文件夹,使其以<包名> - <版本>的形式存在,其中包名称为小写。 在这种情况下,只需解压缩tarball就会生成一个正确命名的源目录,这样我们就可以进入它:

cd hello-2.1.1

要创建源代码的初始“debianization”,我们将使用dh_make

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

然后dh_make会问你一系列问题:

软件包类型:单个二进制文件,多个二进制文件,库文件,内核模块或cdbs? [s / m / l / k / b] s
维护人员名称:Captain Packager电子邮件地址:packager@coolness.com日期:2006年4月6日星期四10:07:19 -0700包名:hello版本:2.1.1授权方式:blank包装类型:Single Hit to确认: 回车


[警告]

只运行一次dh_make -e 。 如果您在首次执行操作后再次运行它,则无法正常运行。 如果您想改变它或者犯了一个错误,请移除源代码目录并重新解压上游tarball。 然后,您可以迁移到源目录并重试。

运行dh_make -e做两件事:

Hello程序不是很复杂,正如我们在“打包从零开始”一节中看到的那样,打包它不需要比基本文件更多的东西。 因此,让我们删除.ex文件:

cd debian rm * .ex * .EX

对于你好 ,你也不会

* 许可证

* Ubuntu包装指南索引

需要README.Debian (针对特定Debian问题的README文件,而不是程序的自述文件), dirs (由dh_installdirs用于创建所需目录), docs (由dh_installdocs用于安装程序文档)或info (由dh_installinfo用于安装信息文件)文件到debian目录中。 有关这些文件的更多信息,请参阅“dh_make示例文件”一节。

此时,您应该只有debian目录中的changelogcompat控制版权规则文件。 从“打包从零开始”一节中,唯一新增的文件是compat ,它是一个包含使用的debhelper版本(在本例中为4)的文件。

在这种情况下,您需要稍微调整changelog以反映此软件包名称为hello-debhelper,而不仅仅是hello

hello-debhelper(2.1.1-1)dapper; 紧急度=低*初始版本 - Captain Packager 2006年4月6日星期四10:07:19 -0700

通过使用debhelper ,我们需要在控件中更改的唯一东西是名称(用hello-debhelper替代hello ),并向源包的Build-Depends字段添加debhelper(> = 4.0.0)hello-debhelper的Ubuntu包看起来像:

我们可以复制Ubuntu hello-debhelper软件包中的版权文件以及postinstprerm脚本,因为它们自从“从头开始打包”一节以来没有更改过。 我们也将复制规则文件,以便我们可以检查它。

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules。

我们需要看的最后一个文件是规则 ,可以看到debhelper脚本的能力。 debhelper版本的规则有些小一些(54行,而在“规则”一节中的版本是72行)。

debhelper版本如下所示:

#!/ usr / bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq(,$(findstring noopt,$(DEB_BUILD_OPTIONS)))CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean :dh_testdir dh_clean rm -f build - $(MAKE)-i distclean install:build dh_clean dh_installdirs $(MAKE)prefix = $(CURDIR)/ debian / $(package)/ usr \ mandir = $(CURDIR)/ debian / $ (package)/ usr / share / man \ infodir = $(CURDIR)/ debian / $(package)/ usr / share / info \ install build:./configure --prefix = / usr $(MAKE)CC =“$ (CC)“CFLAGS =”$(CFLAGS)“

touch build binary-indep:install#这个软件包生成的没有独立于架构的文件需要上传#。 如果有任何他们会在这里制作#。 binary-arch:安装dh_testdir -a dh_testroot -a dh_installdocs -a新闻dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a二进制:binary-indep binary-拱形.PHONY:二进制二进制二进制文件binary-indep clean checkroot

请注意,如果您在正确的目录( dh_testdir )中进行测试,确保您正在构建具有超级用户权限( dh_testroot )的软件包,安装文档( dh_installdocsdh_installchangelogs )以及在构建( dh_clean )之后进行清理。 许多比hello复杂得多的包规则文件不会更大,因为debhelper脚本处理大部分任务。 有关debhelper脚本的完整列表,请参阅“ Debhelper脚本列表”一节。 他们在各自的手册中也有很好的文档。 阅读上述规则文件中使用的每个帮助程序脚本的手册页(它们写得很好,而且冗长)是一种有用的练习。