你大概已经选好了你要制作的软件包。首先要做的事情是检查它是否已经在发行
版中了。如果你使用的是`稳定'发行版,那么你最好到软件包查询
页面
查一下。如果你使用的
是当前的`不稳定'发行版,可以用下面的命令来检查:
dpkg -s program dpkg -l '*program*'
如果软件包已经存在了,那么好,安装它! :-) 如果他碰巧是个孤儿——如果
它的维护者成为了"Debian QA Group"的成员,你就应该可以重新维护它。查询
孤儿软件包列表
和打算收养的软件包列表
可以确认软件包是否真的需要领养。
如果你获准收养一个软件包,那就获取它们的源代码(用 apt-get source packagename一类的命令)并检查它们。很不幸,这份文档中 并不包含关于收养软件包的详细信息。值得庆幸的是,当收养软件包时,你不 用花费很多时间在找出如何让其公主,因为已经有人为你做了初始的设置工 作。尽管如此,也请继续读下去,下面的很多建议也会对你所处的情况有用。
如果软件包是新的,并且你已经决定让它出现在Debian中,请按照下面的步骤来做:
正在制作中的软件包列表
检查是否没有其它人正在为打包同一个软件而工作。
如果已经有人正在做了,并且你觉得它对你很重要,就请和他们取得联系。
否则——找另一个没人维护的有趣程序吧。
Debian自由软件指导方针
中说的那样属于自由软件。如果它并不遵守这些规则但仍然可以以任意形式
发布,它也还可以被加入到`contrib'或者`non-free'部分中。如果你不确
定它究竟应该被放到哪里,可以把它的授权文字发到 debian-legal@lists.debian.org
问一下该怎么做。
当然,这些问题都是只是为了安全,并试着让你不至于在比如setuid的守护进 程等问题上犯错误而激怒了用户。当你有了在打包软件方面的更多经验时,你就可 以处理那种软件包了,但即便是富有经验的开发人员在他们疑惑时也会发邮件到 debian-mentors邮件列表咨询。那里的人们会很乐意提供帮助的。
要获得关于这些内容的更多帮助,请参考开发者参考手册。
第一件要做的事情就事找到并下载原始的软件包。我假定你已经从作者的主页 上找到它的源文件了。免费的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`命令来删除所有已经安装 的文件。
在开始打包时,源程序目录应当是绝对干净的,或者直接从刚刚解包的源代 码目录开始。
为了让软件包能够正确地制作,你必须把程序原有的名字改成小写(如果它不 是的话),并且你应该把源代码目录的名字改成<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作为版本号。
有一些程序根本就没有数字的版本,在这种情况下,你就需要和上游维护者 取得联系,看看他们是不是使用了什么别的版本跟踪方法。
确定你在程序的原代码目录中,然后执行这个命令:
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程序,如果你再次在同一个已经 "Debian化"的目录中运行它,它将不能正常运行。这也意味着当你要发布你的软 件的下一个版本时,你需要使用一些不同的方法。以后你会在 更新软件包, 第 9 章一部分中读到更多关于这个问题的内容。
Debian新维护人员手册
version 1.2, 2002年4月6日.joy-mg@debian.org