Skip to main content

Ubuntu包装指南 - 与Debhelper打包

3.Trojan客户端配置-windows,告别小黑窗 (六月 2025)

3.Trojan客户端配置-windows,告别小黑窗 (六月 2025)
Anonim

与Debhelper打包

重要

要求: 名为“Packaging From Scratch”的部分以及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 ..

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

tar -xzvf hello-2.1.1.tar.gz

而不是将上游tarball复制到 hello_2.1.1.orig.tar.gz 正如我们在前面的例子中所做的那样,我们会让 dh_make所 为我们工作。你唯一要做的就是重命名源文件夹,使其形式为 - 其中packagename是小写的。在这种情况下,只需解压缩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 小号 维护者姓名:Captain Packager电子邮件地址:[email protected]日期:2006年4月6日星期四10:07:19 -0700包名称:您好版本:2.1.1授权方式:空白包装类型:单击 确认: 输入

警告

只跑 dh_make -e 一旦。如果在第一次执行后再次运行它,它将无法正常工作。如果要更改它或出错,请删除源目录并重新解压缩上游tarball。然后,您可以迁移到源目录并再试一次。

运行 dh_make -e 做两件事:

  • 创造 hello_2.1.1.orig.tar.gz 父目录中的文件,
  • 创建所需的基本文件 于Debian / 和许多可能需要的模板文件(.ex)。

你好 程序并不是很复杂,正如我们在“从头开始包装”一节中所看到的那样,打包它并不需要比基本文件多得多。因此,让我们删除 .EX 文件:

cd debian rm * .ex * .EX

对于 你好,你也不会

* 执照

* Ubuntu包装指南索引

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

在这一点上,你应该只有 更新日志, COMPAT, 控制, 版权,和 规则 中的文件 Debian的 目录。从名为“Packaging From Scratch”的部分,新的唯一文件是 COMPAT,这是一个包含的文件 debhelper的 使用的版本(在本例中为4)。

你需要调整 更新日志稍微在这种情况下反映该包被命名 HELLO-的debhelper 而不仅仅是 你好:

hello-debhelper(2.1.1-1)小巧玲珑;紧迫性=低*初始释放 - 包装工队长 星期四,2006年4月6日10:07:19 -0700

通过使用 debhelper的,我们唯一需要改变的地方 控制 是名字(代替 你好 对于 HELLO-的debhelper)并添加 debhelper(> = 4.0.0) 到了 编译所需 源包的字段。 Ubuntu包 HELLO-的debhelper 好像:

来源:hello-debhelper部分:开发优先级:额外维护者:Capitan Packager 标准版本:3.6.1构建 - 取决于:debhelper(> = 4)包:hello-debhelper架构:任何取决于:$ {shlibs:取决于}冲突:你好提供:你好替换:你好描述:经典的问候,和好例子GNU hello程序产生熟悉,友好的问候语。它允许非程序员使用经典的计算机科学工具,否则他们将无法使用它。 。但是说真的:这是一个如何编写Debian软件包的例子。它是GNU项目的“hello world”程序的Debian版本(它本身就是GNU项目的一个例子)。 。这与hello包相同,只不过它使用debhelper来制作deb。请看看debhelper是什么。

我们可以复制 版权 文件和 的postinstprerm 来自Ubuntu的脚本 HELLO-的debhelper 包装,因为它们从“从头开始包装”一节开始没有改变。我们也会复制 规则 文件,所以我们可以检查它。

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 / $ (包)/ usr / share / man infodir = $(CURDIR)/ debian / $(包)/ usr / share / info install build:./ configure --prefix = / usr $(MAKE)CC =“$ (CC)“CFLAGS =”$(CFLAGS)“

touch build binary-indep:install#没有与上传的架构无关的文件#由此软件包生成。如果有的话,他们会在这里做#。 binary-arch:install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS 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:binary-indep binary- arch .PHONY:binary binary-arch binary-indep clean checkroot

请注意,如果您在正确的目录中,则执行测试(dh_testdir),确保您使用root权限构建程序包(dh_testroot),安装文档(dh_installdocs帮dh_installchangelogs),并在构建后清理(dh_clean)自动处理。许多包装比复杂得多 你好规则 文件没有更大,因为 debhelper的 脚本处理大多数任务。有关的完整列表 debhelper的 脚本,请参阅“列表”一节 debhelper的 脚本“。他们各自也有很好的记录 页面。对于上面使用的每个帮助程序脚本,阅读手册页(它们编写得很好而且不冗长)是一个很有用的练习 规则 文件。