さくらインターネットでCPAN

さくらの共有サーバにCPANを、という話。しばしばotsuneさんの記事が引き合いに出されるのですが、うちのとは違うのか、そのままだとうまくいかんのよねーという部分があるのでちょっと書いておく。

さくらのシェルに入ったら、何の準備もしなくていいから、まずはCPANシェルを起動する。これまで何もしたことがなければCPAN 1.76の初回起動時の質問が出てくるので、適当に回答。肝の部分はcpan_homeを指定する部分と(これ、いまのさくらなら「/home//.cpan」というのが自動的に用意されるはず)、「Parameters for the 'perl Makefile.PL' command?」の部分。ここ、otsuneさんの記事では「PREFIX=~/local」以外にもいろいろ書いてありますが、まっさらな状態でそこまで書いてもExtUtils::MakeMakerをアップグレードできないし、EUMMが理解してくれないはずなので、画面に出ている通り、単に「PREFIX=~/local」だけでいい。もちろんEUMMをバージョンアップしたらINSTALL_BASEとか使う方がベター。make_install_argとかmbuildpl_argとかの設定は、この段階ではいじる必要なし。urllistは、ftp.cpan.orgは死んでいる(か、死んでいることが多い)ので、山形大学のを使うといい。設定が変わっていなければ、ここはおそらく国内で最速更新(一日四回更新してくれているはず)。

で、さくらインターネットFreeBSD版)に限れば、ここで.cshrcにsetenvを書く。一般的にはこのあと、Bundleをインストールしてから~/localの中身を調べて書いた方がわかりやすい。

setenv PATH /home/<yourname>/local/bin:$PATH
setenv PERL5LIB /home/<yourname>/local/lib/perl5/5.8.8:/home/<yourname>/local/lib/perl5/5.8.8/mach:/home/<yourname>/local/lib/perl5/site_perl/5.8.8:/home/<yourname>/local/lib/perl5/site_perl/5.8.8/mach:$PERL5LIB

大事なのは、mach系のパスもPERL5LIBのなかに入れておくこと。少なくともうちの環境では、これをしないとTemplate-ToolkitやYAML::Syckを入れたはずなのに使えない、と嘆くことになる(借りているサーバの設定によっては違う可能性はある)。

確かめたければ、シェルから

perl -MDummy -e 'print $Dummy::VERSION'

のようにわざと存在しないモジュールを呼び出して、出てくる@INCを見てみるといい。.../mach とかいうディレクトリが入っているようならPERL5LIBにも .../mach が必要。

ここまで設定できたら、次はBundle::CPANをインストールする。たまに入りきらないファイルがあるけれど、とりあえず無視。Module::Buildが入っていればそれでいい。

入れたら、一度CPANから出て、再度起動。この段階でCPAN.pmとModule::Buildが最新の状態になっているので、今度はModule::Build関連の設定をしてくれと言われるはず。言われないようならPERL5LIBの設定を見直した方がいい。

で、画面の指示にしたがって、mbuildpl_argに「--install_base ~/local」と設定。あとはよいように。

その他、BSDPANや外部ライブラリとの共存についてはotsuneさんの記事にある通り。

――というのがうちの場合ですが、意外とハマっている人少ないようだし、otsuneさんのところだとまた違うのかな?