Linux依賴管理詳解

https://www.jianshu.com/p/c6936efe5b58

apt是Debian系列的Linux操作系統的包管理工具,Ubuntu是使用apt來進行包管理的。現在以apt爲例講解Linux包管理原理。


apt工作原理

我們可以直接在Linux主機上編譯源代碼生成可執行文件,然後使用可執行文件,這稱之爲源碼安裝。但是由於源碼安裝需要耗費大量的計算時間,所以有人會在各種型號的機器、各種Linux操作系統上編譯源碼編譯生成相應的二進制文件,放到對應的服務器上,供大家直接下載使用。而apt就是針對第二種方法的管理軟件。

apt採用集中式的軟件倉庫機制,將各式各樣的軟件分門別類的放在軟件倉庫之中,從而進行有效的組織和管理。然後,將軟件倉庫放置在許多鏡像服務器中,並保持基本一致。這樣一來,所有的用戶都能獲取最新的軟件安裝包。對用戶而言,這些鏡像就是軟件源。
由於用戶所處網絡的不同,無法隨意的訪問各個鏡像站點。爲了能讓用戶有選擇的訪問鏡像站點,使用了軟件源配置文件/etc/apt/sources.list列出最合適訪問的鏡像站點的地址

/etc/apt目錄內容如下:

  • /etc目錄是Linux下的一個關鍵目錄,存放各種配置文件,包括apt的配置文件。可以在/etc/apt/中找到apt相關的配置
  • /etc/apt/source.list文件中記錄各種鏡像網站,也就是我們所說的源

source.list中是官方指定的源軟件,比如:vim、g++等最基礎的軟件。但是除了官方會發布軟件外,還有許多第三方提供的好用的軟件(比如:sublime、wine等),於是第三方也會發布自己的軟件源,這些源信息存放在/etc/apt/sources.list.d目錄中

/etc/apt/sources.list.d目錄如下:

apt-get update

軟件源(.list文件)只是告訴了Linux系統可以訪問的鏡像站點地址,但是鏡像站點上具體有什麼軟件並不清楚,如果每安裝一個軟件包就在鏡像站點上搜索一遍效率是很低的。因此,就有必要爲這些軟件資源列一個清單,這個清單就是索引文件,用來讓系統查找包的。(本質上就是本地緩存,緩存對應鏡像服務器上的資源信息)

在執行了apt-get update命令後,apt會自動聯網尋找source.list和source.list.d文件夾中的list文件中的list對應的Package/Sources/Release列表文件,如果存在則下載,存放在/var/lib/apt/lists目錄中。只有lists目錄下有的軟件,纔可以通過apt install安裝
/var/lib/apt/lists目錄如下:

需要說明一下/var目錄,是Linux系統中存放變量的文件夾,所謂變量是兩臺安裝相同Linux系統的物理節點中所不一樣的東西

apt-get install

apt-get install是下載命令,下載的軟件都會存到/var/cache/apt/archives下。
apt還會檢查Linux系統的包依賴關係,簡化了用戶安裝和卸載包的過程。
要下載一個軟件包時,大概需要4步:
1.掃描本地存放的軟件包更新列表,找到最新版本的軟件包。
2.進行軟件包依賴關係檢查,找到支持該軟件的所有軟件包。
3.從鏡像站點中下載相關軟件包(包含所依賴的軟件包),並存放在/var/cache/apt/archive
4.解壓軟件包,並自動完成應用程序的安裝和配置。

apt-get update

正如前面說的,要想使用apt-get下載安裝軟件,需要去/etc/apt/source/list中的鏡像源地址中去下載,那麼我們僅僅是知道去哪裏下載,鏡像源地址中有什麼軟件,我們並不清楚,所以需要使用apt-get update來刷新軟件的索引,從而確定我們要的軟件在鏡像站點中是否存在。
apt-get update會掃描每個鏡像站點,併爲該站點所具有的軟件包資源建立索引文件,存放在本地的/var/lib/apt/list中。在使用apt-get命令執行安裝或者更新操作時都會依賴這些索引文件,所以在每次更新或者安裝前應該使用apt-get update命令來刷新索引,從而獲取最新的軟件資源。

apt-get upgrade

將系統中所有的軟件包一次性升級到最新版本。

提示:如果你和我一樣,創建了一個docker鏡像文件,建議不要使用apt-get upgrade命令,因爲鏡像其實就是系統的一個“快照”,這個鏡像剛好滿足了我們程序的需求,如果使用了apt-get upgrade命令後將會使得鏡像變得很大,而且每次構建鏡像時也會耗費更多時間。一個優秀的鏡像的原則是,在滿足程序需求的同時,體積越小越好。

另外,在下載完成後可以刪除/var/lib/apt/lists/中索引文件,從而減小鏡像的體積。


 

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