ubuntu APT-GET工作原理


原文鏈接:http://kurenai.elastos.org/2013/05/02/ubuntu-apt-get%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86/


先介紹幾個和apt-get相關的目錄:

/var/lib/dpkg/available
文件的內容是軟件包的描述信息, 該軟件包括當前系統所使用的 Debian 安裝源中的所有軟件包,其中包括當前系統中已安裝的和未安裝的軟件包.

/var/cache/apt/archives
目錄是在用 apt-get install 安裝軟件時,軟件包的臨時存放路徑

/etc/apt/sources.list
存放的是軟件源站點, 當你執行 sudo apt-get install xxx 時,Ubuntu 就去這些站點下載軟件包到本地並執行安裝

/var/lib/apt/lists
使用apt-get update命令會從/etc/apt/sources.list中下載軟件列表,並保存到該目錄

APT工作原理:

Ubuntu採用集中式的軟件倉庫機制,將各式各樣的軟件包分門別類地存放在軟件倉庫中,進行有效地組織和管理。然後,將軟件倉庫置於許許多多的鏡像服務器中,並保持基本一致。這樣,所有的Ubuntu用戶隨時都能獲得最新版本的安裝軟件包。因此,對於用戶,這些鏡像服務器就是他們的軟件源(Reposity)。

然而,由於每位用戶所處的網絡環境不同,不可能隨意地訪問各鏡像站點。爲了能夠有選擇地訪問,在Ubuntu系統中,使用軟件源配置文件/etc/apt/sources.list列出最合適訪問的鏡像站點地址。

apt-get的更新過程:
執行apt-get update
程序分析/etc/apt/sources.list
自動連網尋找list中對應的Packages/Sources/Release列表文件,如果有更新則下載之,存入/var/lib/apt/lists/目錄
然後 apt-get install 相應的包 ,下載並安裝。

即使這樣,軟件源配置文件只是告知Ubuntu系統可以訪問的鏡像站點地址,但那些鏡像站點具體都擁有什麼軟件資源並不清楚。若每安裝一個軟件包,就在服務器上尋找一遍,效率是很低的。因而,就有必要爲這些軟件資源列個清單(建立索引文件),以便本地主機查詢。

apt-get install 下載的軟件存放到 /var/cache/apt/archives/下。

同時,APT能夠檢查Ubuntu Linux系統中的軟件包依賴關係,大大簡化了Ubuntu用戶安裝和卸載軟件包的過程。

apt-get install原理:
deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted

可通過瀏覽器找到

apt-get 每次都會讀取這個文件,從而獲取的包的信息。從Packages.gz中獲取到所有包的信息。Packages.gz中包含的信息有:

包名,優先級,類型,維護者,架構,源文件(source),版本號,依賴包,衝突性信息,包大小,文件的下載路徑,MD5sumSHA1,包描述,Xul-Appid—應用程序idBugs信息,OriginSupported

Packages中的一個包信息實例:

Package: abrowser
Priority: optional
Section: web
Installed-Size: 153
Maintainer: Ubuntu Mozilla Team <[email protected]>
Architecture: amd64
Source: firefox
Version: 11.0+build1-0ubuntu4
Depends: firefox (>= 9.0)
Filename: pool/main/f/firefox/abrowser_11.0+build1-0ubuntu4_amd64.deb
Size: 8940
MD5sum: e8781af38a6de76126d190fc10a14bf2
SHA1: 408abd5f960d4b02bc18581df348954eb7620772
SHA256: cdfad0e4435c035b3115bdec08d79ccfc68bf9480e89df9270b3b6befa348699
Description: Safe and easy web browser from Mozilla – transitional package
Description-md5: e89058e4775caff7d26313fa8811675e
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m

從這個信息段中可以看出來,實際的deb包放在pool/main/f/firefox/abrowser_11.0+build1-0ubuntu4_amd64.deb,通過瀏覽器同樣可以找到。從中也可以看到Depends一項中的依賴需求。

待續…

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