Linux平臺上的各種包管理

曾幾何時,Linux平臺上配置最讓人頭疼的就是安裝軟件時的各種組件依賴,應用都是靠着其他應用一級級的組合而成。
也就是說一個軟件很像一座冰山,我們看到的只是上面的一小部分,而構成它功能的各種組件則是海平面下面那個更大的部分。
使用包管理器最大的好處就是,可以無視海平面下的部分,無須繁瑣地一次次下載、安裝,管理器可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包。

對面非常複雜的組合關係,平臺方都做了自己的依賴包管理器。今天我們就來梳理一下linux裏那些主流的包管理器。

Linux陣營

因爲包管理涉及到不同的系統版本,很有必要開始要先說一下Linux世界形勢。

Linux經過幾十年的發展,形成了商業和社區共同繁榮的局面,市面上流行的版本既有商業公司的收費產品也有社區維護的免費版本。

這其中商業陣營代表公司就是Redhat,社區陣營代表則是Debian。具體到產品Redhat有收費的Redhat enterprise版,也有他支持的FedoraCentos社區版。而Debian陣營主流是Debian和Ubuntu

隨着服務器操作系統Linux佔的份額越來越大,免費的Debian和Centos已經成爲服務器系統的主要選擇,而Ubuntu在個人桌面系統發展的則更好一些。

操作系統級包管理

無論收費版還是社區免費版都會優先使用自己陣營的包管理器,我們先有了上面的陣營概念,就能更容易理解和分類各種包管理了。

陣營分支 包類型 後綴 包管理器
Debian、Ubuntu dkpg deb apt
Redhat、Centos、Fedora rpm rpm yum

用過linux的同學,對上面的apt或者yum都該很熟悉吧,只要安裝軟件少不了要和他們打交道的。其實這裏的dkpg或者rpm軟件包都能像win10的exe一樣安裝的,只不過爲了減少處理和其他包依賴的問題,有人幫我們準備好了更智能的安裝方法:apt和yum > [1]。

編程語言級包管理

說完了操作系統包管理,在程序員寫的各種編程語言中也有着程序包的依賴問題,同樣也有在各式各樣的包管理器,
下面列出了主流編程語言對應的包管理器。

編程語言 包管理器
php composer
python pip
javascript npm,yarn
node npm,yarn
ruby rubygems
java maven,gradle,npm

從表中可以看出,大部分編程語言都有自己專屬的包管理工具,其中facebook還爲類js語言開發了一個yarn管理JavaScript包。Java這邊由於歷史原因,沒有官方包管理工具,但實在是影響力大,於是就有各種第三方相繼支持了java的程序包管理。

這裏沒有介紹各種包的詳細用法,只是單擺浮擱的把各種包管理梳理了一遍,不理清這些關係,用的時候總是容易弄混。記得用Eclipse開發java的時候,爲了引入一些功能,要去各個網站下載jar包,再拷貝引入到自己工程裏,還要查詢各種不兼容的異常解決辦法,真是超級麻煩,廢了太多的時間和精力,想想現在真的太幸福了。


  1. Redhat這邊還有個DNF正在成爲主流,以後會逐步替換yum ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章