カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

さくらインターネットでlocal::libを使ってCPAN環境を整える

概要: さくらインターネットでlocal::libを使う


だいぶ前の話になりますが、local::libを使ってCPAN moduleをインストールする環境を さくらインターネットに整えたので、そのときのことを思い出しながらまとめてみるよ!

0. 参考

1. local::libを落としてくる

local::libCPANにあるので、 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環境を整える話でした。