2009年6月29日月曜日

[Perl] CPXXXANプロジェクト

CPXXXANは古いバージョンのPerlでも動くCPANモジュールのリストを作ってダウンロードできるようにするという発展途上のプロジェクトである。

Perlはこの数年でバージョン5.6、5.8、5.10と進化してきたが、未だに5.10より前の古いバージョンを使い続けている人もいる。しかし、5.6のユーザーが普通にCPANに行ってDBIモジュールをダウンロードしても動かない。最新のDBIは5.6に対応していないからだ。CPXXXANはこの問題を解決するべく開発されている。

CPXXXANという独立したソフトウェアがあるというよりは、Perlのバージョンごとに用意されたURLを通してCPANにアクセスするという言い方が近い。

さて、CPXXXXANを試してみよう。

試す前に環境のテスト

普通にCPANシェルを起動して最新のDBIを取得してみる。

% cpan

cpan shell -- CPAN exploration and modules installation (v1.94)
ReadLine support enabled

cpan[1]> get DBI
...
DBI-1.609/
DBI-1.609/Changes
DBI-1.609/dbd_xsh.h
...

最新版の1.609がダウンロードされる。

CPXXXANの設定

たとえばPerl 5.6.2を使っている場合、CPANのターゲットURLをhttp://cp5.6.2an.barnyard.co.uk/に設定する。

cpan[2]> o conf urllist http://cp5.6.2an.barnyard.co.uk/                     
Please use 'o conf commit' to make the config permanent!

cpan[3]>

ここで「o conf commit」とすると設定ファイルが上書きされるが、今は試して遊んでいるだけなので上書きはしない。

CPXXXANからダウンロード

上でCPANのURLを設定した後、

cpan[3]> reload index
...
Fetching with LWP:
http://cp5.6.2an.barnyard.co.uk/authors/01mailrc.txt.gz
...

としてPerl 5.6用に作られたインデックスファイルを取得する。

さてDBIをもう一度ダウンロードしてみよう。

cpan[4]> get DBI
Running get for module 'DBI'
...
DBI-1.604/
DBI-1.604/Changes
DBI-1.604/dbd_xsh.h
...

と、1.604がダウンロードされた。これが5.6.2で動作するDBIの最新バージョンである。

まとめ

さまざまなしがらみで古いバージョンのPerlを使わざるを得ない人は多い。「古いPerlはサポートしません」というのはモジュール作者の自由だが、このようなやり方で古いPerlのユーザーを救済するやりかたは美しい。正式公開が待たれる。

ちなみにこのプロジェクトの存在はPerl Seminar NYで教えてもらった。

1 件のコメント:

  1. FYI it now also supports OS-specific "mirrors" (eg http://cp5.8.8-irixan.barnyard.co.uk/ for perl 5.8.8 on Irix) and has versions of the CPAN frozen at various points in time (eg http://cp2010an.barnyard.co.uk/ which is the CPAN as that 2010-01-01 00:00:00).

    返信削除