Perlのモジュールを色んな場所にインストールする - やっとlocal::libの話
local::libを使う
前回の記事からずいぶんと時間が経ってしまいましたが、ようやくlocal::libの使い方の解説に投入します。
前回の記事でも解説しましたが、モジュールのインストールの仕組みと、モジュールを読み込む仕組みは別々の物なので、標準以外の場所にモジュールをインストールしたい場合はそれぞれで設定する必要が有りました。この二つの作業をまとめてやってくれるのがlocal::libです。
インストール
local::libのインストール方法には二つ有ります。
- 管理者権限で、他のモジュールと同じ場所へインストールする
通常のモジュールのインストールと同じです。cpanコマンド等を用いてインストールします。
$ sudo cpan local::lib
モジュールは通常のcpanコマンドでインストールする場所にインストールされます。
レンタルサーバ上で環境構築をしたい場合など管理者権限が無くローカルディレクトリへインストールしたい場合や、特定アプリケーション用に使うモジュールなので標準インストールパスへインストールしたくない場合が有ります。
この様な場合に、local::libではブーストラップテクニックと呼ばれる方法でインストール先を決定します。
インストール手順
環境変数の設定
$ curl -LO http://search.cpan.org/CPAN/authors/id/G/GE/GETTY/local-lib-1.006007.tar.gz
$ tar xvf local-lib-1.006007.tar.gz
$ cd local-lib-1.006007
$ perl Makefile.PL --bootstrap
$ make
$ make install
$ echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
最後はシェルにbashを使っている場合の記述です。
これでlocal::lib自体が~/perl5/ディレクトリ配下へインストールされました。
インストールの最後に.bashrcへ追加したのは、local::libを実行して必要な環境変数を設定する内容です。モジュールの読み込み先を-Iオプションでlocal::libをインストールした先を指定し、local::libを実行します。
local::lib自体をを実行すると、以下の環境変数が設定されます(ユーザー名はuserAとしました)。
$ perl -I$HOME/perl5/lib/perl5 -Mlocal::lib
Attempting to create file /Users/userA/perl5/.modulebuildrc
export MODULEBUILDRC="/Users/userA/perl5/.modulebuildrc"
export PERL_MM_OPT="INSTALL_BASE=/Users/userA/perl5"
export PERL5LIB="/Users/userA/perl5/lib/perl5/darwin-2level:/Users/userA/perl5/lib/perl5:$PERL5LIB"
export PATH="/Users/userA/perl5/bin:$PATH"
これでcpanコマンドでモジュールをインストールすると、~/perl5/ディレクトリ配下へインストールされるようになります。また、PERL5LIBも設定されているので、モジュールの読み込みも行われます。
~/perl5/ディレクトリ配下以外へインストールする場合は、以下の様にインストール時に設定します(~/foo/ディレクトリ配下へインストール例)。
$ perl Makefile.PL --bootstrap=~/foo
$ make
$ make install
$ echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc
モジュールの読み込み
.bashrcへlocal::libの設定を追加した場合は、自動的に~/perl5/配下へモジュールのパスが設定されますが、.bashrcへ設定を追加していない場合は、スクリプトの中で明示的にlocal::libを呼び出す必要があります。
use local::lib; # ~/perl5が設定される。
use local::lib '~/foo'; # ~/fooが設定される。
コメントする