下一個:,上一個:,上一層:散布   [目錄][索引]


12.2 散布修補程式

如果程式很大,針對每個發行版本製作一組差異 (diff),對照先前的重要的發行版本,會很有用。

在這組差異的最前面,簡短說明這個版本是針對哪個版本,以及相對於哪個先前的版本。也說明人們還需要做什麼才能正確更新原始碼 (例如,在安裝差異之前刪除或重新命名某些檔案)。

製作差異的目的在於它們體積小。為了保持它們的體積小,排除使用者可以輕易更新的檔案。例如,排除 info 檔案、DVI 檔案、tags 表格、Bison 或 Flex 的輸出檔案。在 Emacs 差異中,我們排除編譯過的 Lisp 檔案,讓安裝程式重新編譯修補過的原始碼。

當你製作差異時,每個版本應該放在適當命名的目錄中——例如,gcc-2.3.2gcc-2.3.3。這樣一來,從差異本身就能清楚地知道哪個版本是哪個版本。

如果你使用 GNU diff 來製作修補程式,請使用選項 ‘-rc2P’。這會將任何新檔案放入輸出中,標示為「完全不同」。此外,修補程式的 context diff 標頭應該使用傳統 Unix 格式的世界協調時間 (Universal Time) 日期和時間,以便修補程式接收者可以使用 GNU patch 的 ‘-Z’ 選項。例如,你可以使用以下 Bourne shell 命令來建立修補程式

LC_ALL=C TZ=UTC0 diff -rc2P gcc-2.3.2 gcc-2.3.3 | \
gzip -9 >gcc-2.3.2-2.3.3.patch.gz

如果散布包含子目錄,那麼差異可能包含子目錄中的某些檔案。為了幫助使用者可靠地安裝這類修補程式,請給他們關於如何執行 patch 的精確指示。例如,這樣說

To apply these patches, cd to the main directory of the program
and then use ‘patch -p1’.   ‘-p1’ avoids guesswork in choosing
which subdirectory to find each file in.

測試你的修補程式是明智之舉,方法是將它應用於舊版本的副本,並檢查結果是否與新版本完全一致。


下一個:,上一個:,上一層:散布   [目錄][索引]