Next Previous Contents

6. 好的发布创建惯例

这些惯例描述了在有人下载你的发布包的时候,它们看起来是怎样的,如何检索以及如何解包。

6.1 确保tar包总是打开到一个单独的新目录中

一个困扰大部分新的开发者的错误是创建的tar包将把它的文件和目录解包到当前目录中,这潜在地与 已经位于那里的文件发生冲突。 决不要这样做!

相反,确认你的存档文件在工程之后都含有一个通用目录的部分名称,以便它们能够被解包到一个单独 的在当前目录的一个顶层目录中。

假定你的发布目录名为`foobar',而且SRC包含了你所发布文件的列表,有个makefile诀窍可以完成这项任务。 它需要GNU tar 1.13

VERS=1.0
foobar-$(VERS).tar.gz:
        tar --name-prefix='foobar-$(VERS)/' -czf foobar-$(VERS).tar.gz $(SRC)

如果你的tar是老式的,就向下面那样作:

foobar-$(VERS).tar.gz:
        @ls $(SRC) | sed s:^:foobar-$(VERS)/: >MANIFEST
        @(cd ..; ln -s foobar foobar-$(VERS))
        (cd ..; tar -czvf foobar/foobar-$(VERS).tar.gz `cat foobar/MANIFEST`)
        @(cd ..; rm foobar-$(VERS))

6.2 含有一个README

含有一个名为README或者READ.ME的文件,它是你的源代码发布的路标。 按照过去的习惯,该文件是勇敢的探索者在解包源代码之后阅读的第一个文件。

包含在README中的有用信息包括:

6.3 尊重并服从标准的文件命名惯例

甚至在阅读README之前,你的勇敢的探索者就已经察看了你的解包的发布中顶层目录中的文件名。 这些名字本身就传达了信息。通过服从某种标准命名惯例,你可以为探索者提供下一步应该阅读什么 的有价值的线索。

这里是一些标准顶层文件名以及它们的含义。不是每个发布都需要所有这些文件。

README或者READ.ME

路标文件,首先阅读

INSTALL

配置、创建与安装指南

CREDITS

工程贡献者的列表

NEWS

近期的工程新闻

HISTORY

工程的历史

COPYING

工程的许可证条款(GNU惯例)

LICENSE

工程的许可证条款

MANIFEST

发布中文件的列表

FAQ

为工程提供的普通文本的常见问题解答(FAQ)文档

TAGS

为使用Emacs或者vi而生成的tag文件

总的习惯是,全部由大写字母构成的文件名是人类可读的关于包的元信息(metainformation) ,而不是创建中的成分。

6.4 提供RPMs

可安装的二进制包的事实标准(de-facto standard)格式由Red Hat包管理器,RPM所使用。 它出现在大部分流行的Linux发行版中,而且所有其它Linux发行版都有效地支持它 (除了Debian和Slackware;而且Debian也可以从RPM中安装)。

因此,在你的工程站点提供源代码tar包的同时,提供可以安装的RPM包是个好主意。

对你来说,把你的源代码tar包和从你的Makefile中制作RPM的产物一同包含在RPM spec 文件中也是个好主意。spec文件应该使用扩展名`.spec';这就是rpm -t选项如何在tar包中 寻找它的方法。

对于特殊风格的地方,通过分析Makefile或者version.h,使用自动添加正确的版本号的 shell脚本来生成你的spec文件。


Next Previous Contents