FreeBSD ハンドブック
Prev | Chapter 4. アプリケーションのインストール - packages と ports | Next

# 4.4. packages システムの利用

寄稿: Chern Lee.

FreeBSD には packages を管理するツールが複数あります。

- `sysinstall` からシステムに packages をインストールしたり削除できます。 また、インストールされた packages や利用可能な packages の一覧を表示できます。 詳細については、インストール後の作業 を参照してください。

- この章では、コマンドラインの package 管理ツールについて説明します。

## 4.4.1. package のインストール

pkg_add(1) は、ローカルファイルやネットワーク上のサーバから FreeBSD ソフトウェア package を インストールするためのユーティリティです。

Example 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

(FreeBSD CD-ROM セットのような) ローカルな packages がない場合は、 pkg_add(1) に `-r` オプションをつける方が楽でしょう。 このユーティリティは、このオプションを指定して実行すると 自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP サイトからダウンロードしてインストールします。

    # pkg_add -r lsof

上の例では適当な package がダウンロードされた後、インストールされます。 ユーザはこのほかに何もする必要はありません。 メインの配布サイトではなく FreeBSD Package ミラーサイトの package を使うには、 `PACKAGESITE` 環境変数に利用したいサイトを設定してください。 pkg_add(1) は、`FTP_PASSIVE_MODE`, `FTP_PROXY`, `FTP_PASSWORD` といった環境変数を参照する fetch(3) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 環境変数の一覧については fetch(3) をご覧ください。 また、上の例で `lsof-4.56.4` の代わりに `lsof` を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 package のバージョン番号を取り除かなければなりません。 pkg_add(1) は自動的に最新版のアプリケーションを取得します。

> Note: FreeBSD-CURRENT または、FreeBSD-STABLE を使用している場合、 pkg_add(1) は最新版のアプリケーションをダウンロードします。 -RELEASE を使用している場合には、 そのバージョンのリリース時にビルドされた package がダウンロードされます。 この設定は `PACKAGESITE` を上書きすることで変更できます。 たとえば、FreeBSD 5.4-RELEASE を使用している場合には、 pkg_add(1) を実行するとデフォルトで `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/` から packages をダウンロードします。 もし、pkg_add(1) を使って FreeBSD 5-STABLE の packages をダウンロードしたければ、 `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 CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 `/packages` ディレクトリに packages が あります。packages のレイアウトは、 `/usr/ports` ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 `All` ディレクトリにはすべての package があります。

package システムのディレクトリ構造は ports のレイアウトと同一です。 両者が組み合わさって package/port システムが構成されます。

## 4.4.2. packages の管理

pkg_info(1) は、インストールされている packages の一覧と説明を表示するユーティリティです。

    # 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) は、インストールされている packages のバージョンを要約して表示するユーティリティです。 package のバージョンを、現在の ports ツリーのバージョンと 比較します。

    # pkg_version
    cvsup                       =
    docbook                     =
    ...

2 列目の記号は、インストールされているバージョンの ローカル ports ツリーのバージョンに対する 新旧を表します。

記号 | 意味
--- | ---
= | インストールされている package のバージョンは、 ローカル ports ツリーのものと一致しています。
< | インストールされているバージョンは、 ローカル ports ツリーのものより古いです。
> | インストールされているバージョンは、 ローカル ports ツリーのものより新しいです (おそらくローカル ports ツリーは古くなっています)。
? | インストールされた package を ports インデックスの中に見つけることができません (インストールされた port が Ports Collection から削除されたり、 名前が変更された場合などに起こります)。
* | 複数のバージョンの package が存在します。
! | インストールされた package はインデックス中に存在しますが、何らかの理由で、 インストールされた package のバージョン番号をインデックス中のエントリと比較できません。

## 4.4.3. package の削除

インストールされている package を削除するには、 pkg_delete(1) ユーティリティを使ってください。

    # pkg_delete xchat-1.7.1

pkg_delete(1) は package 名とバージョン番号の両方を必要とします。 すなわち、先ほどの例において `xchat-1.7.1` を `xchat` とした場合には動作しません。 インストールされている package のバージョンは、 pkg_version(1) を使うと簡単に調べることができます。 バージョン番号のかわりにワイルドカードも使えます。

    # pkg_delete xchat\*

上の例では、名前が `xchat` で始まるすべての packages が削除されます。

## 4.4.4. その他

package に関するすべての情報は `/var/db/pkg` ディレクトリ以下に置かれています。 このディレクトリの下にあるファイルの中に、 インストールされたファイルの一覧やインストールされた各 package についての説明が含まれています。

Prev | Home | Next
アプリケーションの探し方 | Up | Ports Collection の利用