利用普通用户执行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

转载请注明文章来自糗世界博客

Posted on 2012-07-27 12:28  joneykk  阅读(1806)  评论(0编辑  收藏  举报