常用的包管理包含三類工具:dpkg、apt和aptitude。人們總是對前面的兩個工具用得比較多,而對 aptitude 用得比較少,事實上 aptitude 是很強大的。
在這里,對這三個工具做一點總結。
dpkg 主要是對本地的軟件包進行管理,本地軟件包包括已經在本地安裝的軟件包和已經下載但還沒有安裝的 deb 文件,不解決依賴關系。
apt 包含了很多工具,apt-get 主要負責軟件包的在線安裝與升級,低層對 deb 包的處理還是用的 dpkg,解決依賴關系;apt-cache 主要用來查詢軟件包的狀態和依賴關系;apt-file 主要負責查詢軟件包名稱和軟件包包含的文件(值得注意的是它要自己同步);apt-cross 主要負責為交叉編譯的軟件包的安裝與編譯等。apt 還包含很多工具,如 apt-offline 可以離線安裝軟件包,apt-build 可以簡化源碼編譯等等,有興趣可以學習一下 apt 開頭軟件包。用下面的命令可以得到所有以 apt 開頭的軟件包。
aptitude search ~n^apt注:~n 意思是搜索軟件包名,^ 是匹配最前面
aptitude 是更強大的安裝工具,有兩種基本的使用方法,一種是文本界面,另一種是命令行,這里只討論命令行操作。
下面從安裝軟件包的順序來描述這些工具的使用。
查找軟件包
dpkg --get-selections pattern #查找軟件包名稱包含 pattern 的軟件包,可以在后面用 grep install/deinstall 來選擇是否已經被 remove 的包(曾經安裝過了的)
apt-cache search pattern #查找軟件包名稱和描述包含 pattern 的軟件包 (可以是安裝了也可以是沒有安裝),可以用參數來限制是否已經安裝
aptitude search ~i #查找已經安裝的軟件包
aptitude search ~c #查找已經被 remove 的軟件包,還有配置文件存在
aptitude search ~npattern #查找軟件包名稱包含 pattern 的軟件包 (可以是安裝了也可以是沒有安裝)
aptitude search \!~i~npattern #查找還沒有安裝的軟件包名字包含 pattern 的軟件包。(前面的 ! 是取反的意思,反划線是 escape 符號)
注:還有很多用法,可以去看看我在 forum 中寫的帖子 aptitude Search Patterns[1]
apt-cache depends package #查找名稱是 package 軟件包的依賴關系
aptitude search ~R~npackage #查找名稱是 package 軟件包的依賴關系,可以同時看到是不是已經安裝
apt-cache rdepends package #查找哪些軟件包依賴於名稱是 package 軟件包
aptitude search ~D~npackage #查找哪些軟件包依賴於名稱是 package 軟件包
dpkg -I package_http://www.aliyun.com/zixun/aggregation/11696.html">name.deb #參數是大寫i,查找已經下載但末安裝的 package_name.deb 軟件包的信息
dpkg -l package #參數是小寫L,查找已經安裝軟件包 package 的信息,精簡
apt-cache show pattern ##查找軟件包pattern的信息 (可以是安裝了也可以是沒有安裝)
aptitude show ~npattern #顯示名稱是 pattern 軟件包的信息(可以是安裝了也可以是沒有安裝)
apt-cache policy pattern #顯示 pattern 軟件包的策略(可以是安裝了也可以是沒有安裝)
apt-cache showpkg pattern #顯示pattern 軟件包的其它信息(可以是安裝了也可以是沒有安裝)
dpkg -S pattern #查找已經安裝的文件 pattern 屬於哪個軟件包
apt-file search pattern #查找文件 pattern 屬於哪個軟件包(可以是安裝了也可以是沒有安裝)
dpkg -c package_name.deb #查找已經下載但末安裝的 package.deb 軟件包包含哪些文件
dpkg -L package #查找已經安裝 package 軟件包包含哪些文件
apt-file show pattern #查找 pattern 軟件包(可以是安裝了也可以是沒有安裝)包含哪些文件
下載軟件包
apt-get install package -d #下載軟件包
aptitude download pattern #同上,不同的是下載的是符合 pattern 的軟件包,后面不再指出
