perl模块安装大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

perl模块安装大全
今天又有小伙伴微信问我perl模块安装的问题,因为ENSEMBL 发布的大多数数据库以及软件都是基于perl的,尤其是分量很重的VEP,所以即使你再如何如何的讨厌perl,也不得不与之打交道。

这种细节问题问我,我当然无法直接给出
答案咯。

毕竟,我的知识积累都不是靠死记硬
背的。

所以需要取回过头查看一下我的博客,
才意识到,我竟然已经写了7篇教程,关于
perl的模块。

目录如下:
•ubuntu服务器解决方案第七讲-perl安装模块
•Perl用cpan在linux上面安装模块
•Perl及R及python模块碎碎念
•perl模块终极解决方案-上
•perl模块终极解决方案-下
•perl程序技巧-检验系统环境或模块安装
首先需要自己确定已经安装了哪些模块,都安装在哪里?还有新的模块需要安装到哪里?然后再学习如何安装新的模块。

装Perl模块有两种方法
•自动安装 (使用CPAN模块自动完成下载、编译、安装的全过程) •手工安装 (去CPAN网站下载所需要的模块,手工编译、安装) 使用CPAN模块自动安装
安装前需要先联上网,有无root权限均可。

初次运行CPAN时需要做一些设置,运行下面的命令即可:
如果你的机器是直接与因特网相联(拨号
上网、专线,etc.),那么一路回车就行了,只
需要在最后一步选一个离您最近的CPAN 镜
像站点。

例如我选的是位于国内的
/itech/admin/ftp:
///CPAN/
如果你的机器位于防火墙之后,还需要设
置ftp代理或http代理。

其实大部分人的机器都不需要走这一步的,肯定是用过了perl的cpan功能啦,除非你是新买的电脑。

下面是常用 cpan 命令。

Net::Server
cpan[1]> d /模块名字或者部分名字/
选择您所需要的模块进行下载
cpan[1]> install 模块名字
一般情况下不推荐这种安装方式,但是总
是会有迫不得已的时候,而且尝试这种方式,
能加深对perl模块的理解。

比如从 CPAN下载了Net-Server模块0.97版的压缩文件Net-Server-0.97.tar.gz,假设放在/usr/local/src/下。

local/src
Net-Server-0.97.tar.gz
Net-Server-0.97
Makefile.PL
如果测试结果报告all test ok,你就可以放心地安装编译好的模块了。

安装模块前,先要确保你对你下载包的文件夹(例子里面是/usr/local/src/)有可写权限(通常以 su 命令获得). 当然,只有root用户才会/usr/local/src/有写入的权限,普通用户把模块文件下载到自己的文件夹即可。

测试自己的模块安装成功与否,用下面的命令,如果没有给出任何输出,那就没问题。

MNet::Server -e1
Linux/Unix下绝大多数的Perl模块。

可能还有少数模块的安装方法略有差别,所以最好先看看安装目录里的README 或 INSTALL。

有的时候如果是build.pl的需要以下安装步骤:(需要Module::Build模块支持)
Build.PL
Build
Build test
Build install
权限的关系
前面我说过,是否有root权限,都可以
调用cpan下载器的,但还是有些微区别的。

如果是root用户,模块其实没有问题,直接用cpan下载器,几乎能解决所有的模块下载安装问题!
但是如果是非root用户,那么就麻烦了,很难用自动的cpan下载器,总有一些模块用cpan下载失败。

这样只能下载模块源码,然后编译,但是编译有个问题,很多模块居然是依赖于其它模块的,你的不停地下载其它依赖模块,最后才能解决,特别麻烦!但是我仍然不推荐大家用手工下载的方式安装
perl模块。

这里我推荐所有的非root用户运行下面的代码获取自己的私人cpan下载器。

-O- | perl - -l ~/perl5 App::cpanminus local::lib
`perl -I ~/perl5/lib/perl5 -Mlocal::lib`
'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`'>> ~/.profile
'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile 就能拥有一个私人的cpan下载器,~/.profile可能需要更改为.bash_profile, .bashrc, etc等等,取决于你的linux系统!然后你直接运行cpanm Module::Name,就跟root用户一样的可以下载模块啦!或者用下面的方式在shell里面安装模块,其中ext是模块的安装目录,可以修改!
MTime::HiRes -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Time::HiRes;
MFile::Path -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Path;
MFile::Basename -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Basename;
MFile::Copy -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Copy;
Handle -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext IO::Handle;
1 > /dev/null 2>&1 || cpanm -v --notest -l ext YAML::XS;
-MYAML -e 1> /dev/null 2>&1|| cpanm -v --notest -l ext YAML;
Simple -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext XML::Simple;
MStorable -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Storable;
MStatistics::Descriptive -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Statistics::Descriptive;
MTie::IxHash -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Tie::IxHash;
-MAlgorithm::Combinatorics-e 1> /dev/null 2>&1 || cpanm -v --notest -l ext Algorithm::Combinatorics;
MDevel::Size -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Devel::Size;
MSort::Key::Radix -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Sort::Key::Radix;
MSort::Key -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Sort::Key;
MBit::Vector -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Bit::Vector;
-M"feature 'switch'"-e 1> /dev/null 2>&1|| cpanm -v --notest -l ext feature;
非root用户的另一个解决方案
手动下载local::lib, 这个perl模块,然后自己安装在指定目录,也是能解决模块的问题!
下载之后解压,进入:
Makefile.PL --bootstrap=~/.perl ##这里设置你想把模块放置的目录
'eval $(perl -I$HOME/.perl/lib/perl5 -
Mlocal::lib=$HOME/.perl)' >> ~/.bashrc
等待几个小时即可
添加好环境变量之后,就可以用
Mlocal::lib -e 'CPAN::install(LWP)'
这样的模式下载模块了,所有的模块都会存储在$HOME/.perl/lib/perl5 里面如果是新写的perl程序,需要在开头加入 use local::lib;
这样才能sets up a local lib at ~/perl5,才能使用该模块!
当然每次写程序添加这个也实在是太麻烦了,其实你也可以直接打开 ~/.bashrc,然后写入下面的内容
/PATH_WHERE_YOU_PUT_THE_P ACKAGE/source/bin/perl_module;
笨蛋,这个里面的内容-路径-是需要你修改的,别直接拷贝粘贴哈)
PERL5LIB
可以把perl模块安装在任何地方,然后通过这种方式去把模块加载到你的perl程序!
"/home/jmzeng/perl5/bin${PATH:+:${PATH}}"; export PATH;
"/home/jmzeng/perl5/lib/perl5${PERL5LIB: +:${PERL5LIB}}"; export PERL5LIB;
"/home/jmzeng/perl5${PERL_ LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
"--install_base
\"/home/jmzeng/perl5\""; export PERL_MB_OPT;
"INSTALL_BASE=/home/jmzeng/perl5 "; export PERL_MM_OPT;
查看perl模块的安装目录
这里指的是查看那些被添加到了环境变量
的perl模块安装目录,理论上你可以在如何
文件夹里面安装一个perl模块,但是如果不
添加到环境变量,意义不大,因为大多数perl
程序只会在环境变量里面搜索安装的perl模
块,其它地方的模块它们无法调用。

主要就是@INC这个默认变量,可以用下面的代码查看:
'{print "$_\n" foreach @INC}'
比如我其中一个服务器显示如下:
jmzeng/perl5/lib/perl5/5.18.2/x86_64-linux-gnu-thread-multi
5.18.2
thread-multi
local/lib/perl/5.18.2
local/share/perl/5.18.2
5.18
5.18
5.18.1
local/lib/site_perl
查看已经安装哪些perl模块
不管你有没有root权限,进入cpan 然后install ExtUtils::Installed模块这样就可以执行instmodsh 这个命令了,可
以查看当前环境下所有的模块!为什么可以直接使用呢,因为模块安装的时候就顺便把instmodsh给你添加到了环境变量,你可以用which instmodsh查看它被安装到哪里了。

bin/instmodsh
要是写脚本校验用户电脑模块的时候用得着。

strict;
ExtUtils::Installed;
$inst= ExtUtils::Installed->new();
@modules = $inst->modules();
(@modules)
$ver = $inst->version($_) || "";
"%-12s -- %s\n", $_, $ver);
0;
模块理论上可以安装到如何地方
比如非root用户,使用cpan ,那么一般会创建/home/yourname/.cpan这个隐藏目录下面存储个人的perl模块。

因为不是root用户,所以cpan并不是万能的,有些包是安装不成功的,比如GD模块而且也可以直接下载模块文件,自己编译到任何目录,只需要在运行自己的脚本的时候加上下面一句话。

lib '/home/your-home/perl_lib';
但是,大部分情况下,我们安装模块不是因为我们自己写脚本需要,而且一些生物信息学软件对模块有依赖,但是我们很少有能力修改那些生物信息学软件。

所以这条路一般是不走的。

如果有很多自己
下载的包,统一安装到了一个目录,就可以把该目录添加目录到@INC。

相关文档
最新文档