4.4. 使用 Packages 管理機制
前一頁 | 章 4. 軟體套件管理篇：Packages 及 Ports 機制 | 下一頁

## 4.4. 使用 Packages 管理機制

Contributed by Chern Lee.

### 4.4.1. Package 的安裝方式

可以用 pkg_add(1) 從本機上或者透過網路來安裝任一 FreeBSD package。

範例 4.1. 手動下載、安裝 Package
`#` `ftp -a `ftp2.FreeBSD.org`` Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. `ftp>` `cd /pub/FreeBSD/ports/packages/sysutils/` 250 CWD command successful. `ftp>` `get lsof-4.56.4.tgz` local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) `ftp>` `exit` `#` `pkg_add `lsof-4.56.4.tgz``

若手邊沒有 package 來源(像是 FreeBSD 光碟)的話， 那麼建議使用 pkg_add(1) 時，加上 `-r` 選項來更輕鬆安裝 package。如此一來，就會自動判斷正確的 package 格式、 以及所搭配的作業系統 release 版本， 然後會自己從 FTP 站抓回、安裝相對應的 package。

`#` `pkg_add -r `lsof``

上面這例子會自動下載正確的 package 並安裝。 若想改換用其他 FreeBSD Packages Mirror 站，那麼就要設定 `PACKAGESITE` 環境變數， 如此一來才會取代預設設定。 pkg_add(1) 會用 fetch(3) 指令來下載檔案，而 fetch(3) 本身則會使用相關環境變數的設定， 像是： `FTP_PASSIVE_MODE`、`FTP_PROXY` 以及 `FTP_PASSWORD`。 如果你網路環境處於 firewall 後面，或者需要用 FTP/HTTP proxy 的話，那麼就需要設定。 設定細節請參閱 fetch(3)。 請注意：上面所說的例子是寫 `lsof` 而非 `lsof-4.56.4`。 當使用遠端抓取功能時，該 package 版號就不必加上去了。 pkg_add(1) 會自動下載該軟體的最新版回來安裝。

### 注意:

若用的是 FreeBSD-CURRENT 或 FreeBSD-STABLE 的話，pkg_add(1) 會自動下載該軟體最新版回來。 若用的是屬於 -RELEASE 版本，那麼他會抓回屬於該 release 上所編譯的 package。 也可以更改 `PACKAGESITE` 環境變數，以改變下載方式。 舉例來說，如果是 FreeBSD 5.4-RELEASE 的話，那麼 pkg_add(1) 預設會從 `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/` 來抓 package。若要強制 pkg_add(1) 下載 FreeBSD 5-STABLE 所用的 package，那麼就把 `PACKAGESITE` 改設為 `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/` 即可。

Package 檔有 `.tgz` 以及 `.tbz` 兩種格式。 這些都可透過 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ ，或者 FreeBSD 光碟內取得。 每張 4 片裝的 FreeBSD 光碟(以及 PowerPak 包等等)內都會在 `/packages` 目錄內放 package。 裡面的目錄架構類似 `/usr/ports` 的目錄架構。 每個分類都各自有專屬目錄，且每份 package 都會放在 `All` 目錄內。

package 目錄架構與 port 的都一致；它們共同構成整個 package/port 系統機制。

### 4.4.2. 管理 Packages

pkg_info(1) 可用來列出所有已安裝的軟體、軟體簡介。

`#` `pkg_info` cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ...

pkg_version(1) 則是列出所有已安裝的軟體版本。 它會顯示已裝版本以及目前機器上 port tree 的版本差異。

`#` `pkg_version` cvsup = docbook = ...

第二欄的符號表示：已安裝的軟體版本與目前機器上 port tree 的版本差異。

符號 | 代表意義
--- | ---
= | 已裝的版本與目前機器上 port tree 的版本是同一版的。
< | 與目前機器上 port tree 版本相比起來，已裝的版本較舊。
> | 與目前機器上 port tree 版本相比起來， 已裝的版本較新。(可能是目前機器上 port tree 尚未更新。)
? | 已裝的軟體在 ports 索引內找無相關資料。 (通常可能是，舉例來說：已安裝的該 port 已從 Ports Collection 中移除或改名了。)
* | 該軟體同時有許多版本。

### 4.4.3. 移除已安裝的 Package

若要移除已裝的軟體，那麼請多利用 pkg_delete(1) 工具，比如：

`#` `pkg_delete `xchat-1.7.1``

請注意 pkg_delete(1) 須要放上完整的軟體名稱以及版本， 若只輸入 `xchat` 就不行，必須換成 `xchat-1.7.1` 才可。 然而，我們可以用 pkg_version(1) 輕鬆找出已裝的所有軟體版本，或者以 wildcard (萬用字元) 的方式：

`#` `pkg_delete `xchat\*``

以上面例子而言，將會移除所有以 `xchat` 開頭的軟體。

### 4.4.4. 其他細節部份

所有已裝的 package 資訊都會存到 `/var/db/pkg` 目錄內，在該目錄下可以找到記載已裝的軟體檔案清單及該軟體簡介的檔案。

前一頁 | 上一層 | 下一頁
4.3. 尋找想裝的軟體 | 起始頁 | 4.5. 使用 Ports 管理機制

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。