コマンド
pkg_add
パッケージのインストール。FreeBSD のみ。
FreeBSD のアプリケーションの管理には、ports と packages という仕組みを使うと便利である。
UNIX のプログラムのほとんどはソースファイルで配布されている。そのソースを取得して FreeBSD 上でコンパイルしてもよいのだが、
- 開発者が FreeBSD を持っていないため、コンパイルできるかどうか確認されていない。
- FreeBSD のバージョンアップに伴い、ライブラリが変更された
- OS 依存のライブラリ関数などを使用している
などの理由で、FreeBSD ではうまくコンパイルできないことがある。大抵の場合、ソースを数行変更するだけでコンパイルできるが、経験がないと難しいだろう。
そこで、ソース変更の部分を自動化する ports というシステムが考えられた。ports は
- ソースファイルのある場所 (URL)
- FreeBSD でうまくコンパイルできるようにするためのパッチ
を集めたものである。
パッケージ (package) とは、ports を使ってコンパイルしたバイナリのことである。ファイル形式はただの tarball (tar アーカイブを gzip で圧縮したもの) で、アプリケーション foo のバージョン 1.2.3 は foo-1.2.3.tgz というファイル名で配布される。
これらのパッケージは CD-ROM や、
ftp://ftp.jp.freebsd.org/pub/FreeBSD/FreeBSD-current/packages/All/などに置かれている (これは current のパッケージなので、バージョンの違いに注意)。
とすればわかるが、必要なバイナリや設定用ファイルに加えて、+CONTENTS、+COMMENT、+DESCなどの + から始まるファイルが同梱されている。これらのファイルの意味は
- +CONTENTS … どういうファイルをどこにどのようなパーミッションで書き込むか
- +COMMENT … パッケージの簡単な説明
- +DESC … パッケージの詳細な説明
となっている。他にもパッケージによっては
- +REQUIRED_BY … このパッケージに依存しているパッケージ名
- +INSTALL … パッケージをインストールする際に実行されるスクリプト
- +DEINSTALL … パッケージを削除する際に実行されるスクリプト
がある。
パッケージをインストールするには pkg_add コマンドを使う。root になって
と、引数にパッケージ名を指定すれば、必要なファイルが自動的にインストールされる。CD-ROM からだと
# pkg_add /cdrom/FreeBSD-3.4/packages/All/foo-1.2.3.tgz
となるだろう。すると、pkg_add はパッケージの中の +CONTENTS を参照しながら、ファイルを指定の場所に展開する。もし +INSTALL があればそれを実行する。
インストールした後には、(csh・tcsh を使っているなら) rehash コマンドでハッシュテーブルの再構築をしておこう。
-n 実際には何も書き込まず、報告のみをする
-v 全ての情報を表示
Solaris にもパッケージシステム (FreeBSD とは互換性がない) があるが、こちらは pkgadd コマンドを使う。