linux發行版本不同於其他系統的最大的乙個點就是軟體包管理器。這裡您將了解到什麼是軟體包,什麼是軟體包管理器,它們是如何工作的,以及現有的可用的軟加包管理器。
簡單的解釋就是,軟體包管理器能夠讓使用者在開源系統中對軟體進行安裝,刪除,更新,配置以及管理等操作的工具。軟體包管理器可以是圖形應用就像是軟體中心,也可以是命令列工具就像是apt-get或者pacman。
軟體包通常指的就是應用程式,但是也可以是圖形介面程式,命令列工具或者軟體庫(被其他的軟體所依賴的),乙個軟體包本質上包含了二進位制執行檔案,配置檔案有時候會有依賴資訊的封裝檔案。
在早年間,軟體的安裝通常是通過原始碼完成的,您可能需要參考乙個檔案(通常被命名為readme)然後瞅瞅需要什麼軟體元件以及二進位制檔案的位置。一般來說包含配置指令碼檔案以及生成檔案,您需要自己編譯軟體有時候還需要自己解決依賴問題(有些軟體的安裝是需要其他軟體配合)。
為了解決這個麻煩事,linux的發行版本創造了獨特的軟體安裝形式,為想要安裝有元資料(版本號,描述)以及依賴的軟體的使用者,提供了可直接使用的二進位制檔案(提前編譯好的)
乙個形象的比喻就是,你想吃蛋糕,你可以自己買原材料做乙個,但也可以直接買現成的。
大概在九十年代中期,debian創造了.deb(deb)為字尾的軟體安裝包,red hat創造了.rpm(rpm)字尾的軟體安裝包。編譯原始碼的安裝方法仍然存在,但是已經變成了乙個選項,而且不是必選項。
提前說明白了,軟體包管理是乙個通用的概念,並不是linux獨有的,對於不同的軟體和程式語言你都可以找到軟體包管理器,就比如pip就是python的軟體包管理,甚至是atom文字編輯器都有自己的軟體包管理器。
上圖看看軟體包管理器如何工作(基於suse)
幾乎所有的linux的發行版本都有軟體庫,這個庫基本上就是軟體的集合。是的,因為linux的版本多,所以軟體庫已經不止乙個了,在軟體庫里,一般都包含乙個軟體的不同版本。
軟體庫裡面還有一些元資料檔案,這些檔案一般包括軟體包的一些資訊(軟體包的名字,版本號,描述性檔案以及庫的名字等等)
您的軟體包管理器首先會與元資料進行互動,之後會在您的系統裡生成乙個元資料的本地快取,當你執行軟體包管理器的更新指令的時候(就比如apt update命令),它就會通過軟體庫中的元資料來更新本地的元資料快取。
乙個軟體包可能會有一些依賴,這意味著您需要安裝一些其他的軟體包,軟體包管理器會注意到這些依賴,之後自動安裝您要安裝的軟體。
相似地,當您要使用軟體包管理器刪除軟體時,它會自動刪除,或者告訴您系統裡哪些是可以刪除的未被使用的包。
除了安裝,刪除軟體的基本功能以外,管理器還可以根據您自己的需求配置和管理軟體包。例如,您可以控制一些軟體的日常的更新版本,軟體包管理器還可以幹很多的事情。
不同的系統可能會有不同的軟體包管理器,但是乙個系統也可以擁有不止乙個軟體包管理器。
例如,對於rpm檔案的使用就可以通過yum或者dnf軟體包管理器,而對於deb檔案,您具有基於apt-get以及aptitude的命令列軟體包管理器。
軟體包管理器並不是說一定要基於命令列,你還可以選擇圖形介面軟體包管理器工具就像是synaptic,您使用的發行版本自帶的軟體中心也是軟體包管理器,即使它在背後執行apt-get或者dnf命令。
源:翻譯:daxuxu
多多關注
軟體包管理器
軟體的關係形成一棵樹,安裝某軟體前必須安裝它依賴的軟體,解除安裝某軟體時必須解除安裝被它依賴的軟體,求解除安裝或安裝某軟體會影響多少軟體的狀態。include using namespace std const int n 1e5 10 int nxt n 1 to n 1 tot,head n v...
軟體包管理器
不舔題解 然而被prey安利了子樹修改用dfs序,碼的樹鏈剖分才是親生的樹鏈剖分 豪情壯志臉 明明 樹鏈剖分 四個字那麼長維薩不用縮寫呢 因為並不卵知縮寫到底是樹剖還是鏈剖啊啊啊 uoj128 bzoj4196 1 include2 include3 using namespace std 45 d...
Linux 軟體包管理器 rpm
目錄 軟體包管理器 rpm 簡述 rpm 安裝軟體 rpm 解除安裝軟體 rpm qa 模糊查詢已安裝的包 rpm qi 查詢軟體安裝資訊 rpm ql 查詢安裝路徑 1 在紅帽軟體包管理器 rpm 公布之前要想在 linux 系統中安裝軟體只能採取 原始碼包 的方式安裝,需要自行編譯 並解決依賴關...