23.2 FreeBSD-CURRENT vs. FreeBSD-STABLE

FreeBSD 有兩個發展分支:FreeBSD-CURRENT 及 FreeBSD-STABLE。本節將會陸續介紹,並介紹它們分別又是如何更新。 首先,先介紹 FreeBSD-CURRENT,接著再介紹 FreeBSD-STABLE。

23.2.1 使用最新的 FreeBSD CURRENT

這裡再次強調,FreeBSD-CURRENT 是 FreeBSD 開發的 “最前線”。 FreeBSD-CURRENT 使用者須有較強的技術能力, 而且應該要有能力自己解決困難的系統問題。 若您是 FreeBSD 新手, 那麼請在安裝前最好先三思。

23.2.1.1 什麼是 FreeBSD-CURRENT?

FreeBSD-CURRENT 是 FreeBSD 的最新版。它包含: 仍在研發階段、實驗性質的修改、過渡時期的機制, 這些東西在下一次正式 relase 的版本可能會有,也可能不會有的。 儘管有許多 FreeBSD 開發者每天都會編譯 FreeBSD-CURRENT source code, 但有時這些原始碼是無法編譯成功。 雖然,這些問題通常會儘快解決, 但 FreeBSD-CURRENT 到底是帶來浩劫或是多了想要用的新功能、改善, 這點主要取決於您更新原始碼的時機為何而定!

23.2.1.2 誰需要 FreeBSD-CURRENT?

FreeBSD-CURRENT 適合下列這三類人:

  1. FreeBSD 社群成員:積極專注於 source tree 的某一部份, 以及認為保持為 “current(最新狀態)” 為絕對需求的人。

  2. FreeBSD 社群成員:為了確保 FreeBSD-CURRENT 能夠儘可能地維持在最穩定的狀態, 而主動花時間解決問題的測試者。 此外,還有對 FreeBSD 能提出具體建議以及改善方向,並提出 patch 修正檔的人。

  3. 只是關心或者想參考(比如,只是閱讀, 而非執行)的人。 這些人有時也會做些註解,或貢獻原始碼。

23.2.1.3 FreeBSD-CURRENT 並不是 什麼?

  1. 追求最新功能。 聽說裡面有些很酷的新功能, 並希望成為您周圍的人中第一個嘗試的人, 因此將 FreeBSD-CURRENT 視為取得搶鮮版的捷徑。 儘管,您能夠因此首先瞭解到最新的功能, 但這也意味著若出現新的 bug 時,您也是首當其衝。

  2. 修復 bug 的速成法。 因為 FreeBSD-CURRENT 的任何版本在修復已知 bug 的同時,又可能會產生新的 bug。

  3. 無所不在的 “officially supported”。 我們會盡力協助上述 FreeBSD-CURRENT 的那三種類別的 “legitimate” 使用者, 但我們沒時間為他們提供技術支援。 這不代表我們很惡劣,或是不想幫助人(若是的話, 我們也不會為 FreeBSD 努力了) ,實在是因為我們分身乏術,無法每天回答數百個問題, 而同時繼續開發 FreeBSD。 可以確定的一點就是, 在改善 FreeBSD 或是回答大量有關實驗碼的問題之間, 若要做個選擇的話,開發者會選擇前者。

23.2.1.4 使用 FreeBSD-CURRENT

  1. 加入 freebsd-currentcvs-all 論壇。 這不單只是個建議,也是 必須 作的。 若您沒訂閱 freebsd-current ,那麼就會錯過別人對目前系統狀態的說明,而枯耗在別人已解的問題。 更重要的是,可能會錯失一些對己身所管系統安危相當重要的公告。

    cvs-all 上則可以看到每個 commit 紀錄, 因為這些記錄會連帶影響其他相關資訊。

    要訂閱這些論壇或其他論壇,請參考 http://lists.FreeBSD.org/mailman/listinfo 並點選想訂閱的部分即可。 至於其他後續步驟如何進行, 在那裡會有說明。

  2. 從 FreeBSD mirror 站 取得原始碼。 有兩種方式可以達成:

    1. csupcvsup 程式搭配位於 /usr/share/examples/cvsup 檔名為 standard-supfilesupfile。 這是大家最常推薦的方式,因為它可以讓您把整個 tree 都抓回來, 之後就只取有更新的部分即可。 此外,許多人會把 csupcvsup 放到 cron 以定期自動更新。 您須要自訂前述的 supfile 範例檔, 並針對自身網路環境以調整 csupcvsup 相關設定。

    2. 使用 CTM 工具。 若網路環境不佳 (上網費用貴,或只能用 email 而已) CTM 會比較適合您的需求。 然而,這也有一些爭議並且常抓到一些有問題的檔案。 因此, 很少人會用它。 這也註定了不能長期依賴這個更新方式。 若是使用 9600 bps modem 或頻寬更大的上網者,建議使用 CVSup

  3. 若抓 source code 是要用來跑的,而不僅只是看看而已, 那麼就抓 整個 FreeBSD-CURRENT,而不要只抓部分。 因為大部分的 source code 都會相依到其他 source code 環節部分, 若是您只編譯其中一部份,保證會很麻煩。

    在編譯 FreeBSD-CURRENT 之前,請仔細閱讀 /usr/src 內的 Makefile。 儘管只是升級部分東西而已,您至少也要先 裝新的 kernel 以及重新編譯 world。 此外,多多閱讀 FreeBSD-CURRENT 郵遞論壇 以及 /usr/src/UPDATING 也是必須的, 才能知道目前進度是怎樣以及下一版會有什麼新東西。

  4. 熱血!若您正在跑 FreeBSD-CURRENT, 我們很想知道您對於它的想法是什麼,尤其是加強哪些功能, 或該修正哪些錯誤的建議。 如果您在建議時能附上相關程式碼的話, 那真是太棒了!

23.2.2 使用最新的 FreeBSD STABLE

23.2.2.1 什麼是 FreeBSD-STABLE?

FreeBSD-STABLE 是我們的開發分支,主要的發行版就由此而來。 這個分支會以不同速度作修改變化,並且假設這些是第一次進入 FreeBSD-CURRENT 進行測試。 然而,這 仍然 屬於開發中的分支, 也就是說在某些時候,FreeBSD-STABLE 可能會、也可能不會符合一些特殊需求。 它只不過是另一個開發分支而已,可能不太適合一般使用者。

23.2.2.2 誰需要 FreeBSD-STABLE?

若您有興趣去追蹤、貢獻 FreeBSD 開發過程或作些貢獻, 尤其是會跟 FreeBSD 接下來的 “關鍵性” 發行有關, 應該考慮採用 FreeBSD-STABLE。

雖然安全漏洞的修補也會進入 FreeBSD-STABLE 分支, 但不必僅僅因此而 需要 去用 FreeBSD-STABLE。 FreeBSD 每項 security advisory(安全公告) 都會解說如何去修復有受到影響的版本 [1] ,若僅因為安全因素而去採用開發分支,雖然會解決現有已知問題, 但也可能帶來一些潛藏的問題。

儘管我們盡力確保 FreeBSD-STABLE 分支在任何時候均能正確編譯、運作, 但沒人能夠擔保它隨時都可以符合上述目的。 此外,雖然原始碼在進入 FreeBSD-STABLE 之前,都會先在 FreeBSD-CURRENT 開發完畢,但使用 FreeBSD-CURRENT 的人畢竟遠比 FreeBSD-STABLE 使用者來的少,所以通常有些問題,可能在 FreeBSD-CURRENT 比較沒人注意到,隨著 FreeBSD-STABLE 使用者的廣泛使用才會浮現。

由於上述這些理由,我們並不推薦 盲目追隨 FreeBSD-STABLE,而且更重要的是,別在原始碼尚未經完整測試之前, 就衝動把 production server 轉移到 FreeBSD-STABLE 環境。

若您沒有這些多的時間、精神的話,那推薦您使用最新的 FreeBSD 發行版即可,並採用其所提供的 binary 更新機制來完成升級轉移。

23.2.2.3 使用 FreeBSD-STABLE

  1. 訂閱 freebsd-stable list。 可以讓您隨時瞭解 FreeBSD-STABLE 的軟體編譯時的相依關係,以及其他需特別注意的問題。 開發者在考慮一些有爭議的修正或更新時,就會先在這裡發信說明, 給使用者有機會可以反應, 看他們對所提的更改是否有什麼建議或問題。

    cvs-all list 這邊可以看到每個 commit log, 其中包括了許多中肯的資訊,例如一些可能發生的邊際效應等等。

    想要加入這些通信論壇的話,只要到 http://lists.FreeBSD.org/mailman/listinfo 點下想訂閱的 list 即可。 其餘的步驟在網頁上會有說明。

  2. 若打算要安裝一個全新的系統,並且希望裝 FreeBSD-STABLE 每月定期的 snapshot,那麼請參閱 Snapshots 網頁以瞭解相關細節。 此外,也可從 mirror 站 來安裝最新的 FreeBSD-STABLE 發行版,並透過下列的的說明來更新到最新的 FreeBSD-STABLE 原始碼。

    若已裝的是 FreeBSD 以前的版本,而想透過原始碼方式來升級, 那麼也是可以利用 FreeBSD mirror 站 來完成。 以下介紹兩種方式:

    1. csupcvsup 程式搭配位於 /usr/share/examples/cvsup 檔名為 stable-supfilesupfile。 這是大家最常推薦的方式, 因為它可以讓你把整個 tree 都抓回來, 之後就只取有更新的部分即可。 此外,許多人會把 csupcvsup 放到 cron 以定期自動更新。 您須要自訂前述的 supfile 範例檔,並針對自身網路環境以調整 csupcvsup 相關設定。

    2. 使用 CTM 更新工具。 若網路不快或網路費用貴,那麼可以考慮採用。

  3. 一般而言,若常需存取最新原始碼,而不計較網路頻寬的話, 可以使用 csupcvsupftp。 否則,就考慮 CTM

  4. 在編譯 FreeBSD-STABLE 之前,請先仔細閱讀 /usr/src 內的 Makefile 檔。 儘管只是升級部分東西而已,您至少也要先 裝新的 kernel 以及重新編譯 world。 此外,多多閱讀 FreeBSD-STABLE 郵遞論壇 以及 /usr/src/UPDATING 也是必備的, 這樣才能知道目前進度是怎樣,以及下一版會有哪些新東西。

Notes

[1]

然而,這也不一定是正確,我們不可能永遠支援 FreeBSD 昔日的各種發行版本,儘管每個發行版發佈之後,都仍會持續支援數年之久。 若欲瞭解 FreeBSD 目前對於舊版的支援政策細節,請參閱 http://www.FreeBSD.org/security/

本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。