xserverでperlのcpanをローカル構築。local::lib
xserverのレンタルサーバを使っていますが、perlのライブラリをローカル環境に構築してみました。
方法は以前にさくらレンタルサーバに構築した時とほぼ同じです。
手順
#local libの取得 $wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz #ファイル解凍 $tar zxvf local-lib-1.008004.tar.gz #インストール $cd local-lib-1.008004 $perl Makefile.PL --bootstrap=$HOME/tmp/cpan $make #次のようにsudoを要求されますが、n入力して先に進んでいきます。 ==> Should we try to re-execute the autoinstall process with 'sudo'? [y] $make test $make install #環境変数の設定 $perl -I$HOME/tmp/cpan/lib/perl5 -Mlocal::lib=$HOME/tmp/cpan ※表示内容を.bashrcに追記する export PERL_LOCAL_LIB_ROOT="/home/XXX/tmp/cpan"; export PERL_MB_OPT="--install_base /home/XXX/tmp/cpan"; export PERL_MM_OPT="INSTALL_BASE=/home/XXX/tmp/cpan"; export PERL5LIB="/home/XXX/tmp/cpan/lib/perl5/x86_64-linux-thread-multi:/home/homedqx/tmp/cpan/lib/perl5"; export PATH="/home/XXX/tmp/cpan/bin:$PATH";
これで準備完了
#cpanを実行 $cpan #cpan起動後、好きなモジュールをインストールする cpan > install JSON.pm
これcpanでローカルライブラリに好きなモジュールの追加ができます!
その他 備考録
今回のlocal::libとは直接関係ないですが、さくらレンタルサーバで使っていたperlプログラムをxserverに移行させた時に一部エラーが発生しました。
perlのURI::Escapeを使用したモジュールで発生したエラーです。
Undefined subroutine &main::uri_escape_utf8 called
おそらくバージョン違いとかで、メソッドが定義されていないという事だと思います。
#問題の箇所はここ
my $address = uri_escape_utf8($XXX);
↓
#次のように修正することでエラーは発生しなくなった。
my $address = uri_escape(encode_utf8 $XXX);