Debian APT HOWTO 第五章 獲取軟件包信息
APT HOWTO
第五章 獲取軟件包信息
有些基於APT系統的前端程序,能十分方便地獲得系統軟件包列表,列表包括可安裝或已安裝的軟件包,還可以顯示某軟件包屬於哪個域(section),它的優先級(priority)是多少,它的說明文檔,等等。
但是...在此我們想的學習如何使用APT本身來完成。你如何找出你想要安裝的軟件包的名稱?
我們完成這個任務的方法有很多。我們從apt-cache開始,APT系統使用這個程序來維護它的數據庫。下面我們通過一些實際操作來對它做個概覽。
5.1 獲得軟件包名稱
==================
假設你十分懷念玩Atari 2600的好日子,你決定用APT安裝一個Atari emulator,隨後再下載幾個游戲,你可以這樣:
[root]@[/] # apt-cache search atari
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
circusLinux - The clowns are trying to pop balloons to score points!
madbomber - A Kaboom! clone
tcs - Character set translator.
atari800 - Atari emulator for svgalib/X/curses
stella - Atari 2600 Emulator for X windows
xmess-x - X binaries for Multi-Emulator Super System
我們找到了幾個相關的軟件包,以及有關的簡單描述。想進一步獲得某個軟件包的詳細信息,你可以運行:
[root]@[/] # apt-cache show stella
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear
Architecture: i386
Version: 1.1-2
Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
Stella is a portable emulator of the old Atari 2600 video-game console
written in C++. You can play most Atari 2600 games with it. The latest
news, code and binaries for Stella can be found at:
http://www4.ncsu.edu/~bwmott/2600
屏幕上顯示出這個軟件包的詳細信息及其用途的完整描述。如果你的系統中已安裝了某個軟件包而系統又搜索到它的新版本,系統會將它們的詳細信息一並列出。如下例:
[root]@[/] # apt-cache show lilo
Package: lilo
Priority: important
Section: base
Installed-Size: 271
Maintainer: Russell Coker
Architecture: i386
Version: 1:21.7-3
Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate
Suggests: lilo-doc
Conflicts: manpages (<<1.29-3)
Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb
Size: 143052
MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e
Description: LInux LOader - The Classic OS loader can load Linux and others
This Package contains lilo (the installer) and boot-record-images to
install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
.
You can use Lilo to manage your Master Boot Record (with a simple text screen)
or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
Package: lilo
Status: install ok installed
Priority: important
Section: base
Installed-Size: 190
Maintainer: Vincent Renardias
Version: 1:21.4.3-2
Depends: libc6 (>= 2.1.2)
Recommends: mbr
Suggests: lilo-doc
Description: LInux LOader - The Classic OS loader can load Linux and others
This Package contains lilo (the installer) and boot-record-images to
install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
.
You can use Lilo to manage your Master Boot Record (with a simple text screen)
or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
注意,首先列出的是可用軟件包,接著列出的是已安裝軟件包。獲取某個軟件包的常規信息可運行:
[root]@[/] # apt-cache showpkg penguin-command
Package: penguin-command
Versions:
1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status)
Reverse Depends:
Dependencies:
1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3)
Provides:
1.4.5-1 -
Reverse Provides:
如果僅想了解某軟件包的與哪些軟件包關聯,可運行:
[root]@[/] # apt-cache depends penguin-command
penguin-command
Depends: libc6
Depends: libpng2
Depends: libsdl-mixer1.1
Depends: libsdl1.1
Depends: zlib1g
總之,有一系列工具可幫助我們找到我們想要的軟件包。
5.2 使用dpkg查找軟件包名稱
==========================
另一個定位軟件包的方法是知道軟件包中某個關鍵文件的名稱。例如,你編譯時需要某個頭文件,查找提供該文件的軟件包,你可以運行:
[root]@[/] # dpkg -S stdio.h
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
或者:
[root]@[/] # dpkg -S /usr/include/stdio.h
libc6-dev: /usr/include/stdio.h
在清理硬盤空間時,了解系統中已安裝軟件的軟件包名稱十分有用,你可以運行:
[root]@[/] # dpkg -l grep mozilla
ii mozilla-browse 0.9.6-7 Mozilla Web Browser
這個命令的缺點是它會“截斷”軟件包的名字。在上例中,軟件包的全稱是mozilla-browser,解決這個問題可以使用COLUMNS環境變量:
[kov]@[couve] $ COLUMNS=132 dpkg -l grep mozilla
ii mozilla-browser 0.9.6-7 Mozilla Web Browser - core and browser
或顯示成這樣:
[root]@[/] # apt-cache search "Mozilla Web Browser"
mozilla-browser - Mozilla Web Browser
5.3 如何“按需”安裝軟件包
==========================
你正在編譯某段程序,突然,停住了!一條錯誤信息報告說你沒有它需要的頭文件。讓auto-apt來救你吧,它問你是否要安裝需要的軟件包,然後掛起編譯進程,安裝好軟件包後再恢復編譯進程。
你所要做的僅僅是:
auto-apt run command
這裡“command”指在運行過程中可能出現“需求文件不存在”問題的命令。例如:
auto-apt run ./configure
一會兒,它就會告訴你要安裝所需的軟件包並自動轉到apt-get處理。如果你正在運行X,就會一個圖形界面提示窗口。
為了提高效率auto-apt所用的數據庫需要實時更新。可調用auto-apt update,auto-apt updatedb和auto-apt update-local來完成更新。
5.4 如何知道文件屬於哪個軟件包
==============================
如果你想安裝某個軟件包,但用apt-cache查不出它的名稱,不過你知道這個程序的文件名,或這個軟件包中某些文件的文件名,那麼你可以用apt-file來查找軟件包名稱。
$ apt-file search filename
它用起來很象dpkg -S,不過它還會列出包含該文件的已刪除軟件包。它也可以用來查找哪個軟件包包含編譯時所缺的文件,當然,解決這類問題auto-apt可能是更好的方案,請參閱 5.3如何“按需”安裝軟件包。
用這個命令,你可以列出軟件包的內容:
$ apt-file list packagename
apt-file用一個數據庫來存放所有軟件包的內容信息,和auto-apt一樣,這個數據庫也需要實時更新,完成更新可以運行:
# apt-file update
默認情況下,apt-file和auto-apt使用同一個數據庫,參閱 5.3如何“按需”安裝軟件包。
5.5 如何掌握軟件包的變化情況
============================
在每個軟件包被安裝以後,都會在文檔目錄(/usr/share/doc/packagename)生成一個changelog.Debian.gz的文件,這個文件記錄了該軟件包最後一次更新對系統做了哪些修改,你可以用zless閱讀這些信息。不過當你對整個系統進行升級以後,逐個查看軟件包的更新信息可不是件容易事。
有一個工具能幫你完成這項任務,它就是apt-listchanges
有一個工具能幫你完成這項任務,它就是apt-listchanges