个人工具

Debian-maint-guide/2

来自Ubuntu中文

跳转至: 导航, 搜索

Debian新维护人员手册

第 2 章 - 第一步

2.1 选择你的程序

你大概已经选好了你要制作的软件包。首先要做的事情是检查它是否已经在发行版中了。如果你使用的是“稳定”发行版,那么你最好到软件包查询页面查一下。如果你使用的是当前的“不稳定”发行版,可以用下面的命令来检查:

      dpkg -s program
      dpkg -l '*program*'

如果软件包已经存在了,那么好,安装它!:-) 如果他碰巧是个孤儿——如果它的维护者成为了“Debian QA Group”的成员,你就应该可以重新维护它。查询孤儿软件包列表 和打算收养的软件包列表可以确认软件包是否真的需要领养。

如果你获准收养一个软件包,那就获取它们的源代码(用apt-get source packagename一类的命令)并检查它们。很不幸,这份文档中并不包含关于收养软件包的详细信息。值得庆幸的是,在收养软件包时,你不用花费很多时间在找出如何让其工作,因为已经有人为你做了初始的设置工作。尽管如此,也请继续读下去,下面的很多建议也会对你所处的情况有用。

如果软件包是新的,并且你已经决定让它出现在Debian中,请按照下面的步骤来 做:

  • 到正在制作中的软件包列表检查是否没有其它人正在为打包同一个软件而工作。如果已经有人正在做了,并且你觉得它对你很重要,就请和他们取得联系。否则——找另一个没人维护的有趣程序吧。
  • 每一个软件都必须有授权,如果有可能最好是象Debian自由软件指导方针中说的那样属于自由软件。如果它并不遵守这些规则但仍然可以以任意形式发布,它也还可以被加入到“contrib”或者“non-free”部分中。如果你不确定它究竟应该被放到哪里,可以把它的授权文字发到 [email protected]问一下该怎么做。
  • 程序的确不应当以setuid root的方式运行,或者最好它应该不需要setuid或setgid成为其它任何东西。
  • 程序不能是一个守护程序,且它不应该放到*/sbin目录中去,也不该以root身份打开一个端口。
  • 程序最终应当是二进制可执行的形式,库处理起来要困难一些。
  • 它应当有很好的文档,最好连源代码也是容易理解的(比如不混乱)。
  • 你应该与程序的作者取得联系问一下他是否同意程序被打包。能够向作者咨询关于程序的任何问题是非常重要的,不要试着去打包一个没有人维护的软件。
  • 最后的但并不是不重要的,你必须知道它确实可以工作并且已经试着使用了一段时间。

当然,这些问题都是只是为了安全,并试着让你不至于在比如setuid的守护进程等问题上犯错误而激怒了用户。当你有了在打包软件方面的更多经验时,你就可以处理那种软件包了,但即便是富有经验的开发人员在他们疑惑时也会发邮件到debian-mentors邮件列表咨询。那里的人们会很乐意提供帮助的。

要获得关于这些内容的更多帮助,请参考开发者参考手册。

2.2 获得程序,并且试用它

第一件要做的事情就是找到并下载原始的软件包。我假定你已经从作者的主页上找到它的源文件了。免费的Unix程序的源文件通常是以tar/gzip格式提供的,它的文件扩展名是.tar.gz,并且通常还包含了以program-version形式命名的子目录,里面放着全部的源文件。如果你的程序源文件是以一些其它的形式提供的(比如,文件名是以“.Z”或“.zip”结尾的),那么就用适当的工具把它解包,或者如果你不清楚应当如何正确把它解包,就在debian-mentors邮件列表上问一下。(提示:可以用命令“file archive.extension”)

作为一个例子,我将会使用程序“gentoo”,它是一个基于X GTK+的文件管理器。需要注意的是,这个程序已经被打包好了,并且从写这篇文档之初到现在它已经发生了很大的变化。

在你的home目录中创建一个名为“debian”或者“deb”或者任何你喜欢的名字的目录(比如在这个例子中~/gentoo/就可以了)。把下载的文件放到这个目录中,然后将其解包(用命令“tar xzf gentoo-0.9.12.tar.gz”)。确认在这个过程中没有发生错误,即便是一点“不恰当”的也不行,因为当在别人的系统上解包这些文件的时候,如果它们的工具并不忽略这些反常的现象,那就会有了。

现在又有了一个新的子目录,名叫“gentoo-0.9.12”。进入这个目录并且彻底的读完其中的文档。通常情况下在目录里面会有名叫README*、INSTALL*、*.lsm或者*.html的文件。你必需找到如何正确编译并安装程序的指导。(最有可能的是它们会假设你希望把程序安装到/usr/local/bin目录中;你不需要这样做,但在后面的在一个子目录中安装, 第 3.1 节中需要做很多事情。)

安装的过程对于不同的软件是不同的,但很多现代的程序都带有一个“configure” 脚本文件,这个文件配制你系统上的源文件,并确认你的系统已经可以编译它了。在通过“./configure”命令配制之后,通常可以通过“make”来编译程序。有一些程序还会支持通过“make check”命令来进行自检。把程序安装到目标目录中的命令通常是“make install”。

现在可以试着编译并运行你的程序了,从而确定它可以很好的工作并且在它安装或工作时不会破坏其它程序的运行。

另外,通常你还可以通过“make clean”(或者更好的“make distclean”)命令来清理build目录。有时还会有一个“make uninstall”命令来删除所有已经安装的文件。

2.3 软件包名称和版本

在开始打包时,源程序目录应当是绝对干净(原始)的,或者直接从刚刚解包的源代码目录开始。

为了让软件包能够正确地制作,你必须把程序原有的名字改成小写(如果它不是的话),并且你应该把源代码目录的名字改成<packagename>-<version>的形式。

如果程序的名字是由多于一个的英文单词组成的,那就把它改成一个单词,或者缩写的形式。例如,程序“John's little editor for X”软件包可以改成johnledx或者jle4x,或者随便什么你认为合适的,只要它符合一些很合理的限制,比如在20个字符以内。

另外要做的一件事情就是检查一下被包装在软件包里的程序的精确版本号(它将被包含在软件包的版本号中)。如果包装的软件并不是以X.Y.Z的方式来命名它的版本的,而是用比如日期一类的方式,那么就用那个日期来做版本号好了,只要在前面加上“0.0.”就可以了(直到上游的人决定发布一个好的版本比如1.0等时候)。因此,如果发行版或者snapshot的日期是1998年12月19日,你就可以使用0.0.19981219作为版本号。

有一些程序根本就没有数字的版本,在这种情况下,你就需要和上游维护者取得联系,看看他们是不是使用了什么别的版本跟踪方法。

2.4 首次“Debian化”

确定你在程序的原代码目录中,然后执行这个命令:

      dh_make -e your.maintainer@address -f ../gentoo-0.9.12.tar.gz

当然,要用你的E-mail地址换掉字符串“your.maintainer@address”,并用你的源代码文档的名字替换掉上面的文件名。你的这个E-mail地址将会被包含在changlog 项目和其它的文件中。参考dh_make(1)获得详细的信 息。

在执行这个命令后,你将会看到一些信息,它会问你你需要创建那种类型的软件包。Gentoo是一个单二进制软件包——它只创建一个二进制形式的软件包,也就是说只有一个.deb文件——所以我们按“s”键选择第一个选项,检查屏幕上的信息,然后按<enter>键确认。

在此次运行dh_make之后,上游的软件包将会被打包为gentoo_0.9.12.orig.tar.gz并放在父目录中,以便用diff.gz创建非Debian固有的源代码包。请注意文件名中的两个 关键点:

  • 包名称和版本是以“_”分割的。
  • 在之前“tar.gz”有“orig.”。

再说一下,作为一个新的维护者,我们不鼓励你创建复杂的软件包,譬如:

  • 生成多个二进制包的,
  • 库软件包,
  • 源文件格式不是tar.gz也不是tar.bz2,或者
  • 在源码包中包含的是不可发布的内容。

要说清这些问题并不是很难,但你确实需要了解更多一些的知识,因此在这里讲述关于它们的全部内容。

请注意你只能运行一次dh_make程序,如果你再次在同一个已经“Debian化”的目录中运行它,它将不能正常运行。这也意味着当你要发布你的软件的下一个版本时,你需要使用一些不同的方法。以后你会在 更新软件包, 第 9 章一部分中读到更多关于这个问题的内容。