下一节: , 上一节: 分发   [目录][索引]


12.1 分发 tar 文件

所有软件包都应该提供 tar 文件来分发他们的版本。程序 foom.n 版本的 tar 文件应该命名为 foo-m.n.tar。它应该解压到名为 foo-m.n 的子目录中。tar 文件不应该解压到当前目录的文件中,因为如果用户恰好解压到包含其他文件的目录中,这会很不方便。

以下是 Bison 的 Makefile 如何创建 tar 文件的方法。这种方法也适用于其他程序。

dist: bison.info
        echo bison-`sed -e '/version_string/!d' \
          -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c` > .fname
        -rm -rf `cat .fname`
        mkdir `cat .fname`
        dst=`cat .fname`; for f in $(DISTFILES); do \
           ln $(srcdir)/$$f $$dst/$$f || { echo copying $$f; \
             cp -p $(srcdir)/$$f $$dst/$$f ; } \
        done
        tar --gzip -chf `cat .fname`.tar.gz `cat .fname`
        -rm -rf `cat .fname` .fname

指向其他文件系统的符号链接源文件不能使用 ln 安装到临时目录中,因此如果 ln 失败,请使用 cp

使用 Automake 是编写 dist 目标的好方法。