
我的 Linux 生涯大部分時間都在使用 Debian,我一直在研究其他發行版,並且對它們在版本之間不提供平滑升級的程度感到非常驚訝。 Debian 是可以無限升級的,我現在已經升級了幾個主要的穩定版本。
我說的是像 Fedora(及其衍生品)這樣得到良好支援的發行版,甚至是 Ubuntu 及其衍生品。甚至像 CentOS 這樣穩定的面向伺服器的發行版也是如此。
是因為 Debian 的套件管理系統和套件升級腳本比其他發行版所提供的要先進得多嗎?
或者,無論發行版如何,在主要版本升級時從頭開始重新安裝總體上是一個更好的主意?
答案1
這是多種因素的結合。
大多數發行版都使用主要版本來實施重大的、有時是破壞性的變更。例如,Fedora 15 新增了 systemd,Ubuntu 在 6.10 中新增了 upstart。 Debian 在很多方面都是一個非常保守的發行版。巨大的、破壞性的改變是不受歡迎的。
例如,這就是 Debian 的發布週期相距甚遠的結果,因為它們需要修改每個重要的軟體包才能滿足新版本的標準。
Debian 的套件管理技術並不優於 Fedora 或 Ubuntu(顯然,因為它與 Ubuntu 相同),但 Debian 在文化上認為擁有一個平滑的升級系統很重要。
答案2
更具體地說,我在升級時遇到了許多發行版的問題。例如,Ubuntu 在不同版本之間大幅改變了其安裝的軟體包基礎。如果執行傳統的“dist-upgrade”,已安裝的軟體包將更新到新版本,但最終結果缺乏新的陣容變更。如果預設安裝中的某個軟體包被降級為“受支援”或更糟的“不受支援”,您仍然保留該軟體包。如果新軟體包現在處於預設安裝中,您將不會安裝它。儘管您的版本「技術上」是升級版本,但它並不反映新的版本體驗。同樣的情況也很準確,在比較CentOS5和CentOS6時,它們完全重新組織了它們的包裝名稱。
Debian 優先考慮平滑升級,但代價是如此劇烈的變化。這就是 Debian 在新功能上速度較慢的原因,對於他們的社區來說,這種權衡是可以接受的。為了呼應前面的答案,它與套件管理技術本身無關。我想說的是,不斷地重新安裝 Ubuntu 讓我感到疲憊不堪。
答案3
你所說的話並不適合整個家庭滾動發布分佈。
對於系統維護軟體來說,當僅升級系統的某些部分或在整個升級過程中保持配置一致性時,解決跨套件相容性問題更具挑戰性。各種軟體包需要進行調整才能彼此良好地協同工作。
這就是為什麼最簡單的(即在相同的開發時間努力下最可靠)提供系統更新的解決方案是定期準備完整的、徹底測試的、完整安裝的版本。紅帽等企業解決方案的立場是,必須為客戶提供可靠的系統,並盡可能長時間地避免因升級中斷而受到困擾。 (當然,小的升級和錯誤修復必須可用,甚至可以自動拉取)。這也是 CentOS 等免費伺服器發行版背後的一般理念。
對於系統開發人員來說,為最終用戶提供版本之間的無縫升級路線是一個巨大的挑戰。許多發行版選擇不為此犧牲他們稀缺的時間。許多流行的軟體包(例如 QT)很難升級,通常需要完全重新安裝。更重要的是,許多專案的開發工作量有所減少,或被新技術取代。對於系統包,這通常需要一些重大的系統重新設計。如果必須考慮到有些人想要從版本 C 升級到 D,但其他人會從 B 版或 A 版或中間的某些自訂狀態切換,那麼遷移過程可能會特別難以實施。
因此,正如您可能已經猜到的,最具挑戰性的方法是滾動發布。我不知道 Debian 方法的細節,但從你的描述中我可以看出它們處於中間位置。