だいぶ前の話になりますが、local::libを使ってCPAN moduleをインストールする環境を
さくらインターネットに整えたので、そのときのことを思い出しながらまとめてみるよ!
0. 参考
1. local::libを落としてくる
local::libはCPANにあるので、
CPANのlocal::libのページのDownloadリンクをコピーして、
端末上で、
$ cd ~/local/src
$ wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.004009.tar.gz
でlocal::libを取ってくる
2. local::libを解凍する
$ tar zxvf local-lib-1.004009.tar.gz
3. BSDPANの設定をする
僕のところではこんな感じの設定をしました。
setenv PKG_DBDIR ~/db/pkg
setenv PORT_DBDIR ~/db/pkg
setenv INSTALL_AS_USER
4. CPANの設定をする
hidekさんのところの記事によると、どうも先にCPANの設定をしないとlocal::libのインストールがうまくいかないそうなので、
とりあえずshellで
$ cpan
...
cpan> o conf commit
cpan> exit
という感じでCPANの設定を済ませます。
このときにはCPANモジュールのインストールパスなんかは設定しません。
あとUNINST=1とか--uninst=1を設定すると、どうもシステムに入ってるモジュールを消そうとして失敗する、
という動作をしだすので、これらのオプションは設定しないほうが良いと思います。
5. local::libをインストールする
ようやくlocal::libをインストールします。
僕の環境の場合、~/local/perl5がCPAN moduleをインストールするルートディレクトリなので、
$ cd ~/local/src/local-lib-local-lib-1.004009
$ perl Makefile.PL --bootstrap=/home/nyarla/local/perl5
という感じでMakefile.PLを実行。あとは
$ make
$ make test
$ make install
します。
6. 環境変数を設定
で、次に環境変数を設定します。
hidekさんの所ではechoとか使って自動的にシェルの設定ファイルに書き出しとかしてますが、
僕の環境ではどうもうまくいかなかったので、手動で、
$ perl -I$HOME/local/perl5 -Mlocal::lib=$HOME/local/perl5
を実行して、出力された環境変数の設定部分をシェルの設定ファイル(僕の環境の場合cshなので~/.cshrc)
にコピペしました。
7. CPANをupdate
これでようやくCPAN moduleをインストールできる環境が整ったので、
$ cpan
...
cpan> install Bundle::CPAN
してCPANをアップデートします。
まあこれは大抵のモジュールはインストールされるはずなので、細かいところは省略。
8. CPAN moduleをインストール
んで、あとは自由にCPAN moduleをインストールできます。
僕の場合、このBlogや無貌断片で使用している plasxomが使用するモジュールなんかを入れました。
9. Perl scriptで使用するには
で、肝心のPerl scriptから各モジュールを呼び出すには、
#!/usr/bin/perl
use strict;
use warnings;
use lib '/home/nyarla/local/lib/perl5/lib';
use local::lib '~/local/perl5';
という感じで呼び出します。
ちなみにさくらインターネットではCGIはsuEXEC環境で動いてるので、
.htaccessとかの設定ファイルで設定した環境変数がCGIスクリプト内で有効になりませんが、
suEXEC環境でない場合は、.htaccess内でPERL5LIBとか設定してやれば良いと思います。
10. 以上作業は終了。感想とか
まあ作業自体をしたのがだいぶ前(いつだったか覚えてない)ので細かいところはうろ覚えですが、 大体こんな感じで作業したと思います。
本当は作業してから作業ログを書こうと思ってたんですが、 疲れたしまた後にしようと思って延び延びになって今日になった次第。
ちなみに作業してたとき、環境変数を設定するところでちょっとつまづいてました。
あと使用感ですが、CPANをダイレクトに設定して使ってたときよりも使いやすい感じです。
特にインストールされるディレクトリがバラけないのでそこら辺がスクリプトから扱いやすい感じ。
まあこれからレンタルサーバでCPAN使う人は、local::libを使うと良いんじゃないでしょうか。
以上local::libを使ってCPAN環境を整える話でした。