眾所周知,在linux操作系統下,利用apt-get來安裝軟件是非常方便的。只要一個sudo apt-get install 軟件名;就可以輕易的解決軟件的安裝,最關鍵的是他可以解決其中存在的各種復雜的依賴關系,讓你不用為此頭疼,而在apt-get出現之前,利用dpkg或者更早之前的./configure;make;make install來安裝軟件真是無法想象,安裝完軟件A,提示你要安裝軟件B,好不容易安裝完了,又提示要安裝軟件C。。。。各種糾結!所以說apt這個高級包管理工具極大的方便了廣大的linux用戶,更降低了linux用戶的入門的門檻。好了,零零碎碎說了這么多廢話,咱們回歸正題。
為了搞清其中原理,我在網上折騰了半天,最后自己摸索了好久,終於有點頭緒,每當執行命令進行軟件的安裝或着更新,或者軟件源的更新時,apt會訪問/etc/apt/sources.list內的地址,並在該網站中找到對應系統的包信息例如我的操作系統是ubuntu,網站是deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse網易的,那么當我們執行安裝的命令時,他就會對應的訪問http://mirrors.163.com/ubuntu/dists/lucid/main/binary-i386/的packages.gz,這個文件是服務器上軟件包及其依賴關系的清單,並且用gzip壓縮過了。apt-get update使用這個清單來確定能夠獲得哪些補充的軟件包且他的內容會被保存在/var/lib/apt/lists內,通過訪問這個lists確定該軟件是否已安裝,是否是最新版本,依賴關系是否滿足,從而確定要更新內容,並進行更新,其安裝過程主要是由dpkg來完成。
總體上來說apt是傾向於下載的一個管理工具。