「portupgrade」の利用

packageを簡単にインストールできるよう、「portupgrade」をインストールする。
なお、最新のデータを利用できるよう、まず「ports」のアップデートを行っておく。
「ports」のアップデートは5.3-RELEASEの場合は「CVSup」を利用し、 6.0-RELEASEの場合は「portsnap」を利用する。

「portupgrade」のインストール
FreeBSD# cd /usr/ports/ports-mgmt/portupgrade <= 作業ディレクトリへ移動
FreeBSD# make install clean <= 「portupgrade」のインストール
途中で以下のオプションを聞かれた場合、チェックする
[X] BDB4  Use Berkeley DB >=2 as backend. (Use BDB 1.85 if off) 


FreeBSD# rehash <= パスを通す
「portupgrade」の実行

「portsdb」の実行

まず、portsdbコマンドでportsのINDEXファイルを更新したり、そのINDEXファイルを元にバイナリデータベースを作成・更新する。
なお、この作業は非常に時間がかかるので注意。

FreeBSD# portsdb -Uu
 -U <= INDEXファイルを作成する
 -u <= INDEXファイルを基にバイナリデータベースを作成・更新する

依存関係の不整合を直す

FreeBSD# pkgdb -aF
 -F <= 順番に依存関係をチェックする
 -a <= -Fが指定されている場合、自動修復を行う

「portversion」の確認

インストールしてあるpackageと最新のportsのバージョンを比較する。

FreeBSD# portversion -v

「=」 同じ
「<」 古い(アップデート対象)
「>」 新しい(通常は出ない)

「portupgrade」の設定

ここでは、例としてサーバには余り必要のないX Window関連を導入しない設定を記述する。
また、IPv6も無効にする。

FreeBSD# vi /usr/local/etc/pkgtools.conf <= 設定ファイルの編集
MAKE_ARGS = {
}
↓
MAKE_ARGS = {
以下を追加
    '*' => [
        'WITHOUT_X11=yes',
        'WITHOUT_IPV6=yes',
    ],
ここまで
}

「portupgrade」の実行

portupgradeコマンドでアプリケーションのアップグレード等を行う。
主なオプションは以下の通り。

オプション 説明
-a 全てのパッケージのアップデート
--backup-packages 古いパッケージのバックアップを取る
--batch デフォルトの設定でmakeを行う。
その為、途中でオプションを指定する為に止まることがなくなる
-f 強制的にインストールする
-i アップグレードの実行前に確認を行う
-L ログファイルを指定すると、ファイルに保存する。
-vLとすると詳細なログを出力する
-m makeのオプションを指定する
-n アップグレードは行わず、必要があるかの確認を行う
-N パッケージがインストールされていない場合、ダウンロードしてインストールする
-o バージョンアップ等により、portsのパス等が変わった場合に、基となっているportsを指定する
例:FreeBSD# portupgrade -o www/apache22 apache
-p パッケージも作成する
-P 可能な場合、パッケージを利用する
-PP 強制的にパッケージを利用する
-r 対象のportsが依存しているportsも更新する
-R 対象のportsに依存しているportsも更新する
-x -r、-Rオプションと同時に指定し、対象から外すパッケージを指定する
「portclean」の利用

portsを使ってインストールしたときに消し忘れたゴミを削除するためのツール。
portscleanコマンドの主なオプションは以下の通り。

オプション 説明
-C portsのmake時に使われる作業ディレクトリ(/usr/ports/*/*/work/)を全て削除する
-D 古いバージョンのportsのソースコード等を消す
-P /usr/ports/packages/ にある旧バージョンのpackageを削除する
基本的なアップデートの流れ

まず「ports」を最新にしてから、packageを更新する。
流れとしては以下のような感じになる。

FreeBSD5.3-RELEASEの場合(「CVSup」の利用)

FreeBSD# cvsup -g -L 2 /etc/ports-supfile <= portsの更新
FreeBSD# portsdb -Uu <= INDEXファイル・データベースの作成・更新
FreeBSD# pkgdb -aF <= 依存関係の不一致を直す

FreeBSD6.0-RELEASEの場合(「portsnap」の利用)

FreeBSD# portsnap fetch <= スナップショットのダウンロード
FreeBSD# portsnap update <= 「ports」のアップデート
FreeBSD# portsdb -Uu <= INDEXファイル・データベースの作成・更新
FreeBSD# pkgdb -aF <= 依存関係の不一致を直す

上記の作業はスクリプトにしてcronに登録すると良い。
ただし、その場合、「portsnap」を利用するのであれば引数を fetch では無く、 cron にする。
この作業が終われば「portversion」でアップデートが必要なpackageを調べ、 「portupgrade」で必要なpackageをアップデートする。


「ports」のアップデート(「CVSup」の利用)
「ports」のアップデート(「portsnap」の利用)


▲ページのトップへ