很多人吹噓 Linux 穩(wěn)定,為什么普遍 Ubuntu 會崩呢?
在軟件的更新速度和穩(wěn)定性上,Ubuntu選擇了更新速度。在是否信任用戶的問題上,Ubuntu選擇了認為用戶是不被重視的。
Linux各種發(fā)行版有自己的風(fēng)格,但都逃不掉一個選擇,就是選擇最新的軟件,還是選擇保持穩(wěn)定。對單一軟件而言,版本的新舊與穩(wěn)定性是不存在確認的關(guān)聯(lián)的。但如果是構(gòu)成一個軟件體系就存在密切的關(guān)聯(lián)了。
在各種Linux發(fā)行版里,有選擇追求穩(wěn)定的,比如各種企業(yè)級發(fā)行版和Debian。也有極端追求軟件更新的,如Ubuntu和Gentoo。這里的區(qū)別是,發(fā)行版如果選擇追求穩(wěn)定,則需要一開始就確認大量基礎(chǔ)第三方庫的版本,確保這些版本之間可以協(xié)調(diào)起來穩(wěn)定運行。同時選擇各類軟件包的版本時,也要考慮這些第三方庫的兼容性。在這些兼容性都確定下來后,由大量的軟件包維護者來對軟件進行測試和跟蹤調(diào)試,遇到bug也會通過與原作者溝通或者打patch的方式來修復(fù)軟件的問題。
這個過程會使得發(fā)行版里各種軟件經(jīng)過確認認為是穩(wěn)定的。但這個過程其實非常耗時,導(dǎo)致一個穩(wěn)定的發(fā)行版對外發(fā)布時,內(nèi)部包含的很多軟件都已經(jīng)落后于最新版本了。
這里的典型是Debian發(fā)行版。每次啟動一個版本時,先是大家在SID版里可以隨便用最新的軟件胡搞。最終確定下來一些基礎(chǔ)軟件庫后,開始形成一個TESTING版,此時軟件包維護者就開始大量的測試和接受用戶反饋,修復(fù)BUG了。這個過程要經(jīng)歷大約2年的時間。最終無數(shù)的軟件包維護者都認可了這個TESTING版足夠穩(wěn)定了。就會形成一個RELEASE版。這就是為啥每次Debian的Release里都會包含那么多很舊的軟件。
而Ubuntu則是追求軟件更新速度。其標(biāo)準(zhǔn)做法是每半年一個Release,Release直接基于Debian TESTING版??梢姺€(wěn)定性是肯定遠遠不如Debian的,但可以實現(xiàn)Ubuntu所追求的軟件版本盡量新。就算是每隔2年多的一個Ubuntu LTS(Long Time Support,長期維護版)其穩(wěn)定性還是比照Debian差了一截。
Ubuntu追求軟件的更新速度也不全是缺點,優(yōu)點也有不少。比如新版本的軟件通??梢杂蒙细碌墓δ堋6布?qū)動也是如此。所以買了比較新的電腦硬件,很多時候只有Ubuntu能無痛的用起來。
另外一個Ubuntu穩(wěn)定性較差的根源在于Ubuntu的產(chǎn)品經(jīng)理思維。這是個長期以來值得討論的問題,即:用戶是不是可以不被重視的?認為可以不重視的思路,會把盡量多的選擇交給用戶,不要做多余的隱藏操作。認為用戶可以不被重視的思路,則盡量隱藏控制和配置細節(jié),并以開發(fā)者的主管意愿去做一些隱藏的操作。
而Ubuntu選擇了后者。于是Ubuntu表面看起來非常適合小白用戶,隱藏了很多技術(shù)細節(jié)。但背后偷偷摸摸做了很多自動運行的事情。自2005年首次嘗試Ubuntu至今,無數(shù)次的遇到了手工修改好的配置轉(zhuǎn)眼就被Ubuntu給改回去的情況。尤其是輸入法等與UI相關(guān)的配置。
這個問題上,過去10年來,微軟的Windows也曾反復(fù)糾結(jié)過。之前因為安全問題曾經(jīng)很糾結(jié)的選擇信任用戶。于是包括關(guān)機都需要填寫個理由這種事情都干的出來。但自打阿三做了微軟的CEO后,選擇了相反的路線,即認為用戶可以不被重視。所以各種不信任用戶,偷偷更新,強制更新之類的都出來了。
所以,可以構(gòu)建一個二維的矩陣,維度分別是穩(wěn)定性和信任用戶。Ubuntu所在的象限就是低穩(wěn)定性高更新頻度,且不信任用戶。Gentoo所在象限是高更新頻度(比Ubuntu還高),且信任用戶。Debian選擇低更新頻度高穩(wěn)定性,且信任用戶。如果希望不要像Debian那么保守而穩(wěn)定,但也不想不被重視,可以考慮Centos。