利用普通用户执行cpan安装Perl模块的方法
wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.005001.tar.gz
tar zxf local-lib-1.005001.tar.gz
cd ~/local-lib-1.005001
perl Makefile.PL --bootstrap
make test && make install
echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
复制代码
编辑当前用户的.bashrc文件
添加
eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib) 到.bashrc 中,这样在利用普通用户执行cpan时,默认的模块安装在~/perl5 的目录中。就不需要在安装Perl模块时切换到root权限
=========================
新的一篇
经常写一些perl程序,放到cluster服务器上就没办法运行,因为它需要root权限安装一些模块(modules),而显然我是不可能拥有root权限的。怎么办呢?幸运的是,有一个模块叫做local::lib,可以完全绕过root权限。
local::lib简介
local::lib是一个可以让你将perl模块安装在用户HOME目录下的perl模块。无需root权限。当然别人是无法使用你自己安装的perl模块的。local::lib本身自然也是不需要root权限的。
local::lib的安装
首先去http://search.cpan.org/dist/local-lib下载最新版的local::lib。
然后在一个terminal内将其解压:
cd Downloads
tar -xzf local-lib-1.00xxxxxx.tar.gz
cd local-lib-1.00xxxxxx
下一步,将local::lib加入至bootstrap当中去。这一步会在用户HOME目录下新建一个perl5的目录,并且指定它为将来安装perl模块的目录。
perl Makefile.PL --bootstrap
而后安装local::lib
make
make test
make install
而后试运行一下perl
perl -MCPAN -eshell
一路选择默认值,然后退出。这一步,perl会将本地的模块搜索目录放入至.bashrc文件尾部。
安装其它perl模块
这个时候我们就可以进行非root权限的perl模块安装了。我们首先需要从先前的terminal窗口中退出来,重开一个terminal窗口,这样就会过一遍.bashrc文件。试着安装一个模块,
perl -MCPAN -eshell
nolock_cpan[1]> install File::ReadBackwards
一切OK。
为cluster扩展library path
可以简单的在qsub文件中运行perl之前加入PERL5LIB的搜索路径
echo $PERL5LIB
然后将传回的值写入qsub当中去
PERL5LIB=/home/path/lib:/usr/another/path/lib; export PERL5LIB
也可在执行命令中加入-I参数
perl -I /home/path/lib -I /usr/another/lib script.pl
或者在pl文件头里加入lib的路径
#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";
use MyCustomModule;
Share this:
Share
转载请注明文章来自糗世界博客