Debian-maint-guide/5

来自Ubuntu中文
Oneleaf留言 | 贡献2008年10月12日 (日) 20:44的版本 (新页面: = Debian新维护人员手册 = == 第 5 章 - debian/中的其它文件 == 你会看到在debian/子目录中还有几个已经存在的文件,它们大多数都是以“.ex”结尾...)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索

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的手册页,所以我利用例子和上游文档给出的信息写了一个。

5.9 menu.ex

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所提供的例 子文件。