17 June 2012

(Ubuntu) rootでcpanモジュールのインストール先が/root/perl5/になっている

rootユーザでcpanライブラリをインストールすると、 /root/perl5/lib/perl5/ に格納される。これは、他のユーザからは見えないので、結果として”ライブラリが見つかりません”ということになる。

ルートユーザでcpanライブラリをインストールする例
$ su - password:******* # cpan Module::Module

sudo可能なユーザがcpanライブラリをインストールした場合は問題なし。

sudo可能なユーザでcpanライブラリをインストールする例
$ su user password:******* # sudo cpan Module::Module password:******

cpanの設定を確認しても、特に怪しいところはない…

# cpan cpan[1]> o conf $CPAN::Config options from /root/.cpan/CPAN/MyConfig.pm: 〜省略〜 makepl_arg [INSTALLDIRS=site] mbuild_arg [] mbuild_install_arg [] mbuild_install_build_command [./Build] mbuildpl_arg [--installdirs site] 〜省略〜

環境変数を調べてみると

# printenv | grep perl PERL5LIB=/root/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int:/root/perl5/lib/perl5 PERL_MB_OPT=--install_base /root/perl5 PATH=/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PERL_LOCAL_LIB_ROOT=/root/perl5 PERL_MM_OPT=INSTALL_BASE=/root/perl5

案の定、環境変数にライブラリの格納先が指定されている。 ~/.bashrc の設定を削除(コメントアウト)してやる。

~/.bashrc
#export PERL_LOCAL_LIB_ROOT="/root/perl5"; #export PERL_MB_OPT="--install_base /root/perl5"; #export PERL_MM_OPT="INSTALL_BASE=/root/perl5"; #export PERL5LIB="/root/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int:/root/perl5/lib/perl5"; #export PATH="/root/perl5/bin:$PATH";