UNIX/Linuxの部屋 pkg_addコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド 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 のパッケージなので、バージョンの違いに注意)。
% tar ztvf foo-1.2.3.tgz
とすればわかるが、必要なバイナリや設定用ファイルに加えて、+CONTENTS、+COMMENT、+DESCなどの + から始まるファイルが同梱されている。これらのファイルの意味は
  • +CONTENTS … どういうファイルをどこにどのようなパーミッションで書き込むか
  • +COMMENT … パッケージの簡単な説明
  • +DESC … パッケージの詳細な説明
となっている。他にもパッケージによっては
  • +REQUIRED_BY … このパッケージに依存しているパッケージ名
  • +INSTALL … パッケージをインストールする際に実行されるスクリプト
  • +DEINSTALL … パッケージを削除する際に実行されるスクリプト
がある。

パッケージをインストールするには pkg_add コマンドを使う。root になって
# pkg_add foo-1.2.3.tgz
と、引数にパッケージ名を指定すれば、必要なファイルが自動的にインストールされる。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 コマンドを使う。
>> FreeBSDオンラインマニュアル(man) FreeBSD pkg_add(1)