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',
}