其實這個問題可以歸結為Linux為什麼沒有統一的發行版。幾大主流的發行版一個比較明顯的差異在於對軟體版本的支持程度。

Debian/Red Hat系很多被用在生產系統上,對軟體的要求是穩定。所以他們每個版本支持的軟體基本上固定在一些大版本上,會不時加入一些bug修復和安全更新,但是不會大幅躍進到新的大版本。這些固定的大版本都是經過嚴格測試的,所以更加可靠。

而Arch/Gentoo系列則多用於桌面系統,採用滾動更新的策略。用戶可以在第一時間用到最新的版本,但是也存在遇到bug和安全漏洞的風險。不過桌面用戶更多考慮的是用到最新的功能,對安全性可靠性的要求並不高。

正是這個差異產生了不同的發行版,從而使用不同的包管理器。


Linux是內核,所謂的Linux系統大多數都是GNU/Linux,都屬於"Linux發行版",不同的發行版是不同的組織做出來的,每個組織最開始的意圖,發行版的特性和遵循的哲學不一樣,從而打包軟體的方式不一樣,包管理器顯然不能統一


首先 linux 特指內核,而這些發行版準確說 GNU/Linux 在基礎上添加了軟體包。

那麼,不同的人,它就有不同的添法。

用途不一樣,那導致的結果有很大程度不一樣。

ubuntu 社區覺得debian的apt包管理器好用。 redhat/centos 陣營。archlinux 陣營......

大家想法和需求都不一樣,如何能夠統一?


首先各個Linux發行版的包管理器技術上可以實現互用,比如你可以在arch上安裝apt。

其次Linux發行版山頭林立,誰有能耐發號施令統一包管理器?紅帽有權讓Ubuntu用dnf替換apt嗎?是FSF,還是Linux Kernel Organization有能耐?很抱歉,它們都做不到?


我的體會,包管理器最大的用處是解決不同軟體的依賴問題。但是依賴問題非常複雜,簡單說有兩大流派

  1. 始終用最新的,全部的基礎庫如libc, openssl會一直更新,應用層軟體也始終是最新的。典型就是arch的pacman
  2. 固定在一個經過驗證的版本不動,只做安全補丁,導致應用軟體也會固定在某個版本區間。典型就是debian的apt

不同策略各有適用場景,沒法統一。

選發行版就是選包管理器,也等於選了某種風格。當然你可以裝多個包管理器,我就曾在gentoo上編譯過pacman,但受限於對機制的理解,更新時把libc等底層包升得版本不匹配,導致整個系統不可用。


你直接問為什麼沒有統一的操作系統不就完了?


前有apt後有yum現在還有vcpkg,何言無物可用?


18路諸侯,誰也不服誰。

目前主要是兩大門派:

apt

dnf


因為包管理這東西對Linux來說不是必須的


推薦閱讀:
相关文章