Debian-maint-guide/5
Debian新维护人员手册
第 5 章 - debian/中的其它文件
你会看到在debian/子目录中还有几个已经存在的文件,它们大多数都是以“.ex”结尾的,表明它们只是例子。仔细看一下它们。如果你希望使用其中任何一个功能,你需要做的事情是:
- 看一下相关的文档(提示:Debian政策手册),
- 如果需要就修改文件使其符合你的需求,
- 修改文件名如果有“.ex”后缀就去掉它,
- 修改文件名如果有“ex.”前缀就去掉它,
- 如果需要就修改“rules”文件。
在下面给出了一些经常会被用到的文件的解释。
5.1 README.Debian
所有的在原来的软件包和你的debian版本的软件包之间的细节及差异需要写在这里。
dh_make创建了一个缺省的,如下所示:
gentoo for Debian ----------------- <possible notes regarding this package - if none, delete this file> -- Josip Rodin <[email protected]>, Wed, 11 Nov 1998 21:02:14 +0100
由于我们不需要在这里写任何东西,我们就把它删掉了。
5.2 conffiles.ex
关于软件,有一件事情是很烦人的,那就是当你花费了很多的时间和精力定制好一个程序,只要一升级,你所有的定制就都会被丢弃了。Debian解决这个问题的方法是标注出配制文件,这样当你升级一个软件包时,你将会被询问是否要保留你原来的配制文件。
如果希望对让一个软件包可以做到这点,只要把每一个配制文件(通常在/etc)目录下的完整路径逐行加入到一个名叫conffiles的文件里面就可以了。Gentoo有一个配制文件,/etc/gentoorc,我们把他加入到文件conffiles中。
如果你自己的程序有一个配制文件并且会自己覆盖它,那么最好就不要把它标记为配制文件了,因为这样dpkg就总会会询问用户是否要修改它。
如果你的软件包总要求每个用户修改自己的配制文件,最好也不要把配制文件标记出来了。
你可以用用“maintainer scripts”来处理例子配制文件,要了解更多的信息请参 考postinst.ex, preinst.ex, postrm.ex, prerm.ex, 第 5.12 节。
如果你的程序根本没有conffiles,对你来说从debian/目录中删除conffiles就是很安全的了。
5.3 cron.d.ex
如果你的软件包需要计划任务正常运行才能够正常操作,你可以在这个文件中设 置它。
注意这里并不包括定期清除日志的任务;关于它,请参考dh_installlogrotate(1)和logrotate(8)。
如果你不需要,那就把它删了吧。
5.4 dirs
这个文件里指出了我们需要的但常规的安装过程(make install)并不会自动创建 的目录。
缺省情况下,它的内容如下所示:
usr/bin usr/sbin
注意最前面是没有斜线的。我们通常把它改成下面的样子:
usr/bin usr/man/man1
但这些目录在Makefile中已经创建了,所以我们不需要这个文件,并且打算把它 删了。
5.5 docs
在这个文件中,我们可以指定一些让dh_installdocs帮我们安装到临时目录中的文档的文件名。
缺省的情况下,他会包含所有已经存在于源代码目录最高层目录中的名为“BUGS”、 “README*”、“TODO”等的文件。
对于gentoo,我们还加入了一些其它的内容:
BUGS CONFIG-CHANGES CREDITS ONEWS README README.gtkrc TODO
我们可以删掉这个文件,取而代之的是在rules文件中的dh_installdocs命令后列出这里提到的文件的名字,如下所示:
dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \ README.gtkrc TODO
也许并不像你看到的这样,你自己的软件包可能根本就没有这些文件。在这种情况下,对你来说删掉这个文件是很安全的。但是不要删掉rules文件中的dh_installdocs,因为它还要被用于安装copyright和其它的一些东西。
5.6 emacsen-*.ex
如果你的软件包提供了一些可以在安装时进行字节编译的Emacs文件,你可以使用这些文件来设置它们。
通过命令dh_installemacsen(1)可以把它们安装到临时文件中,所以如果你要使用它不要忘了去掉rules文件中那一行上的注释。
如果你不需要这些,删掉它们。
5.7 init.d.ex
如果你的软件包是一个需要在系统启动时运行的守护程序,那么很显然你没有采纳我在开始时的建议,不是吗?:-)
这是一个/etc/init.d/脚本的通用骨架,所以你不得不对它进行大规模的修改。通过dh_installinit(1)可以把它安装 到临时目录中。
如果你不需要这些,删掉这个文件。
5.8 manpage.1.ex, manpage.sgml.ex
你的程序应该有一个手册页。如果它们没有,这里的每一个文件都是一个模板,你只要把它填好就可以了。
手册页通常用nroff(1)写成。manpage.1.ex这个例子也使用nroff写的。在man(7)的手册页中可以找到一个关于如何编写这样一个文件的简短说明。
如果你更希望些SGML而不时nroff,那么你可以使用manpage.sgml.ex模板。如果是这样,那么你就必需做下面这些事情:
- 安装软件包docbook-to-man
- 把docbook-to-man加到control文件的Build-Depends一行。
- 删除rules文件“build”规则中docbook-to-man调用前的注释
另外还要记得把文件名改成类似于gentoo.sgml的样子!
最后,手册页文件的名字应该包含它所描述的程序的名字。所以我们需要把 “manpage”改成“gentoo”。这个文件明中还以一个“.1”作为后缀,这表明它是一个关于用户命令的手册。一定要确保这个节编号是正确的。这里有一个关于手册页各个节的简短列表:
Section | Description | Notes 1 User commands Executable commands or scripts. 2 System calls Functions provided by the kernel. 3 Library calls Functions within system libraries. 4 Special files Usually found in /dev 5 File formats E.g. /etc/passwd's format 6 Games Or other frivolous programs 7 Macro packages Such as man macros. 8 System administration Programs typically only run by root. 9 Kernel routines Non-standard calls and internals.
所以gentoo的手册页应该叫做gentoo.1。在原来的源程序中,并没有gentoo.1的手册页,所以我利用例子和上游文档给出的信息写了一个。
X窗口系统的用户通常都会使用支持菜单的窗口管理器,这些菜单可以被定制用于启动程序。如果它们安装了Debian的menu软件包,那么系统就会创建一套包含有系统上每一个程序的菜单。
这里有一个缺省的由dh_make创建的menu.ex文件:
?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\ title="gentoo" command="/usr/bin/gentoo"
在冒号之后的第一个字段是“needs”,他指明了程序需要什么样的界面。可以把这个字段改成一个合适的值,比如“text”或者“X11”。
下面是“section”,它指出这个项目应当出现的菜单和子菜单。当前的可选节被列在文件/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1中。
“title”字段是程序的名字。如果你喜欢,可以用大写字母开头。但一定要使它保持简短。
最后,“command”字段用于运行程序。
现在我们要把菜单项改成下面的样子:
?package(gentoo): needs=X11 section=Apps/Tools title="Gentoo" command="gentoo"
你还可以加入其它的字段,比如“longtitle”、“icon”和“hints”等。参考menufile(5)、update-menus(1)和/usr/share/doc/debian-policy/menu-policy.html/可以了解更多信息。
5.10 watch.ex
这个文件用于配制程序uscan(1)和uupdate(1)(在软件包devscripts中)。它们可以用于监视你下载源代码的站点。
这里是我的配制:
# watch control file for uscan # Site Directory Pattern Version Script ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
提示:在创建了这个文件后,可以连接到Internet,并且试着在程序目录中运行 “uscan”命令。还要读手册哦!:)
5.11 ex.package.doc-base
如果你的软件包还有除了手册页以外的其它普通文档和info文档,你需要使用“doc-base”文件来注册它们,这样用户就能够用如dhelp(1)、dwww(1)或者doccentral(1)等工具来找到它们。
这通常包括/usr/share/doc/packagename/中的HTML、PS和PDF文件。
gentoo的doc-base文件gentoo.doc-base如下所示:
Document: gentoo Title: Gentoo Manual Author: Emil Brink Abstract: This manual describes what Gentoo is, and how it can be used. Section: Apps/Tools Format: HTML Index: /usr/share/doc/gentoo/html/index.html Files: /usr/share/doc/gentoo/html/*.html
关于安装的文件格式,请参考install-docs(8)和/usr/share/doc/doc-base/doc-base.html/中的doc-base手册。
5.12 postinst.ex, preinst.ex, postrm.ex, prerm.ex
这些文件叫做维护者脚本。它们位于软件包的控制区域中,并且在你安装、升级或删除软件包时,dpkg会调用他们。
现在,你应该尽可能避免修改任何维护者脚本,因为它们有一些复杂。要了解关于它们的更多信息请参考政策手册的第6章,而且还应该看看dh_make所提供的例 子文件。