在我們探秘之旅開始之前,了解自己系統上安裝了哪些軟體包、各個軟體包的作用以及該軟體包安裝了哪些檔案及目錄是非常有用和重要的。以後的每一次探秘我都會用到這些指令以列出我的ubuntu10.04系統上安裝的相關軟體包,這與你在自己的系統上實驗時的結果可能不同。
現在的系統為何要用軟體包管理系統呢?
要回答這些問題,需要了解現在的軟體開發都非常講究可重用性,也就是說一個人寫的功能代碼可能會以庫函數的形式釋出供别人使用。
最常用的就是glic函數庫,它提供了常見的C語言标準庫函數。由于這種代碼的共享性,就造成成了軟體之間的依賴關系即安裝本軟體前需要安裝
為其提供部分功能代碼的其它軟體。對于現在的很多軟體這種依賴關系非常複雜,因為這種關系存在遞歸性和版本差别。為了解決這種複雜的依賴關系,現代的linux系統都提供了各種軟體包管理機制,如REDHAT系列的基于RPM包管理,Debian的deb包管理等。
這次探秘的是基于debian的包管理機制,對于RPM包管理機制,可以參考附件。Ubunt用到的軟體包管理工具主要有兩個:dpkg和apt
一、首先介紹DPKG
DPKG ---dpkg is a toolto install, build, remove and manage Debianpackages.
功能:
1.安裝、移除已下載下傳到本地的軟體包。
2.查詢、解包已經下載下傳到本地的軟體包。
3.維護和儲存已經安裝到本地的軟體包資訊。
總之,dpkg是一個底層的軟體包管理系統,主要用于對[color=#ff00]已下載下傳到本地和已安裝的軟體包[/color]進行管理.
(1)、最常用選項:
以下五個選項用于[color=#ff00]軟體包的安裝與移除[/color]
-ipackage_file #安裝軟體包,必須是deb包的完整名稱
-r package #移除軟體包,但保留其配置檔案
-P package #移除軟體包的所有檔案
--unpack package_file #解開軟體包到系統目錄但不配置
--configure package #配置軟體包
以下四個選項用于查詢[color=#ff00]已經安裝到系統的軟體包資訊[/color]
-l package-name-pattern #檢視系統中軟體包名符合pattern模式的軟體包
-L package-name #檢視package-name對應的軟體包安裝的檔案及目錄
-s package-name #檢視package-name對應的軟體包資訊
-S filename-search-pattern #從已經安裝的軟體包中查找包含filename的軟體包名稱
(2)、讓我們做一些實驗:
1、首先列出我的系統(ubuntu 10.04)上安裝的與dpkg相關的軟體包
[color=#ff00][email protected]:~$ dpkg -l\*dpkg*[/color]
|Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/Name Version Description
+++-=================================-=================================-==================================================================================
[color=#ff00]ii[/color] dpkg 1.15.5.6ubuntu4.1 Debian package management system
un dpkg-dev <none> (nodescription available)
un dpkg-iasearch <none> (nodescription available)
以ii(install ok installed )開頭表示Name對應的軟體包已安裝, 以un(unknown oknot-installed)開頭表示沒有安裝 ,以rc開頭的表示deinstall okconfig-files即要重新安裝。
那些沒有安裝的軟體包(以un開頭)的資訊是從已經安裝的軟體包的Recommends,Suggests 字段獲得的。
2、檢視已安裝的dpkg軟體包資訊:
[color=#ff00][email protected]:~$ dpkg -sdpkg[/color]
Package: dpkg
Essential: yes
[color=#ff00]Status[/color]: install okinstalled #該軟體包已經安裝
Priority: required
Section: admin
Installed-Size: 6608
Origin: debian
Maintainer: Ubuntu Core Developers <[[email protected]][color=#0070af][email protected][/color][/email]>
Bugs: debbugs://bugs.debian.org
Architecture: i386
[color=#ff00]Version[/color]:1.15.5.6ubuntu4.1
[color=#ff00]Replaces[/color]: manpages-de(<= 0.4-3), manpages-pl (<=20051117-1) #該軟體包将要替換的檔案
Pre-Depends: libc6 (>= 2.11), coreutils(>= 5.93-1),lzma #該軟體包依賴的其它軟體包及版本
[color=#ff00]Suggests[/color]:apt #安裝該軟體包時建議同時安裝的其它軟體包
Breaks: emacs21 (<< 21.4a+1-5.7),emacs21-nox (<< 21.4a+1-5.7), emacs22(<= 22.2-0ubuntu2), emacs22-gtk (<=22.2-0ubuntu2), emacs22-nox (<= 22.2-0ubuntu2), jed(<< 1:0.99.18+dfsg.1-13), jed-extra(<= 2.5.3-2), konqueror (<=4:4.2.96-1), pinfo (<< 0.6.9-3.1),tkinfo (<< 2.8-3.1), xemacs21-support(<< 21.4.22-2), xjed(<< 1:0.99.18+dfsg.1-13)
Conflicts: apt (<< 0.7.7), aptitude(<< 0.4.7-1), dpkg-dev(<< 1.14.16), dpkg-iasearch(<< 0.11), sysvinit(<<2.82-1) #與該軟體包相沖突的其它軟體包
[color=#ff00]Conffiles: [/color] #該軟體包提供的配置檔案(configfiles)及校驗資訊
/etc/dpkg/dpkg.cfg f4413ffb515f8f753624ae3bb365b81b
/etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
/etc/cron.daily/dpkg b6b8dc21210ea50db7cc4636f521758f
/etc/logrotate.d/dpkg 9e25c8505966b5829785f34a548ae11f
[color=#ff00]Description[/color]: Debian packagemanagementsystem #該軟體包功能描述,從中可以看出為用于安裝與解除安裝debian軟體包的低級工具
This package provides the low-level infrastructure for handlingthe
installation and removal of Debian software packages.
.
For Debian package development tools, install dpkg-dev.
Homepage: [url=http://blog.chinaunix.net/link.php?url=http://wiki.debian.org%2FTeams%2FDpkg][color=#0070af]http://wiki.debian.org/Teams/Dpkg[/color][/url]
Original-Maintainer: Dpkg Developers <[[email protected]][color=#0070af][email protected][/color][/email]>
[email protected]:~$
3、檢視dpkg軟體包安裝到系統中的檔案:
[color=#ff00][email protected]:~$ dpkg -Ldpkg[/color]
/.
/etc
/etc/dpkg #dpkg的配置目錄
/etc/dpkg/dpkg.cfg
/etc/dpkg/dpkg.cfg.d
/etc/alternatives
/etc/alternatives/README
。。。
/usr/bin #dpkg相關指令
[color=#ff00]/usr/bin/dpkg
/usr/bin/dpkg-deb[/color]
/usr/bin/dpkg-divert
[color=#ff00]/usr/bin/dpkg-query[/color]
/usr/bin/dpkg-split
/usr/bin/dpkg-statoverride
/usr/bin/dpkg-trigger
/usr/bin/update-alternatives
。。。
/var
/var/lib
[color=#ff00]/var/lib/dpkg [/color] #dpkg用于存儲已安裝到本地的軟體包資訊的目錄
/var/lib/dpkg/alternatives
/var/lib/dpkg/info
/var/lib/dpkg/parts
/var/lib/dpkg/updates
。。。
[email protected]:~$
4、dpkg軟體包相關檔案介紹([color=#ff00][b]重點![/b][/color]):
/etc/dpkg/dpkg.cfg #Configuration file with default options.
/var/log/dpkg.log #Defaultlog file (see /etc/dpkg/dpkg.cfg(5) and option --log).
[b][color=#ff00]/var/lib/dpkg/available[/color][/b]檔案 #存放系統上曾經安裝(包括現在)過的軟體包資訊。即使以後該軟體包被解除安裝,這些資訊仍然保留。這些資訊就是dpkg -lpattern列出的内容。
[b][color=#ff00]/var/lib/dpkg/status[/color] [/b] 檔案#存放系統上已經安裝的軟體的狀态資訊如标記為安裝、解除安裝、重新安裝等。
[b][color=#ff00]/var/lib/dpkg/info [/color][/b] 目錄#非常重要!記錄安裝的軟體包控制目錄中的控制資訊檔案如 control、. Conffiles ,.preinst , .postinst , .prerm , .postrm , .list ,.md5suns 等,用于後期軟體包的查詢和移除。
例如:dpkg -r package-name 就是根據info目錄中該軟體包對應的控制資訊檔案來對其進行移除的。
available與status檔案的差别就是前者記錄所有安裝過的(不管現在是否已經解除安裝)的資訊而後者隻記錄已安裝但沒解除安裝的軟體包資訊。這也可以從兩者記錄的軟體包數量上看出來,指令如下:
[email protected]:~$ for file in/var/lib/dpkg/{available,status}
> do
> echo " packages in "${file}" file are : $(grep -wPackage "${file}" | wc -l ) "
> done
輸出為:
packages in /var/lib/dpkg/available file are : 1597
packages in /var/lib/dpkg/status file are : 1531
5、另外再提一下[color=#ff00]debian軟體包中包含的内容及用途[/color]:
debian軟體包其實是以.deb為字尾的歸檔檔案,其内容主要包括兩方面:Package control data 和Upstreamdata,前者為軟體包控制資料,dpkg就是根據這些檔案來安裝該軟體包的,主要是一些腳本檔案如:
control 文本檔案,提供該軟體包的metadate也稱“中繼資料”,通常為軟體包的名稱、版本、作者、依賴關系、架構、功能描述等内容
conffiles 文本檔案,即configurefiles的縮寫,主要記錄該軟體包包含的配置檔案完整路徑
preinst 腳本檔案,preinstall 即安裝軟體包前要做的工作,通常為建立相關目錄、檢測系統環境等
postinst 腳本檔案,postinstall即安裝軟體包後要做的工作,通常為開啟daemon,建立菜單項和快捷方式等。
prerm 腳本檔案,preremove,即在移除或重新安裝該軟體包前要做的工作
postrm 腳本檔案,post remove即在移除該軟體包後要做的工作
其它的就是Upstream data,即要安裝到系統中的所有檔案。這些檔案可以通過輕按兩下deb軟體包用packageinstaller工具看到。
二、下面我們再來探秘一下ATP工具
APT --- a simple command lineinterface for downloadingand installing packages.
功能:
1.從網絡的軟體源下載下傳最新的軟體包metadate(也就是各軟體包的索引和摘要資訊檔案)和binary or sourcepackage .
2.利用下載下傳到本地的metadate,完成軟體包的搜尋、系統的更新。
3.安裝和移除軟體包時自動尋找最新版本并自動解決依賴關系。
總之,APT工具主要利用[color=#ff00]從網絡軟體源下載下傳到的metadate完成軟體包的搜尋、下載下傳、安裝和移除[/color],後兩種功能是通過調用底層的dpkg完成的。
(1)讓我們看一下安裝到系統上的相關軟體包
[color=#ff00][email protected]:~$ dpkg -l\*apt* |grep ii[/color]
ii apt 0.7.25.3ubuntu9.1 [color=#ff00]Advanced front-end fordpkg[/color]
ii apt-utils 0.7.25.3ubuntu9.1 APT utility programs
ii aptitude 0.4.11.11-1ubuntu10 terminal-based package manager
[email protected]:~$
最重要的就是apt軟體包,從描述資訊:Advanced front-end fordpkg中可以看出其依賴于dpkg,是其前端工具.
(2)檢視apt軟體包的資訊
[color=#ff00][email protected]:~$ dpkg -sapt[/color]
Package: apt
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 5460
Maintainer: Ubuntu Core Developers <[[email protected]][color=#0070af][email protected][/color][/email]>
Architecture: i386
Version: 0.7.25.3ubuntu9.1
Replaces: libapt-pkg-dev (<< 0.3.7),libapt-pkg-doc (<< 0.3.7)
Provides: libapt-pkg-libc6.10-6-4.8
。。。。
讓我們重點看一下相關目錄及檔案
[color=#ff00][email protected]:~$ dpkg -Lapt[/color]
/.
/usr
/usr/bin
/usr/bin/apt-cache
/usr/bin/apt-cdrom
/usr/bin/apt-config
[color=#ff00]/usr/bin/apt-get [/color] #這個是搜尋、安裝、解除安裝軟體包最常用到的指令
/usr/bin/apt-key
/usr/bin/apt-mark
。。。。
/etc/apt/preferences.d
[color=#ff00]/etc/apt/sources [/color] #這個檔案很重要,記錄的是軟體源的位址
/etc/apt/sources.list.d
/etc/apt/trusted.gpg.d
。。。
/var
/var/cache
/var/cache/apt
[color=#ff00]/var/cache/apt/archives [/color] #已經下載下傳到的軟體包都放在這裡(用的是apt-getupgrade 指令),要定期清理否則會占用很大空間并有可能帶來版本沖突問題。
/var/cache/apt/archives/partial #這個是沒有完全下載下傳的軟體包存放目錄
/var/lib
/var/lib/apt
/var/lib/apt/lists #這個目錄很重要,裡面存放的都是軟體源的metadate,也就是用apt-getupdate 時下載下傳的檔案
/var/lib/apt/lists/partial
/var/lib/apt/mirrors
/var/lib/apt/mirrors/partial
/var/lib/apt/periodic
(3)下面談一下我對[color=#ff00][b]系統更新和用新立得工具查找軟體包原理的了解[/b][/color]:
/var/lib/apt/lists目錄存放的是已經下載下傳的各軟體源的metadata,這些資料是系統更新和軟體包查找工具的基礎。
Ubuntu Software Center 、Snaptic SoftwaresManager 和UpdateManager等工具就是利用這些資訊來更新和安裝軟體的。
Ubuntu SoftwareCenter主要用于軟體的安裝、解除安裝和查詢。其安裝和解除安裝軟體的資訊來源是/var/lib/dpkg/states,查詢軟體的資訊來源是/var/lib/apt/lists/。
Snaptic Softwares Manager 的工作方式類似。
UpdateManager是系統更新工具,它是将系統已經安裝的軟體版本資訊(存儲在/var/lib/dpkg/states)與/var/lib/apt/lists/中同名的軟體版本進行比較(比較Version字段),進而判斷更新與否,然後将所有需要更新的軟體在視窗中列出。
(4)讓我們看一下向/etc/apt/source.list檔案中添加軟體源的方法,以我的配置為例:
[email protected]:~$ sudo cat /etc/apt/sources.list|tail
deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url] lucid mainmultiverse restricted universe
deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-backports main multiverse restricted universe
deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-proposed main multiverse restricted universe
deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-security main multiverse restricted universe
deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-updates main multiverse restricted universe
deb-src [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url] lucid mainmultiverse restricted universe
deb-src [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-backports main multiverse restricted universe
deb-src [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-proposed main multiverse restricted universe
deb-src [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-security main multiverse restricted universe
deb-src [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url]lucid-updates main multiverse restricted universe
[email protected]:~$
ubuntu的[color=#ff00]軟體源類型[/color]有4種分别為:
main Canonical-support opensourcesofts 即canoniacl公司(ubuntu幕後的開發團隊)支援的開源軟體
multiverse 各開源社群支援的開源軟體
restricted 有專利限制的裝置驅動軟體(主要是顯示卡驅動)
universe 有版權限制的軟體(但個人在一定條件下可以自由使用)
ubuntu用于[color=#ff00]更新的軟體源類型[/color]有4種分别為:
security 重要的安全更新
updates 建議的更新
proposed pre-releaseupdates
backports unsupported updates
向source.list檔案[color=#ff00]添加源的格式[/color]為:
[b][color=#ff00] deb|deb-src [url=http://blog.chinaunix.net/link.php?url=http://path%2Fto%2Fubuntu%2F][color=#0070af]http://path/to/ubuntu/[/color][/url] ubuntu發行版名稱 |發行版名稱-更新的類型 軟體源類型...
[/color][/b]
如deb [url=http://blog.chinaunix.net/link.php?url=http://debian.ustc.edu.cn%2Fubuntu%2F][color=#0070af]http://debian.ustc.edu.cn/ubuntu/[/color][/url] lucid-backports mainmultiverse restricted universe
當要下載下傳源碼包時需要添加源碼源(以deb-src開頭)。
(5)最後介紹一下apt常用的指令及選項:
Usage: apt-get [options] command
apt-get[options] install|remove pkg1 [pkg2 ...]
apt-get[options] source pkg1 [pkg2 ...]
Commands:
update - Retrieve new lists ofpackages #從源伺服器上下載下傳metadate到/var/lib/apt/lists目錄中
upgrade - Perform anupgrade #更新系統,下載下傳的軟體包放在/var/cache/apt/archives 目錄中
install - Install new packages(pkg is libc6 not libc6.deb) #安裝軟體包并自動解決依賴關系
remove - Removepackages #解除安裝軟體包
purge - Remove packages andconfig files
source - Download sourcearchives #下載下傳軟體包的源代碼,前提是source.lst檔案中由deb-src開頭的源
clean - Erase downloadedarchivefiles #清理軟體包緩存即/var/cache/apt/archives目錄中的内容
好了,Ubuntu的包管理機制就是這些,相信你看了後會有些收獲,有問題或不完善的地方希望大家跟貼!
另外,為了友善熟悉RPM包管理機制的童鞋向deb包管理機制轉變,我将兩者作了對比,限于篇幅故放在附件中,有興趣的童鞋可以下載下傳看看。
讓我們挖掘linux的奧秘,享受技術帶來的快樂!記住unix的哲學就是在探索中just have fun !
from:[url]http://blog.chinaunix.net/space.php?uid=7547035&[/url];do=blog&id=60268
qita 發表于 2011-5-21 08:37
安裝包
dpkg -i package.deb
sudo apt-get install package 安裝包
sudo apt-get install package - - reinstall 重新安裝包
sudo apt-get -f install 修複安裝"-f = ——fix-missing"
顯示該包的版本、安裝資訊等
dpkg -l package
dpkg -s package (詳細)
apt-cache show package 擷取包的相關資訊,如說明、大小、版本等
搜尋特定的包
apt-cache search package
列出目前所有已安裝的包
dpkg -l
删除包
dpkg -r package
dpkg -P package (包括配置檔案)
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置檔案等
列出與該包關聯的檔案
dpkg -L package
解開 deb 包的内容
dpkg –unpack package.deb
從所有安裝包中找尋檔案keyword
dpkg -S keyword
列出 deb 包的内容
dpkg -c package.deb
sudo apt-get update 更新源
# apt-get update
運作成功之後,你就可以搜到在你的發行版中有哪些軟體了,指令是apt-cache,運作這個指令是在本機是檢索,而不連到網上。如:
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 更新系統
sudo apt-get dselect-upgrade 使用 dselect 更新
apt-cache depends package 了解使用依賴
apt-cache rdepends package 是檢視該包被哪些包依賴
sudo apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載下傳該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理無用的包
sudo apt-get check 檢查是否有損壞的依賴
================================舉例=============================
# apt-cache search baseutils
這個指令可以列出baseutils這個軟體包的情況,有還是沒有,還有版本等。
看到庫裡有這個軟體包後,就可以安裝它:
# apt-get install baseutils
這時我們就可以看到apt-get的威力了。如果baseutils依賴于某個另外的軟體,或者一個運作庫xyz.0.01.so,apt-get會自動下載下傳這個包(或含有這個庫的軟體包)。這叫做自動依賴性處理。通常,如果你隻用Debian軟體庫内的軟體,是不會發生找不到包或包版本不對的情況的,除非用的是正在開發的Testing或Unstable版本。
解除安裝軟體:
# apt-get remove baseutils
如果想看一下庫裡有多少軟體:
# apt-cache stats
Total package names : 22502 (900k)
Normal packages: 17632
Pure virtual packages: 281
Single virtual packages: 1048
Mixed virtual packages: 172
Missing: 3369
...
把本機所有軟體更新到最新版:
# apt-get upgrade
最後是最強力的--把整個發行版都升到新版本:
# apt-get dist-upgrade
更新時注意那些影響系統起動的東西,比如更新了核心,更新了grub或lilo等,這之後你應當重新運作grub或是lilo,讓它們指向正确的位置,否則更新之後會工作不正常的。
用apt-get安裝軟體時,它會從網上(在sources.list裡指的那個站點)下載下傳所用的軟體包,這個包将存在本機上,目錄是:/var/cache/apt/archives/。時間長了,這裡會變得非常巨大,占用大量的硬碟空間。要想清理這個目錄,可以運作:
# apt-get clean
還有一個自動清理功能,它隻清除那些沒用的或者是不完整的軟體包:
# apt-get autoclean
這樣在重裝某軟體時就依然能使用已經下載下傳好的,而不是再到網上去下載下傳。
dpkg - 底層一些的包管理工具
用上apt(進階包管理工具)之後,一般是不需要處理單個的deb檔案的。如果需要,就要用dpkg指令。比如想自己裝gedit:
# dpkg -i gedit-2.12.1.deb
解除安裝:
# dpkg -r gedit
這裡隻寫名字即可。還可以加上--purge(-P)标志:
# dpkg -P gedit
這會連同gedit的配置檔案一起删除,隻用-r的話是不删除配置檔案的。
如果不想安裝一個deb包,但想看一下它裡面有什麼檔案:
# dpkg -c gedit-2.12.1.deb
如果想多看點資訊:
# dpkg -I gedit-2.12.1.deb
也可以用通配符來列出機器上的軟體:
# dpkg -l gcc*
這會列出所有gcc開頭的軟體包:
Desired=Unknown/Install/Remove/Purge/Hold
Status=Not/Installed/Config-files/Unpacked/Failed-config/.
/ Err?=(none)/Hold/Reinst-required/X=both-problems
/ Name Version Description
+++-===============-==============-========================
ii gcc 4.0.1-3 The GNU C compiler
ii gcc-3.3-base 3.3.6-8ubuntu1 The GNU Compiler Colletio
un gcc-3.5 none (no description available)
其中,第1個 i 表示希望安裝,第2個 i 表示已經安裝,第3個字段是問題(如果有)(這3個字的含義可以看上面那3行,desired, status, err),後面是名字,版本和描述。un就表示,Unknown, not-installed。
如果想看某包是否已經安裝:
# dpkg -s gedit
如果想看某軟體都有哪些檔案,都裝到了什麼地方:
# dpkg -L gedit
如果隻想看其中的某些檔案,就加上Grep:
# dpkg -L gedit grep png
當然還有aptitude和Aptitude,前者是終端上運作的帶菜單的工具,後者是X視窗上運作的圖形化的程式。
還有,列出某包的詳情:apt-cache show gedit