miyagawaさんが紹介されていたlocal::libを使って非rootでのCPAN環境を作ってみました。平たく言えばさくらインターネットのレンタルサーバで一般ユーザーでCPAN環境を作ってみました。
とはいえ、多くは先人たちの と大差ありません。まずはlocal::libのアーカイブを取得・解凍します。最新のバージョンは1.003001です。
wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.003001.tar.gz tar xzvf local-lib-1.003001.tar.gz cd local-lib-1.003001
otsuneさんの記事にある通り、BSDPANのエラーを回避する設定をします。自分はbashを使っていますが、さくらのデフォルトのcshellを使っている場合は適宜setenvなどに置き換えてください。
export PKG_DBDIR=$HOME/local/var/db/pkg export PORT_DBDIR=$HOME/local/var/db/pkg export INSTALL_AS_USER export LD_LIBRARY_PATH=$HOME/local/lib mkdir -p ~/local/var/db/pkg
local::libにはまっさらな状態からインストールすることを想定したbootstrapオプションがMakefile.PLにあり、CPANの設定もしてくれます。が、さくらのレンタルサーバにインストールされているCPANモジュールが古いのと設定がされてないため、urllistが設定されずに途中のインストールで失敗するので、CPANの設定を先に行います。
cpan ... cpan> exit
質問に対しては基本的にデフォルトで(リターン連打) ミラーの選択だけAsia>Japanから選べばいいと思います。設定が終了したらCPANシェルを抜けます。(余談ですが、2月16日現在でcharsbarさんオススメの山形大学のミラーが2月6日付けで止まってる気がします。)
Makefileを作成します。
perl MakeFile.PL --bootstrap=$HOME/local ...
ちなみに$HOME/localを省略するとデフォルトの$HOME/perl5にインストールされます。
この時点で$HOME/local/lib/perl5以下にlocal::libが必要とするモジュールがインストールされます。
通常はこの後makeしてインストールすればよいのですが、たまにMakefileが作成されないことがあるので、その場合は先ほどのコマンドを再度実行します。
makeしてtestします。
make && make test ... Files=2, Tests=6, 0 wallclock secs ( 0.04 cusr + 0.04 csys = 0.08 CPU)
問題なさげならmake installします。
make install
シェルの起動時に環境変数を設定するようにします。
echo 'eval $(perl -I$HOME/local/lib/perl5 -Mlocal::lib=$HOME/local)' >>~/.bashrccshellの場合は
echo 'perl -I$HOME/perl5/lib/perl5 -Mlocal::lib' >> ~/.cshrc
こうすることによりシェルが起動されると
export MODULEBUILDRC="/home/hidek/local/.modulebuildrc" export PERL_MM_OPT="INSTALL_BASE=/home/hidek/local" export PERL5LIB="/home/hidek/local/lib/perl5:/home/hidek/local/lib/perl5/i386-freebsd-64int:$PERL5LIB" export PATH="/home/hidek/local/bin:$PATH"
という環境変数が設定されます。
後はいったんシェルを抜けるかsource ~/.bashrc(または.cshrc)してからいつものようにcpanシェルからinstall Bundle::CPANしてください。
なお、環境変数にPERL_MM_OPT="INSTALL_BASE=/home/hidek/local"が設定されているのでcpanシェルを使わずにインストールする時もperl Makefile.PL INSTALL_BASE=$HOME/libする必要なくperl Makefile.PLでよしなにしてくれます。

コメントする