原色奈良阪

CORESERVER.JPにおいて、既存モジュール以外にユーザー領域に任意のPerlモジュールをインストールするための環境整備を行ったものをまとめた。

CPANによるインストールの設定 / CPAN外によるインストールの設定 / Perl実行時の設定 の3段階に分かれている。

なお以下でuserという文字列は自分の利用しているユーザ名で置き換えること。

基本的な注意

CORESERVER.JPではプロセス(プログラム)の実行時間がある程度(1,2分?)に達するとkill(強制終了)される仕組みがあるので手早く行う。

もし何らかの操作の途中で途中でkillされてしまった場合はもう一回プロセス(cpanなど)を起動して継続すればよいが、特にcpanでは「ロックファイルが残っているが削除するか」と再起動時に聞かれる場合がある。

これはcpanが2つ以上起動しないようにするためのファイルで、正常終了時には削除されるが、cpanが強制終了されて残ってしまったものである。遠慮なくyesで消して良い。

CPANによるインストールの設定

まずユーザ領域にCPANの一般的な操作でPerlモジュールをインストールするため、 CPANの初期設定をhttp://www.buslog.net/archives/2009/08/perl-module-coreserver.htmlに従って以下のように行った。

CPAN初期設定の前提設定

CPANの本設定の前に以下の設定(~/.cpan/CPANを作成しMyConfig.pmに"1;"と記述する)を行った。

$ mkdir -p ~/.cpan/CPAN
$ echo '1;' > ~/.cpan/CPAN/MyConfig.pm
CPANの初期設定

CPANをcpan等で起動すると初期設定を聞かれるので、何も考えずEnter連打で対応する。

終了はq,exit,quit等でできる。

CPANの再初期設定

Enterでスルーした設定があるので以下で修正する。

cpanを起動して、そのシェル(CPAN Shell)上で

cpan> o conf makepl_arg INSTALL_BASE=/virtual/user
cpan> o conf mbuildpl_arg '--install_base /virtual/user'
cpan> o conf commit
(cpan>はプロンプト)

を実行する。

環境変数INSTALL_BASE及びコマンドラインオプション--install_baseは、Perlモジュールのインストールされるベースディレクトリの設定である。

つまりこれによってPerlモジュールのインストールされるベースディレクトリ('/'のかわり)を/virtual/userにするという操作である。

これによって、CPANでmakeされたモジュールを構成するファイルは、/virtual/user/lib/perl5/*/virtual/user/share/*/virtual/user/bin/*等にインストールされる。

以上でCPANからモジュールをインストールする設定は整った。

以降はSSHを通じて一般的な手順(cpan> install Moduleなど)でモジュールがユーザ領域に適切にインストールされる。

CPAN外によるインストールの設定

時にはCPANからではなくtar.gzファイルなどからSSHを通じて直接

$ perl Makefile.PL
$ make
$ make test
$ make install

などでモジュールをインストールしなければならない場合がある。

特にCORESERVER.JPのPerlは現在ではやや古いとされるPerl5.8.8を使用しているので、 最新版ではサポートが打ち切られたモジュールのインストールなどが必要となる場合が想定される。

この場合でもCPANからインストールしたのと同様な扱いが出来るように設定をする必要があるだろう。

.bash_profile

export PERL_MM_OPT="INSTALL_BASE=/virtual/$USER"

と記述すると、Perlモジュールパッケージに一般的なMakefile.PLが利用しているExtUtils::MakeMakerにINSTALL_BASEの情報が渡され、 SSHからmake installしたときのベースディレクトリが先ほどのCPANの設定と同じになる。

※なおこの設定は.bash_profileを変更してからsource ~/.bash_profileを実行するか、 SSHを一旦ログアウトしてからログインしなおすまで反映されないので注意が必要である。

以上でモジュールを素のmakeでインストールする設定は整った。

以降はSSHを通じて上記に示したような一般的なPerlモジュールのmakeの手順でモジュールがユーザ領域に適切にインストールされる。

Perl実行時の設定

以上2つはモジュールのインストール時の設定だが、ただインストールしただけではPerl実行時にインストール先のディレクトリ/virtual/user/*は参照されない。

なので、このディレクトリを環境変数の設定でもってライブラリ参照先に追加する必要がある。

SSHでPerlを動かすときと、インターネットからアクセスしてPerlが動くときとでは参照する環境変数が違うので2種類設定する。

SSHから利用する場合用の設定

.bash_profile

export PERL5LIB=/virtual/$USER/lib/perl5:/virtual/$USER/lib/perl5/i686-linux

と記述する。$USERはカレントのユーザ名があてはまる。BASH環境変数のPERL5LIBである。

HTTP(インターネット経由)から利用する場合用の設定

~/public_html/.htaccess

SetEnv PERL5LIB /virtual/user/lib/perl5:/virtual/user/lib/perl5/i686-linux

と記述する。Apache環境変数のPERL5LIBである。

以上でPerlスクリプトにuse libなど特別な記述をせずともユーザ領域にインストールをされたPerlを参照するようになったはずである。

完了

以上3設定で元々サーバにないPerlモジュールを利用する準備が完了した。

Edited by Narazaka 2012/03/08