CPAN 的配置与普通用户安装 Perl 模块

九月 28, 2012

我以前曾经在讲 BioPerl 时有意无意地提到,安装 Perl 模块最简单的方法是:

把模块文件下载下来,放到自己的某个目录下面,再把该目录添加到自己的路径(~/.bashrc)里面。例如,以模块 List::MoreUtils 为例,它实际上代表一个名为 List 的文件夹,里面有一个名为 MoreUtils.pm 的文件。把这个文件夹放在自己的目录下面(例如,~/perlmodule/),再把~/perlmodule/目录添加到自己的 $PERL5LIB 变量里面就 OK 了。

export $PERL5LIB = $PERL5LIB:"~/perlmodule/"

自己曾经用这种傻瓜式的方法很长时间。但是这种方法只适合很简单的模块,稍微复杂一点的就不行了,比如依赖于其它模块的,或者需要复杂“处理”的。

真正安装模块的神器是 cpan 这个命令(系统自带,其实是安装 Perl 时默认一起安装的)。

想要安装名字叫做 A 的模块,只需执行一条命令:

cpan A

当然了,名字 A 必须很准确,不能多一个或者少一个字符(这个不难办,网上查一下就出来了)。

不过,大多数情况下这是行不通的,因为你并没有告诉 cpan 应该在什么地方安装模块嘛,那么它就会往标准目录里面安装(多半是 /usr/local/share 之类的)。如果你没有管理员权限,自然也就无法安装成功。

所以我们需要对 cpan 进行配置,而且全部使用普通用户的权限进行操作

输入命令 cpan,就会进入 cpan 的 shell 。(如果你第一次运行 cpan,会问你一些配置的问题,一路回车到底就行,除非遇上填写 urllist 地址的那里,需要写一写,可以看下面)。

输入目录 o conf,会列出当前所有配置的选项。大部分选项都可以默认,随便看看吧。有两个地方得改一下:

(1)镜像站点网址:urllist

这个地方一定得写对,不然下载模块会非常慢。我一般使用北京交通大学的镜像,配置的命令是:

o conf urllist http://mirror.bjtu.edu.cn/cpan

然后还要输入

o conf commit

才能确认

(2)模块安装地址:makepl_arg 和 mbuildpl_arg

假设想把模块安装到 A 目录下面,需要这么写

o conf makepl_arg PREFIX=A

o conf mbuildpl_arg "--install_base A"

然后确认

o conf commit

大部分情况下,这样就够了。以后安装任何模块,一条命令 cpan XXX 就搞定。

当然还需要把模块所在的路径加进自己的 $PERL5LIB 变量。注意不是上面说的 A。因为安装模块时会往 A 里面加入多级目录(比如 A/lib/perl5,或者A/lib/perl5/site_perl/5.x.x/ 相当复杂),自己要去 A 里面仔细看看啦!

posted in Perl by billzt

Follow comments via the RSS Feed | Leave a comment | Trackback URL

4
说点什么

3 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
最新 最旧 得票最多
提醒
游客

暂时用不到,不过MARK。。。

游客

推荐试试cpan的升级版——cpanp(cpan plus)。

游客
billzt

@yixf, 好的!不过老的服务器上没有cpanp

游客
梧桐

你好,楼主,我也是普通用户模式下安装Bio:Perl,之前已经安装过Perl,能用。也按你说的改了,可是每次中途还是会出现
MINGYILIU/Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz
/usr/bin/make test -- OK
Running make install
[sudo] password for dzb:
我的密码不能通过这个,安装失败,不知道这个怎么解决哦?谢谢

 

Copyright © 2010-2018 | Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org