天天看點

Ubuntu探秘之二:軟體包管理系統

在我們探秘之旅開始之前,了解自己系統上安裝了哪些軟體包、各個軟體包的作用以及該軟體包安裝了哪些檔案及目錄是非常有用和重要的。以後的每一次探秘我都會用到這些指令以列出我的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&amp[/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 

繼續閱讀