カラクリスタ

「輝かしい青春」なんて失かった人のブログ

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

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


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

0. 参考

http://blog.hide-k.net/archives/2009/02/locallibrootcpa.phplocal::lib を使った非 root での CPAN 環境構築

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

local::libCPAN にあるので、

$ 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/perl5CPAN 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 環境を整える話でした。

FIXME