FreeBSDでのパッケージ管理システムについて

FreeBSDのパッケージ管理システムは2つある

  1. ports
  2. Packages
portsの概要

アプリケーションをインストールするのに必要な情報を1つのディレクトリにまとめる。
具体的な情報としては以下の通り

  • アプリケーションのソースコード
  • 構築時や実行時に必要となるアプリケーション
  • ビルド手順
  • ビルドに必要なパッチ
  • などなど

そのディレクトリ以下に、カテゴリごとに木構造に分類したツリーがPorts
Portsツリーと言ったり、Portsコレクションと言ったりする。
基本的にはインストール時にPortsツリーはインストールされている。

Packages

Portsを使って作成したアプリケーションのバイナリファイルや設定ファイル、マニュアルなどを1つにまとめたファイルのこと。圧縮されているので、tarやbzipが使われている。
FreeBSD RELEASEの公開時にPortsツリーをもとにPackageが作成されるが、ライセンスの関係でPackageされないアプリケーションもある。さらに、RELEASE時にはPackageが作成されるが、それ以降、定期的にPackageが作成されるわけではないので、注意。

Portsツリーの更新方法

Porsツリーの更新方法は、2つある

  1. csup(1)
  2. portsnap(8)

csupは、FreeBSDに元からある仕組みだが暗号化通信を行わず特別なプロトコルを使うなど、セキュリティ上も好ましくない。そこで、後発のportsnapを使うのが好ましい。portsnapを使えば、HTTPで通信を行い、差分だけを取得することも可能。(短時間の通信なので安全らしい。これは微妙だが)Portsnapもデフォルトでインストール済み。

Portsnapの設定

設定ファイルは、/etc/portsnap.conf
デフォルトで入っており、特に変更せずに使用可能。しいて言えば、取得サーバがデフォルトだと海外になっており、取得に時間がかかるので、国内のportsnap.allbsd.orgに変更するといい。

Portsnapを使ったPortsツリーの取得方法

1.最新の圧縮されたportsツリーの取得
portsnapコマンドをfetchオプションで実行。実行場所はどこでもかまわない。
fetchオプションで実行すると、圧縮されたportsツリーや差分ファイルをダウンロードする。ダウンロードしたファイルは/var/db/portsnap/配下に置かれる。

portsnap fetch

2.取得したPortsツリーの展開
取得したPortsツリーを/usr/ports/以下に展開する。引数にはextractを指定する。すでに/usr/pots/がある場合は上書きされる。
これで、最新のportsツリーの取得が完了。
もし、すでにportsツリーがある場合は、portsnap updateコマンドで1の作業を行って、2の作業の代わりにupdateを行う。

Portsからのインストール

Portsからアプリケーションをインストールするには、目的のアプリケーションのPortsツリーディレクトリに移動してmakeコマンドを実行する。
emacsの例

# cd /usr/ports/editors/emacs
# make
# make install