2004年11月17日

portupgrade使い方メモ

portsのインストールやアップグレード作業を支援してくれるツールがportupgradeだ。FreeBSDを使っているなら、portsとあわせてportupgradeを使わない手はない。portupgradeの使い方と設定についてまとめる。

portupgradeのインストールと基本的な使い方については、FreeBSD のインストールと stable の追跡FreeBSDのシステムのメンテナンスの後半部分にまとめてある。

portupgradeは自動的に(時にはユーザが意図していないが必要である)複数のportsをインストールする。そこで、portsのインストールに色々なオプションを指定したい場合は、事前にportupgradeの設定ファイルに指定することができる。その設定ファイルは、/usr/local/etc/pkgtools.confであり、portinstallとportupgradeから参照される。その中のMAKE_ARGS項目にオプションをportsごとに指定する。

まず、例えばwww/apache2を常にsuEXECを利用するように設定したい場合、次のようにオプションを指定して設定ファイルに追加することで、毎回更新作業時に適用される。

MAKE_ARGS = {
  'www/apache2' => 'WITH_SUEXEC=yes SUEXEC_DOCROOT=/',
}

また、例えばdevel/gettextはインストール作業中に設定メニューを出すので、処理の自動化が途切れてしまう。デフォルトの指定で良い場合は、次のように設定ファイルに追加することで、gettextのアップデートをメニューを出さずに自動で行ってくれる。

MAKE_ARGS = {
  'devel/gettext' => 'BATCH=YES',
}

更に、インターネットサーバとしてシステム構築を行っている場合、X Windowはメンテナンスや処理の負荷となるので導入したくない。portsのX関連の機能をインストールしないためには、次のように設定ファイルに追加すればよい。ワイルドカードを使うことで、graphics/gd や lang/php4-extensions などportsごとに追加する手間も省け、システムのポリシーを貫くことができる。

MAKE_ARGS = {
    '*' => 'WITHOUT_X11=yes',
}

実際に、典型的な70個のportsをインストールしたシステムの設定例は次のようになる。このように設定ファイルを準備しておくことで、portupgradeを使った70個のportsの更新作業は完全に自動化できる。

MAKE_ARGS = {
'*' => 'WITHOUT_X11=yes',
'devel/gettext' => 'BATCH=YES',
'www/apache2' => 'WITH_SUEXEC=yes SUEXEC_DOCROOT=/',
'databases/mysql41-server' => 'WITH_CHARSET=utf8',
'print/ghostscript-gnu-nox11' => 'BATCH=yes',
'textproc/libxml2' => 'BATCH=yes',
'graphics/php4-gd' => 'BATCH=yes',
'converters/php4-mbstring' => 'BATCH=yes',
'lang/php4' => 'WITH_APACHE2=yes BATCH=yes',
'lang/php4-extensions' => 'WITH_MBSTRING=yes WITH_GD=yes WITH_IMAGICK=yes WITH_MYSQL=yes BATCH=yes',
'mail/ezmlm-idx' => 'LANGUAGE=jp',
}