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 管理機制

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.