原文鏈接:http://hackerxu.com/2014/12/03/apt_get.html
apt-get工作順序
1 查詢源列表
apt命令會訪問/etc/apt/sources.list
源列表.(這個源列表可以添加好多源,每次都選中開頭的有效源)
deb http://mirror.neu.edu.cn/ubuntu/(網址) trusty main restricted (版本號)
我的這個是東大的源.
2 查詢Packages.gz
Main 的包的相關信息均在 dists/lucid/main/binary-i386/下。不是把包放在這裏就行了,還需要生成Packages.gz的包文件,因爲apt-get 每次都會讀取這個文件,從而獲取的包的信息。
從Packages.gz中獲取到所有包的信息,然後apt-get就可以通過它找到所有的包並且自動下載安裝了。
來看看Packages.gz都有什麼吧(下面是python包的信息):
Package: python
Priority: important
Section: python
Installed-Size: 640
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Matthias Klose <[email protected]>
Architecture: all
Source: python-defaults
Version: 2.6.5-0ubuntu1
Replaces: python-base, python-xmlbase, python2.3 (<= 2.3.2-6)
Provides: python-ctypes, python-email, python-plistlib, python-wsgiref, python-xmlbase
Depends: python2.6 (>= 2.6.5), python-minimal (= 2.6.5-0ubuntu1)
Suggests: python-doc (>= 2.6.5-0ubuntu1), python-tk (>= 2.6.5-0ubuntu1), python-profiler (>= 2.6.5-0ubuntu1)
Conflicts: libboost-dbg (<< 1.34.1-15ubuntu3), libboost-python-dev (<< 1.34.1-15ubuntu3), libboost-python1.35-dev (<< 1.35.0-8ubuntu5), libboost1.35-dbg (<< 1.35.0-8ubuntu5), pitivi (<< 0.11.3-1ubuntu1), python-aubio (<< 0.3.2-2ubuntu3), python-base, python-bz2, python-central (<< 0.5.5), python-csv, python-freevo (<< 1.8.1-3ubuntu3), python-xmlbase, python2.1 (<= 2.1.2), python2.3 (<< 2.3.5-14), qmtest (<< 2.4-5ubuntu1), ufw (<< 0.27~r416)
Filename: pool/main/p/python-defaults/python_2.6.5-0ubuntu1_all.deb
Size: 147766
MD5sum: 457b6f467e45287b8430833ec7d2f9ec
SHA1: 3d67dd0ebf003ede05dbae034616c1f519ea5962
SHA256: 5aa5086459e04815980329b66f430321cf490d7d37c9550e30d43125dd2dc5fc
Description: An interactive high-level object-oriented language (default version)
Python, the high-level, interactive object oriented language,
includes an extensive class library with lots of goodies for
network programming, system administration, sounds and graphics.
.
This package is a dependency package, which depends on Debian's default
Python version (currently v2.6).
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: minimal
包含的信息有:
包名,優先級,類型,維護者,架構,源文件(source),版本號,依賴包,衝突性信息,包大小,文件的下載路徑,MD5sum,SHA1,包描述,Xul-Appid---應用程序id,Bugs信息,Origin,Supported
從以上可以看到包的下載地址爲:
(http://mirror.neu.edu.cn/ubuntu/)pool/main/p/python-defaults/python_2.6.5-0ubuntu1_all.deb
3 下載包或者依賴
它會首先檢查依賴,如果不存在則下載依賴包,這個依賴包或許還有依賴(遞歸下載),在完成了所有依賴包則可以進行下載,安裝完成,中間任意一環沒有完成則失敗退出.這就是整個過程啦.
總結
- 更新Packages.gz解析安裝包所依賴的文件
- 根據1的結果檢查是否所需要的依賴都已經安裝,假設沒有安裝,則下載(應該有自己的下載功能)這些依賴並進行安裝,這個過程中會對每個依賴重複1、2這兩個過程
- 解決依賴關係,下載指定軟件並安裝,2、3中如果找不到軟件或者庫,則失敗.
Packages.gz已經包含所有所依賴的軟件及其版本信息、以及下載地址.
apt-get常用命令
- sudo apt-get install package 安裝包
- sudo apt-get remove package 刪除包
- sudo apt-get update 更新源
- sudo apt-get upgrade 更新已安裝的包
- apt-get source package 下載該包的源代碼
還有一些命令:
- apt-cache search package 搜索軟件包
- apt-cache show package 獲取包的相關信息,如說明、大小、版本等
- sudo apt-get install package --reinstall 重新安裝包
- sudo apt-get -f install 修復安裝
- sudo apt-get remove package --purge 刪除包,包括配置文件等
- sudo apt-get dist-upgrade 升級系統
- apt-cache depends package 瞭解使用該包依賴那些包
- apt-cache rdepends package 查看該包被哪些包依賴
- sudo apt-get build-dep package 安裝相關的編譯環境
- sudo apt-get clean && sudo apt-get autoclean 清理無用的包
- sudo apt-get check 檢查是否有損壞的依賴