提要:本文檔是針對Debian GNU/Linux 的APT工具做一般性介紹, 希望Linux用戶對於Debian 有個較為深刻的了解.
以Debian的方式系列(IN THE DEBIAN WAY):
Debian 維護工具之 APT
etony C.F.AN
[email protected]
v0.0.1, 2006-3-30 本文檔是針對 Debian GNU/Linux 的 APT 工具做一般性介紹, 希望 Linux 用戶對於 Debian 有個較為深刻的了解.
1. 基本概念
dpkg 功能十分的強大, 是它保證了系統的穩定性. 但是隨著 GNU/Linux 的日益普及, Debian 操作系統的廣泛應用, dpkg 在操作上日益顯示出它的不足之處. APT (高級軟件包工具 Advanced Package Tool)很好的解決了這一難題, 它功過抽取軟件包中的相關信息, 給出相關操作的優化方案, 確定解決請求所需軟件包, 從資源庫下載, 根據需求在本地系統安裝和刪除軟件包.
dpkg 采取的方式較為保守, 當發現進一步操作可能會將問題引入系統時(比如使系統中出現了不能滿足依賴關系的軟件), 將拒絕執行這一操作(默認方式), APT則會根據出現的問題, 智能的給出解決方案, 並繼續進行操作. 比如,安裝操作出現依賴關系時, dpkg 會拒絕操作, APT 則不同, 將會自動安裝這些依賴包以完成安裝請求.
APT 提供另一個簡單的命令行方式, 與 dpkg 不同, 其本身不會處理 .deb 文件, 而是智能從資源庫下載, 然後調用 dpkg 僅此處理. APT 是 dpkg 的一個智能前端.
2. 基本配置
apt 通過名稱和版本來在確定一個軟件包, 這些信息通常是通過資源庫中提供的 Packages.gz (如果是源代碼則是 Source.gz)來抽取來的(通過 apt-get update 獲取). 通常如果出現重復的軟件包, 則第一個有效. 這些資源庫在 etc/apt/sources.list/ 中定義.
3.1 自動配置
在基本系統中提供了一個用於自動配置資源列表的工具: apt-setup. 由 base-config(現在僅在 sarge 中提供) 軟件包中, 可以通過
#base-config
調用, 或者直接運行
#apt-setup
進行配置.
3.2 手動配置
資源庫在 /etc/apt/sources.list 中用就象如下行定義:
deb FTP://some-server/debian sarge main contrib
deb-src ftp://some-server/debian sarge main contrib
與網站有如下對應關系:
ftp://some-server/debian/dists/sarge/main/binary-i386/...
ftp://some-server/debian/dists/sarge/contrib/binary-i386/...
------------------------ -----
\___ /
add: \ /
------------------------ -----
deb ftp://some-server/debian sarge main contrib
當然上邊的網站是假設的, 不可用的. 應當選擇您連接速度最快的鏡像地址替換. Debian 官方鏡像列表可以 從 http://www.debian.org/mirror/list 處獲取, 也可從 /var/lib/apt-spy/mirrors.txt(apt-spy 提供)得到. 至於私有資源則需要通過別的途徑獲取.
在 /etc/apt/sources.list 中, 每行為一條記錄, 定義一個資源庫. 其具體語法在 sources.list(5) 聯機手冊中有詳細介紹.每條記錄至少包括三個字段, 共同組成資源定位. 這些字段是:
軟件包類型
deb 指二進制軟件包. 要訪問軟件包源代碼, 則必需用 deb-src 代替.
資源URI
統一資源標識符(URI)用於指定資源庫, 可以使用下邊任意一種方式訪問:
cdrom, file, copy, http, ftp, ssh
發行版(distribution)
在標准的鏡像中, 這一字段使用規范名稱(如 stable )或代號(如 sarge )來關聯 Debian 的發行版.
構成
用於關聯一個發行版的組成部分, 對應官方鏡像,相當於軟件庫(如每個條目的其余部分用於關聯一個發行版提供的組成部分.對於官方鏡像,這相當於軟件庫(如 main, contrib), 對於非官方資源庫, 組成部分的關聯方式可以由管理員自己定義. APT會為每個構成創建單獨的 URI. 因此, 正常的發行版至少需要一個組成部分.
在修改 sources.list 後或安裝軟件前, 需要對APT進行更新, 就是運行 apt-get uodpate 獲取各種 Packages 文件, 它的位置是通過 /etc/apt/sources.list 中的記錄來指定的.每個提到構成都有一個對應的 Packages 文件.
3.3 優化資源
apt-spy 方式
Debian 在互聯網上有龐大的鏡像群, 有超過 100 個提供了全部 Debian 歸檔庫的官方鏡像. 另外, 還有很多大學和機構提供非官方鏡像, 因此使用附近的還是不錯的. 我們將哪些鏡像加入我們的 sources.list 文件呢? 當然是速度最快的! Debian 為我們提供了一個用戶測試鏡像速度的工具 apt-spy (由 apt-spy 提供). 這樣有利於有效的利用帶寬, 節省下載時間.
可以從 http://www.debian.org/mirror/list (由於某種原因, 您可能無法訪問)處獲取獲取完整的鏡像列表. 也可以從 tt /var/lib/apt-spy/mirrors.txt / ( apt-spy 提供)找到一個副本.
apt-spy 通過對列表進行測試, 根據帶寬和回應速度, 找出其中最快的一個, 並將結果自動保存到 /ect/apt/sources.list 中.
#apt-get install apt-spy
#mv sources.list sources.list.bak //backup
#man apt-spy //獲取詳細的使用方法
#apt-spy update //更新您的鏡像列表文件 /var/lib/apt-spy/mirrors.txt
可將測試限制在一個國家或區域內, 提供限制測試服務器個數的選項, 等等. 另外, 區域也可以在 /etc/apt-spy.conf 中定義. 可以通過下邊的命令找出亞洲區速度最快的鏡像,並生成針對 testing 的記錄:
# apt-spy -d testing -a Asia
上邊的測試大概每個服務器需要用一分鐘的時間, 這個也可以使用 -t 選項控制. 有關這一選項的詳細信息請閱讀 apt-spy(Cool 聯機手冊.
netselect-apt 方式
netselect-apt 會創建一個更完整的 sources.list 文件, 但它使用更落後的方法來選擇鏡像站點:
#apt-get install netselect-apt
#mv sources.list sources.list.bak //backup
#man netselect-apt //獲取詳細的使用方法
# netselect-apt -s testing
//下載 http://www.debian.org/mirror/list-full文件, 並根據其內容測試網絡, 生成 sources.list
也可將下載 http://www.debian.org/mirror/list-full 手動下載到本地, 並同過參數 -i 指定. 同樣可以通過 -o 參數指定輸出文件而不是默認的 sources.list
4. APT 的配置
APT 的很多方面都是可以定制的.事實上,在 /etc/apt/apt.conf 文件中, 您可以修改大多數命令行選項的默認值. 配置參數使用 名稱 - 值 對,根據用途被分為幾組. 組名在參數前邊用 "::" 分割.tt apt.conf(5) 聯機手冊有相關語法介紹. 其它項目在對應命令的聯機手冊中有所描述(如 tt apt.get(1) 和 tt apt-cache(1) ). 比如:
APT::Default-Release "testing";
//在使用混合系統時, 設定默認下載的版本
APT::Get::Assume-Yes "true";
//如果在安裝/卸載過程中出現詢問, 應答為 y
如果在使用aptitude、apt-get 或 dpkg 時出現如下錯誤
E: Dynamic MMap ran out of room
可以在apt.conf中加入:
APT::Cache-Limit "12500000";
以重新設定緩存區大小.
訪問資源庫需要代理, 則可以加入類似下邊的內容:
Acquire::http::proxy "http://user:
[email protected]:port";
Acquire::ftp::proxy "ftp://user:
[email protected]:port";
APT還提供了三個鉤子程序, 用於在 dpkg 階段調用.它們分別是 Pre-Invoke, Post-Invoke, Pre-Install-Pkgs.
DPkg::Pre-Invoke {"mount -o remount,rw /usr";};
DPkg::Post-Invoke {"mount -o remount,ro /usr";};
DPkg::Pre-Install-Pkgs {"dpkg-preconfigure --apt --priority=low --frontend=dialog";};
/usr/share/doc/apt/examples/apt.conf, /usr/share/doc/apt/examples/configure-index.gz 中給出詳細的例子, 可以用於參照.
5. 安裝
當發出安裝請求時,apt 會根據其優化算法, 求解出最佳安裝方案, 來完成用戶的請求. 比如:
debian:~# apt-get install xchat
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
defoma fontconfig libatk1.0-0 libfontconfig1 libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libpango1.0-0 libpango1.0-common libperl5.8 liBTiff4
libx11-6 libxcursor1 libxext6 libxft2 libxi6 libxrandr2 libxrender1 tcl8.4
ttf-bitstream-vera xchat-common xfree86-common xlibs-data
Suggested packages:
defoma-doc psfontmgr x-ttcidfont-conf dfontmgr ttf-kochi-gothic
ttf-kochi-mincho ttf-thryomanes ttf-baekmuk ttf-arphic-gbsn00lp
ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp tclreadline
libnet-Google-perl x-window-system-core x-window-system
Recommended packages:
libft-perl libatk1.0-data hicolor-icon-theme
The following NEW packages will be installed:
defoma fontconfig libatk1.0-0 libfontconfig1 libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libpango1.0-0 libpango1.0-common libperl5.8 libtiff4
libx11-6 libxcursor1 libxext6 libxft2 libxi6 libxrandr2 libxrender1 tcl8.4
ttf-bitstream-vera xchat xchat-common xfree86-common xlibs-data
0 upgraded, 24 newly installed, 0 to remove and 1 not upgraded.
Need to get 12.5MB of archives.
After unpacking 39.1MB of additional disk space will be used.
Do you want to continue? [Y/n]
APT 下載軟件時是根據 /var/lib/apt/lists 下的 _Packages 文件, 來獲取軟件的詳細定位的, 而這些 _Packages 文件是通過命令:
#apt-get update
命令從 sources.list 中聲明的順序從資源庫中獲取的. 這一命令將對 Packages 索引文件進行更新. 因此, 在安裝軟件前, 或在修改 sources.list 後, 應該進行 apt-get update 操作.
每天運行, 或經常運行這一命令, 是個良好的習慣. APT 同時會清除/var/lib/apt/lists 目錄下沒有在 /etc/apt/sources.list 中聲明的資源文件. 如果你使用 --no-list-cleanup(APT::Get::List-Cleanup),APT 將會保留這些文件,如果您只是在 sources.list 中臨時禁用一條資源, 這樣還是比較方便的; 當再次啟用這條資源時, 就不需要重復下載 APT 的資源文件了.
在安裝的時候您可以通過使用 --print-uris 選項將這些信息輸出到屏幕. 比如:
#apt-get install --print-uris nano-tiny
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
nano-tiny
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 87.8kB of archives.
After unpacking 123kB of additional disk space will be used.
'http://ftp.us.debian.org/debian/pool/main/n/nano/nano-tiny_1.2.4-5_i386.deb'
nano-tiny_1.2.4-5_i386.deb 87786 07794bf630d1a9dffdf85917a9e39968
注意 後邊的 07794bf630d1a9dffdf85917a9e39968 這是 nano-tiny_1.2.4-5_i386.deb 的 MD5 編碼, 將用跟從 Packages 中獲取的對應 MD5 編碼相比對. 只有 MD5 編碼相匹配時, 才會安裝. 當出現不一致時, APT 會報告 MD5 不匹配,並拒絕安裝或升級軟件包.
您也可以僅僅模擬一下, 而不是真正的安裝:
#apt-get install nano-tiny -s(--simulate)
如果您僅需要獲取 .deb, 而不是裝, 則可以
#apt-get install nano-tiny -d(--download-only)
假如你不小心損壞了已安裝的軟件包而想修復它, 或者僅僅想安裝軟件包中某些文件的最新版本, 這是可以做到的, 你可以用 --reinstall 選項:
# apt-get --reinstall install nano
如果您使用的是混合源, 也可指定發行版安裝:
# apt-get install nano/testing
解決依賴問題
當出現依賴問題時, APT 會努力做出最好的的選擇. 作為解決依賴問題的一部分, APT 為了盡可能的完成用戶的請求, 會首先卸載已經安裝的沖突的軟件包. 無論何時, 在進行用戶請求的附加操作時, apt-get 在提示了對所選擇軟件包將要做的的變更後, 都會請求用戶的確認. 這是為了防止不小心卸載了沖突的軟件包, 或引入更嚴重的依賴問題. 如果不需要額外的操作, APT 將不會給出提示.
通過設置 APT::Get::Show-Upgradeed 為 true ,可以讓APT每次都提示確認. 同樣, 設置 APT::Get::Assum-Yes 為 true, 或在APT的命令行指定 -y 選項, APT 將繞過確認, 繼續操作. 請避免使用這一選項;確認對於生產應用系統來說是個好事情. 有時, 一個軟件包會依賴於其它一組軟件包中的任意一個. 比如:
debian:~# apt-cache depends mailx
mailx
Depends: libc6
Depends: liblockfile1
Depends: exim4
Depends:
courier-mta
esmtp-run
exim
masqmail
nullmailer
postfix
sendmail-bin
ssmtp
xmail
exim4-daemon-heavy
exim4-daemon-light
Depends: base-files
Conflicts:
mailx 依賴於能夠提供 郵件傳輸代理的任一個軟件包, 在默認情況下會安裝 exim4, 除非您明確指定:
#apt-get install mailx postfix
6. 查詢
到目前為止, 一切感覺都還不錯, 只要您知道了軟件包名稱, 使用APT安裝簡直就是小菜一碟. 當我們需要安裝一個軟件, 而又沒有確切的知道其名稱時, 就需要求助於 apt 提供的另一個命令 apt-cache (詳細的使用方法, 請查閱 apt-cache(Cool 聯機手冊). 它可以用於查詢您的軟件包數據庫, 包括軟件包描述, 就象這樣:
debian:~# apt-cache search mysql-server
mysql-server - mysql database server (current version)
mysql-server-4.1 - mysql database server binaries
mysql-server-5.0 - mysql database server binaries
PHPbb2-conf-mysql - Automatic configurator for phpbb2 on
scoop - Web-based collaborative media application
webmin-mysql - mysql-server control module for webmin
我們找到了幾個相關的軟件包, 以及有關的簡單描述. 想進一步獲得某個軟件包的詳細信息, 你可以運行:
#apt-cache show mysql-server
Package: mysql-server
Priority: optional
Section: misc
Installed-Size: 8344
Maintainer: Christian Hammers
Architecture: i386
Source: mysql-dfsg
Version: 4.0.24-10sarge1
Provides: virtual-mysql-server
Depends: mysql-common (>= 4.0.24-10sarge1), mysql-client (>= 4.0.24-10sarge1),
ebconf (>= 1.2.9), libdbi-perl, perl (>= 5.6), libc6 (>= 2.3.2.ds1-21), libgcc
(>= 1:3.4.1-3), libmysqlclient12, libstdc++5 (>= 1:3.3.4-1), libwrap0, zlib1g
= 1:1.2.1), adduser (>= 3.40), psmisc, passwd, mailx
Conflicts: mysql-server-4.1
Filename: pool/updates/main/m/mysql-dfsg/mysql-server_4.0.24-10sarge1_i386.deb
Size: 3645680
MD5sum: b1877cc602daf4b3aeffd350ced6f6a7
Description: mysql database server binaries
MySQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (StrUCtured Query Language) is the most popular database query
language in the world. The main goals of MySQL are speed, robustness and
ease of use.
.
This package includes the server binaries for the 4.0 branch.
如果僅想了解某軟件包的與哪些軟件包關聯, 可運行:
debian:~# apt-cache depends mysql-server
mysql-server
Depends: mysql-common
Depends: mysql-client
Depends: debconf
Depends: libdbi-perl
Depends: perl
Depends: libc6
Depends: libgcc1
Depends: libmysqlclient12
Depends: libstdc++5
Depends: libwrap0
Depends: zlib1g
Depends: adduser
Depends: psmisc
Depends: passwd
Depends: mailx
mailutils
Conflicts: mysql-server-4.1
而命令
debian: # apt-cache rdepends mysql-server
則會查詢哪些包依賴於mysql-server. 如果要將這兩種查詢信息合並到一起, 則可以使用:
debian: # apt-cache showpkg mysql-server
apt-cache search 的參數可以使用正則表達式, 如果指定了多個參數, 則輸出的軟件包必需同時包含這它們這些內容. 也可以使用 --name-only 選項( APT::Cache::NameOlny true ),只搜索軟件包名. 當指定 --full 選項(APT::Cache::ShowFull true )時, 將會顯示軟件包的所有信息.
7. 高級查詢
如果你想安裝某個軟件包, 但用 apt-cache 查不出它的名稱,不過你知道這個程序的文件名, 或這個軟件包中某些文件的文件名, 那麼你可以用 apt-file 來查找軟件包名稱. 這個工具由同名軟件包提供. apt-file 事實上是一個 APT 軟件庫中提供的 Contents 文件的接口. 每個發行版都提供這樣的文件, 包括了某個發行版所要安裝的所有文件的列表. 在使用 apt-file 前, 需要首先獲取用戶要查詢的 Contents 文件. 運行 apt-file update 將會這個文件下載到 /var/cache/apt 目錄. 這樣就可以使用 apt-file 查詢這個文件了. apt-file 的主要用途是確定某個文件是由哪個軟件包提供的.
$ apt-file search filename
用這個命令, 你可以列出軟件包的內容:
$ apt-file list packagename
和 apt-get 一樣, 這個數據庫也需要實時更新, 完成更新可以運行:
# apt-file update
8. 卸載和清除
如果你不再使用某些軟件包, 你可以用 APT 將其從系統中刪除. 要刪除軟件包只需輸入: apt-get remove package. 如下所示:
debian:~# apt-get remove vim
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
vim vim-common
0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
Need to get 0B of archives.
After unpacking 15.1MB disk space will be freed.
Do you want to continue? [Y/n]
可以注意到, 在請求刪除 vim 時, vim-common 也會同時卸載, 因為 APT 會關注那些與被刪除的軟件包有依賴關系的軟件包. 使用 APT 刪除一個軟件包將會連帶刪除那些與該軟件包有依賴關系的軟件包. 但是它們的配置文件, 如果有的話, 會完好無損地保留在系統裡. 如果想徹底刪除這些包及其配置文件,運行:
debian:~# apt-get remove vim --purge
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
vim* vim-common*
0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
Need to get 0B of archives.
After unpacking 15.1MB disk space will be freed.
Do you want to continue? [Y/n]
注意軟件包後的星號, 這表示將要被清除, 而不是簡單的刪除.
您也可以在安裝的同時進行軟件卸載, 比如:
debian:~# apt-get install nano-tiny nano-
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
nano
The following NEW packages will be installed:
nano-tiny
0 upgraded, 1 newly installed, 1 to remove and 1 not upgraded.
Need to get 0B/87.8kB of archives.
After unpacking 913kB disk space will be freed.
Do you want to continue? [Y/n]
注意 nano 後邊的 "-", 它提示在安裝 nano-tiny 的同時將nano 卸載掉.
當然也可以用 dpkg 進行軟件包刪除, 但是它並不能自動解決依賴問題.
9. 系統升級
9.1 軟件升級
Debian 的一個強大之處就是它的對軟件包的無縫升級. 無論是請求APT將一個持續相當長時間的的 woody 服務器升級到 sarge, 還是對當前 stable 發行版升級一些軟件包,APT 都不會有問題. 升級軟件包就是指一個軟件包版本號比當前安裝的版本號要高. 從 Debian 的一個發行版升級到另一個, 軟件包的版本號都作了刻意的增加,而 stable 內部的升級則是因為安全問題, 和重大補丁修正, 而不可能是功能調整. 如果新的上游版本修正了某個安全問題, 則安全修正仍會使用 stable 版中的版本號, 以盡量減少變動. Debian/stable 要確保系統的穩定性.
一個 stable 版本所包含的軟件包列表可能從不會改變, 但是一個新的發行版通常會引入等多的軟件包. 因此, stable 內部的依賴關系從不會發生變化, 但是新的發行版中可能會包含更名, 或拆分的軟件包, 因此需要修改軟件包之間的依賴關系.
版本內升級, 只需一條命令即可完成更新:
#apt-get upgrade
運行該命令時加上 -u 選項很有用. 這個選項讓 APT 顯示完整的可更新軟件包列表. APT 會下載每個軟件包的最新更新版本, 然後以合理的次序安裝它們. 注意在運行該命令前應先運行 apt-get update 更新數據庫. 定時順序執行 update/upgrade, 可以保持系統運行平穩和安全. 也可以使用 cron 自動升級系統.
9.2 升級到新版本
不同的版本之間, 提供的軟件包的數目, 以及軟件包間的依賴關系會有很大差異, 如果更改新的版本, 比如將系統從 stable 升級到 testing, update/upgrade 不會安裝沒有在系統中出現的軟件包; 只會對現存軟件包進行升級. 並且如果現有軟件新版本依賴關系發生而來變化, 那麼將無法對其升級:
debian:~# apt-get upgrade
Reading Package Lists...
Building Dependency Tree...
The following packages have been kept back:
adduser apache apache-common apache2-utils apt apt-utils aptitude bc
...
The following packages will be upgraded:
base-files base-passwd bash binutils bitchx bootcd bootcd-i386 bsdmainutils
...
142 upgraded, 0 newly installed, 0 to remove and 83 not upgraded.
Need to get 51.8MB of archives.
After unpacking 12.5MB of additional disk space will be used.
Do you want to continue? [Y/n]
我們看到有些包被阻止更新(kept back), 現在我們就用使用APT的智能升級機制: apt-get dist-upgrade
debian:~# apt-get dist-upgrade
Reading Package Lists...
Building Dependency Tree...
The following packages will be REMOVED:
libgssapi1-heimdal libroken16-kerberos4kth libsp1 mysql-common-4.1
postfix-tls
The following NEW packages will be installed:
apache2-common apache2-mpm-prefork cpp-4.0 dmidecode gcc-4.0 gcc-4.0-base
...
The following packages will be upgraded:
adduser apache apache-common apache2-utils apt apt-utils aptitude base-files
...
225 upgraded, 42 newly installed, 5 to remove and 0 not upgraded.
Need to get 132MB of archives.
After unpacking 70.6MB of additional disk space will be used.
Do you want to continue? [Y/n]
當 apt-get dist-upgrade 時, APT 會安裝新軟件包,甚至會刪除廢棄的軟件包. 實際的新軟件包的安裝, 或刪除舊軟件包, 仍是由 dpkg 完成的.
幾分鐘(也可能是幾個小時, 這和你 的帶寬和升級的軟件包的多少有關)後, APT 就完成了系統從 stable 到 testing 的升級.因為仍是有 dpkg 來響應實際的安裝, 您精心調整的配置文件並不會被修改(除非您選擇安裝新的版本). 當新版的軟件包需要修改調整文件時, Debian 的維護者將會提供不同的軟件包, 這樣您就不必花費整個下午的時間來調整您的軟件恢復正常了.
10. 解決問題
* 如何將本地光盤加入安裝源列表:
這可以求助於 apt-cdrom add
* 如何降級一個系統(比如將 sid 降級為 testing)
在 /etc/apt/preferences文件中加入:
Package: *
Pin: release a=testing
Pin-Priority: 1001
修改 /etc/apt/sources.list, 將資源庫由 sid 改為 testing 分支, 然後運行:
#apt-get update
#apt-get -u dist-upgrade
注: 降級處理存在一定的風險, 謹慎使用
* 如果在安裝過程中出現中斷, 然後你發現該軟件包既不能重裝又不能刪除, 試試下面兩個命令:
# apt-get -f install
# dpkg --configure -a
* 如何清除下載到本地的軟件庫
#apt-get clean
//將刪除 /var/cache/apt/archives/ 目錄和 /var/cache/apt/archives/partial/ 目錄下的所有文件,除了被鎖定的文件.
apt-get autoclean
//僅刪除那些不需要再次下載的文件.
* 如何查看一個軟件的編譯依賴庫
#apt-cache showsrc packagenamegrep Build-Depends
注: sources.list 中應該有 deb-src 源
* 下載軟件的源代碼
#apt-get source packagename
注: sources.list 中應該有 deb-src 源
* 安裝軟件包源碼的同時, 安裝其編譯環境
#apt-get build-dep packagename
注: sources.list 中應該有 deb-src 源
* 檢查軟件包的狀態
#apt-cache policy packagename
#apt-cache policy packagename