ubuntu APT-GET工作原理


sudo apt-get update 執行這條命令后計算機做了什么?

無論用戶使用哪些手段配置APT軟件源,只是修改了配置文件——/etc/apt/sources.list,目的只是告知軟件源鏡像站點的地址。但那些所指向的鏡像站點所具有的軟件資源並不清楚,需要將這些資源列個清單,以便本地主機知曉可以申請哪些資源。

用戶可以使用“apt-get update”命令刷新軟件源,建立更新軟件包列表。在Ubuntu Linux中,“apt-get update”命令會掃描每一個軟件源服務器,並為該服務器所具有軟件包資源建立索引文件,存放在本地的/var/lib/apt/lists/目錄中。 使用apt-get執行安裝、更新操作時,都將依據這些索引文件,向軟件源服務器申請資源。因此,在計算機設備空閑時,經常使用“apt-get update”命令刷新軟件源,是一個好的習慣。

 

sudo apt-get install XXX 后計算機做了什么?

使用“apt-get install”下載軟件包大體分為4步:第一步,掃描本地存放的軟件包更新列表(由“apt-get update”命令刷新更新列表,也就是/var/lib/apt/lists/),找到最新版本的軟件包;第二步,進行軟件包依賴關系檢查,找到支持該軟件正常運行的所有軟件包;第三步,從軟件源所指 的鏡像站點中,下載相關軟件包;第四步,解壓軟件包,並自動完成應用程序的安裝和配置。

 

sudo apt-get upgrade 后計算機做了什么

使用“apt-get install”命令能夠安裝或更新指定的軟件包。而在Ubuntu Linux中,只需一條命令就可以輕松地將系統中的所有軟件包一次性升級到最新版本,這個命令就是“apt-get upgrade”,它可以很方便的完成在相同版本號的發行版中更新軟件包。在依賴關系檢查后,命令列出了目前所有需要升級的軟件包,在得到用戶確認后,便開始更新軟件包的下載和安裝。當然,apt- get upgrade命令會在最后以合理的次序,安裝本次更新的軟件包。系統更新需要用戶等待一段時間。

 

升級到新版本

Ubuntu Linux會不斷推出新的版本,無論是通過Internet,還是使用光盤(由ISO鏡像文件刻錄的安裝光盤),使用“apt-get dist-upgrade”命令可以實現Ubuntu系統從一個版本直接升級到另一個新版本。例如,從Ubuntu的一個發行版本 dapper(version 6.10)升級到feisty(version 7.04)。

這個升級過程包括3步:

  ●    第一步,需要修改軟件源配置文件的各個配置項中的版本標識。類似於將以下配置項。

deb http://cn.archive.ubuntu.com/ubuntu/  dapper main restricted

修改為:

deb http://cn.archive.ubuntu.com/ubuntu/  feisty  main restricted

  ●    第二步,使用“apt-get update”命令刷新軟件包更新列表。

  ●    第三步,使用“apt-get dist-upgrade”命令為系統升級新的版本。

從以下命令的執行結果可以看出,“apt-get dist-upgrade”要比“apt-get upgrade”要復雜的多,必須要籌划整個系統的升級過程,其中包括列出所有需要卸載、安裝和升級的軟件包。這個升級過程中的時間和空間消耗是相當大的。

wdl@wdl-desktop:~$ sudo apt-get  dist-upgrade

 

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

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

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

/etc/apt/sources.list
存放的是軟件源站點

/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),版本號,依賴包,沖突性信息,包大小,文件的下載路徑,MD5sum,SHA1,包描述,Xul-Appid—應用程序id,Bugs信息,Origin,Supported

Packages中的一個包信息實例:

Package: abrowser
Priority: optional
Section: web
Installed-Size: 153
Maintainer: Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com>
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一項中的依賴需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM