1. 程式人生 > 實用技巧 >linux的軟體包管理器是什麼?是如何工作的?

linux的軟體包管理器是什麼?是如何工作的?

linux發行版本不同於其他系統的最大的一個點就是軟體包管理器。這裡您將瞭解到什麼是軟體包,什麼是軟體包管理器,它們是如何工作的,以及現有的可用的軟加包管理器。

Linux中的軟體包管理器是什麼?

簡單的解釋就是,軟體包管理器能夠讓使用者在開源系統中對軟體進行安裝,刪除,更新,配置以及管理等操作的工具。軟體包管理器可以是圖形應用就像是軟體中心,也可以是命令列工具就像是apt-get或者pacman。

什麼是軟體包?

軟體包通常指的就是應用程式,但是也可以是圖形介面程式,命令列工具或者軟體庫(被其他的軟體所依賴的),一個軟體包本質上包含了二進位制執行檔案,配置檔案有時候會有依賴資訊的封裝檔案。

在早年間,軟體的安裝通常是通過原始碼完成的,您可能需要參考一個檔案(通常被命名為readme)然後瞅瞅需要什麼軟體元件以及二進位制檔案的位置。一般來說包含配置指令碼檔案以及生成檔案,您需要自己編譯軟體有時候還需要自己解決依賴問題(有些軟體的安裝是需要其他軟體配合)。

為了解決這個麻煩事,linux的發行版本創造了獨特的軟體安裝形式,為想要安裝有元資料(版本號,描述)以及依賴的軟體的使用者,提供了可直接使用的二進位制檔案(提前編譯好的)

一個形象的比喻就是,你想吃蛋糕,你可以自己買原材料做一個,但也可以直接買現成的。

大概在九十年代中期,debian創造了.deb(DEB)為字尾的軟體安裝包,red hat創造了.rpm(RPM)字尾的軟體安裝包。編譯原始碼的安裝方法仍然存在,但是已經變成了一個選項,而且不是必選項。

軟體包管理器如何工作

提前說明白了,軟體包管理是一個通用的概念,並不是linux獨有的,對於不同的軟體和程式語言你都可以找到軟體包管理器,就比如pip就是python的軟體包管理,甚至是Atom文字編輯器都有自己的軟體包管理器。

上圖看看軟體包管理器如何工作(基於SUSE)

幾乎所有的linux的發行版本都有軟體庫,這個庫基本上就是軟體的集合。是的,因為linux的版本多,所以軟體庫已經不止一個了,在軟體庫裡,一般都包含一個軟體的不同版本。

軟體庫裡面還有一些元資料檔案,這些檔案一般包括軟體包的一些資訊(軟體包的名字,版本號,描述性檔案以及庫的名字等等)

您的軟體包管理器首先會與元資料進行互動,之後會在您的系統裡生成一個元資料的本地快取,當你執行軟體包管理器的更新指令的時候(就比如apt update命令),它就會通過軟體庫中的元資料來更新本地的元資料快取。

當您執行安裝命令時(就比如apt install),管理器就會自動指向之前的本地元資料快取,如果它能夠在快取中找到安裝包的資訊,它就會使用網路連線去連結到合適的軟體庫,並會在您的系統上安裝這個軟體之前首先下載這個軟體包。

一個軟體包可能會有一些依賴,這意味著您需要安裝一些其他的軟體包,軟體包管理器會注意到這些依賴,之後自動安裝您要安裝的軟體。

相似地,當您要使用軟體包管理器刪除軟體時,它會自動刪除,或者告訴您系統裡哪些是可以刪除的未被使用的包。

除了安裝,刪除軟體的基本功能以外,管理器還可以根據您自己的需求配置和管理軟體包。例如,您可以控制一些軟體的日常的更新版本,軟體包管理器還可以幹很多的事情。

軟體包管理器的不同種類

不同的系統可能會有不同的軟體包管理器,但是一個系統也可以擁有不止一個軟體包管理器。

例如,對於rpm檔案的使用就可以通過yum或者dnf軟體包管理器,而對於deb檔案,您具有基於apt-get以及aptitude的命令列軟體包管理器。

軟體包管理器並不是說一定要基於命令列,你還可以選擇圖形介面軟體包管理器工具就像是Synaptic,您使用的發行版本自帶的軟體中心也是軟體包管理器,即使它在背後執行apt-get或者DNF命令。

源:https://itsfoss.com/package-manager/

翻譯:daxuxu

排版:daxuxu

公眾號:archlinux

多多關注