所有套件都應該提供 tar 檔案來散布其發行版本。程式 foo
版本 m.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
目標的好方法。