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";