pear.conf でグローバルな設定を行う

# かなり適当にやっているので間違いを見つけた方はツッコミお願いします。

pear の設定を少し触ったのでメモを残してみる。まだ謎な部分があるので, そのうちまとまったら pear.sakura.vg に書くかも。

pear の設定変更といえば pear config-set が一般的だと思う。

pear config-set preffered_state beta

PEAR 使いとして皆やっていると思う =)

ところで PEAR の設定には system レイヤと user レイヤがあり, 例えば pear config-set は user レイヤに作用するのでユーザが変わると config-set で与えた設定は引き継がれない。
全体に作用する設定は system レイヤで, ユーザ個々の設定は user レイヤで, としっかり使い分けたい所だ。

ではどうすればいいか。
user レイヤの設定は普通に config-set で与えてやればいい。ちなみに user レイヤの設定値はホームディレクトリ以下の .pearrc に格納され, pear の設定が呼ばれた時に system レイヤの値を上書きする形で呼ばれる。
問題は system レイヤで, どうやら pear.conf (pear help で表示される System Configuration File の設定値) を読んでいる所まではわかる。問題はどうやって作成するかだ。
で, ググっても解らなかったのでスクリプト書いてみた。

 'beta', 
                'bin_dir' => PEAR_BASE_DIR .'/bin',
                'doc_dir' => PEAR_BASE_DIR .'/doc',
                'php_dir' => PEAR_BASE_DIR,
                'data_dir' => PEAR_BASE_DIR .'/data',
                'test_dir' => PEAR_BASE_DIR .'/tests',
                'php_bin' => '/usr/local/php/bin',
                'ext_dir' => '/usr/local/php/ext'
);

$config = &PEAR_Config::singleton();
$config->writeConfigFile($config_file, 'system', $params);
?>

これで system レイヤの設定値を自由にいぢる事が出来る。

PEARコンフィギュレーション周りは 1.4 で相当改良されていてコマンド以外のフロントエンドもあるようで, 更に複数環境下での効率のよい取り回しについても考えられているようだ。PEAR_Channel の普及と共にこの辺りは発掘すべき Tips がまだまだ眠っているように思える。
また pearcommand.phpPEAR/Config.php (PEAR_Conf と PEAR::Config は別物なので注意) のコードも面白いので気になる人は見てみるといいかも。