1查看具体某个perl模块是否安装

链接

  1. perl -MShell -e "print\"module installed\n\""
  2. #M后紧跟要查询的模块,输出module installed表示模块已安装。

2查看安装了那些perl模块

  1. /usr/bin/instmodsh

3查看那些被添加到了环境变量的perl模块安装目录

  1. perl -e 'print join "\n",@INC'
  2. perl -e '{print "$_\n" foreach @INC}'

~~~~~~~~~~~~~~~~~~~

perl模块安装

perl模块安装有三种方式
链接

1下载压缩包手动安装(无需root权限)

  1. wget -c http://www.cpan.org/authors/id/X/XA/XAOC/ExtUtils-PkgConfig-1.16.tar.gz
  2. cd ExtUtils-PkgConfig-1.16
  3. perl Makefile.PL
  4. make test
  5. #如果测试结果报告“all test ok”,您就可以放心地安装编译好的模块了
  6. make install
  7. perl -MExtUtils::PkgConfig -e1
  8. #如果上面的命令没有给出任何输出,那就没问题

上述步骤适合于 Linux/Unix下绝大多数的Perl模块。可能还有少数模块的安装方法略有差别,所以最好先看看安装目录里的 README 或 INSTALL。
有的时候如果是build.pl的需要以下安装步骤:(需要Module::Build模块支持)

  1. perl Build.PL
  2. ./Build
  3. ./Build test
  4. ./Build install

2CPAN自动安装(需要root权限)

2.1初次运行CPAN时需要做一些设置,运行下面的命令即可:

  1. perl -MCPAN -e shell
  2. cpan>help #查看帮助文档
  3. cpan>m #查看CPAN所有的模块
  4. cpan>install Net::Server #安装Net::Server模块
  5. cpan>quit #退出
  6. 查询:cpan[1]> d /模块名字或者部分名字/
  7. 查询结果中会给出所有含有模块名字或者部分名字的模块,选择您所需要的模块进行下载
  8. 下载安装:cpan[1]> install 模块名字
  9. 同时会自动安装很多依赖的模块,非常方便。

2.2CPAN自动安装方法2

  1. cpan -i 模块名
  2. cpan -i Net::Server
  3. # 先下载tar.gz ...然後手动安装..default 安装到/usr/local/目录下..
  4. #然後修改/usr/bin/perl的symbolic link到/usr/local/bin/per

3CPANM自动安装(无需root)
如果是root用户,模块其实没有问题,直接用cpan下载器,几乎能解决所有的模块下载安装问题!
但是如果是非root用户,那么就麻烦了,很难用自动的cpan下载器,总有一些模块用cpan下载失败。
这样只能下载模块源码,然后编译,但是编译有个问题,很多模块居然是依赖于其它模块的,你的不停地下载其它依赖模块,最后才能解决,特别麻烦!
但是我仍然不推荐大家用手工下载的方式安装perl模块。
这里我推荐所有的非root用户运行下面的代码获取自己的私人cpan下载器。

  1. wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
  2. eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
  3. echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
  4. echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile

就能拥有一个私人的cpan下载器,~/.profile可能需要更改为.bash_profile, .bashrc, etc等等,取决于你的linux系统!
然后你直接运行cpanm Module::Name,就跟root用户一样的可以下载模块啦!
或者用下面的方式在shell里面安装模块,其中ext是模块的安装目录,可以修改!

  1. perl -MTime::HiRes -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Time::HiRes;
  2. perl -MFile::Path -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Path;
  3. perl -MFile::Basename -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Basename;
  4. perl -MFile::Copy -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext File::Copy;
  5. perl -MIO::Handle -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext IO::Handle;
  6. perl -MYAML::XS -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext YAML::XS;
  7. perl -MYAML -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext YAML;
  8. perl -MXML::Simple -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext XML::Simple;
  9. perl -MStorable -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Storable;
  10. perl -MStatistics::Descriptive -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Statistics::Descriptive;
  11. perl -MTie::IxHash -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Tie::IxHash;
  12. perl -MAlgorithm::Combinatorics -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Algorithm::Combinatorics;
  13. perl -MDevel::Size -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Devel::Size;
  14. perl -MSort::Key::Radix -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Sort::Key::Radix;
  15. perl -MSort::Key -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Sort::Key;
  16. perl -MBit::Vector -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext Bit::Vector;
  17. perl -M"feature 'switch'" -e 1 > /dev/null 2>&1 || cpanm -v --notest -l ext feature;

perl模块用cpanm安装后好像是自动添加到环境变量中的。
目前还不太清楚怎么将perl模块添加到环境变量里面。

~~~~~~~~~~~~~~~
总结很好的知乎链接
1、模块基础知识 查看某模块是否安装 列出所有模块 Perl脚本中导入模块 Perl脚本中导入模块指定的函数 将路径下模块添加到Perl环境变量 执行程序时显式指定模块查找路径 查看Perl模块安装目录 2、手动编译安装Perl模块 https://metacpan.org下载 linux终端安装 检查模块是否安装成功 模块路径添加到PERL5LIB环境变量中 方法一 方法二 3、cpan非root权限安装Perl模块 配置个人cpan cpan下载模块 cpan常用参数介绍和配置 cpan下载源 常用国内下载源 cpan下载源配置


1、模块基础知识

  • 查看某模块是否安装

/usr/bin/perldoc Llamas
No documentation found for “Llamas”. #模块不存在报错
/usr/bin/perldoc CGI
#模块存在输出说明文档(一下显示部分内容)NAME
CGI - Handle Common Gateway Interface requests and responsesSYNOPSIS
use strict;
use warnings; use CGI; # create a CGI object (query) for use

  • 列出所有模块

cpan -a
re 0.19_01 0.37 SHAY/perl-5.30.2.tar.gz
sigtrap 1.06 1.09 SHAY/perl-5.30.2.tar.gz
sort 2.01 2.04 SHAY/perl-5.30.2.tar.gz
strict 1.07 1.11 SHAY/perl-5.30.2.tar.gz
strictures::extra undef undef HAARG/strictures-2.000006.tar.gz
。。。。。。。。。。。。。。。。。。。。。。。
输出四列内容:
模块名/版本号/最新版本号/CPAN中的位置

  • Perl脚本中导入模块

!/usr/bin/perl use strict; use warnings; use File::Basename;#导入模块File::Basename

  • Perl脚本中导入模块指定的函数

!/usr/bin/perl use strict; use warnings; #以下两种方法等价 #use File::Basename qw(basename dirname); use File::Basename (‘basename’,’dirname’);

  • 将路径下模块添加到Perl环境变量

手动安装的包,安装到了一个非默认的查找路径下,这时可以通过设置.bashrc 中PERL5LIB环境变量,perl会从这个环境变量中去查找模块,例如
export PERL5LIB=/home/perl_packge/lib/perl5:$PERL5LIB

  • 执行程序时显式指定模块查找路径

perl -I/home/perl_packge/lib/perl5 test.pl #-I与路径之间不能有空格

  • 查看Perl模块安装目录

Perl中Perl模块路径存储在变量@INC中。输出@INC中默认存储的Perl模块路径:
perl -e ‘{print “$_\n” foreach @INC}’
image.png


2、手动编译安装Perl模块

以Parallel::ForkManager模块为例

以下步骤寻找链接地址
image.png
image.png
image.png

  • linux终端安装

wget https://cpan.metacpan.org/authors/id/Y/YA/YANICK/Parallel-ForkManager-2.02.tar.gz . tar -zxvf Parallel-ForkManager-2.02.tar.gz cd Parallel-ForkManager-2.02 ll
image.png
上图显示为Makefile.PL,使用make编译;有的软件为Build.PL,使用build编译。 perl Makefile.PL INSTALL_BASE= /home/perl_packge
Checking if your kit is complete…Looks goodGenerating a Unix-style MakefileWriting Makefile for Parallel::ForkManagerWriting MYMETA.yml and MYMETA.json
make
cp lib/Parallel/ForkManager.pm blib/lib/Parallel/ForkManager.pmcp lib/Parallel/ForkManager/Child.pm blib/lib/Parallel/ForkManager/Child.pmManifying 2 pod documents
make install
Manifying 2 pod documentsInstalling /home/perl_packge/lib/perl5/Parallel/ForkManager.pmInstalling /home/perl_packge/lib/perl5/Parallel/ForkManager/Child.pmInstalling /home/perl_packge/man/man3/Parallel::ForkManager.3pmInstalling /home/perl_packge/man/man3/Parallel::ForkManager::Child.3pm#红色部分为模块安装路径。

  • 检查模块是否安装成功

/usr/bin/perldoc Parallel::ForkManager
No documentation found for “Parallel::ForkManager”.原因是没有将模块安装的路径添加到PERL5LIB环境变量中。有两种解决办法如下:

  • 模块路径添加到PERL5LIB环境变量中

方法一:
vi ~/.bashrc
输入上面模块安装指定的路径输入,如下内容:
export PERL5LIB=/home/perl_packge/lib/perl5:$PERL5LIB
保存
source ~/.bashrc
再次检测模块是否安装成功
/usr/bin/perldoc Parallel::ForkManager
显示帮助文档安装成功 NAME
NAME Parallel::ForkManager - A simple parallel processing fork manager
VERSION version 2.02
SYNOPSIS use Parallel::ForkManager;
my perl模块小结 - 图6MAX_PROCESSES);
DATA_LOOP: foreach my $data (@all_data) { # Forks and returns the pid for the child: my perl模块小结 - 图7pm->start and next DATA_LOOP;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
方法二:
在perl脚本中指定模块安装路径
#!/usr/bin/perl use strict; use warnings; use lib qw(/home/perl_packge/lib/perl5/);#指定模块安装路径 use Parallel::ForkManager;


3、cpan非root权限安装Perl模块

  • 配置个人cpan

wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib eval perl -I ~/perl5/lib/perl5 -Mlocal::lib echo ‘eval perl -I ~/perl5/lib/perl5 -Mlocal::lib‘ >> ~/.bashrc echo ‘export MANPATH=$HOME/perl5/man:$MANPATH’ >> ~/.bashrc source ~/.bashrc
wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
wget -O- http://cpanmin.us fetches the latest version of cpanm and prints it to STDOUT which is then piped to perl - -l ~/perl5 App::cpanminus local::lib. The first - tells perl to expect the program to come in on STDIN, this makes perl run the version of cpanm we just downloaded.perl passes the rest of the arguments to cpanm. The -l ~/perl5 argument tells cpanm where to install Perl modules, and the other two arguments are two modules to install. [App::cpanmins]1 is the package that installs cpanm. local::lib is a helper module that manages the environment variables needed to run modules in local directory.
eval perl -I ~/perl5/lib/perl5 -Mlocal::lib
to set the environment variables needed to use the local modules and then
echo ‘eval perl -I ~/perl5/lib/perl5 -Mlocal::lib‘ >> ~/.bashrc
.bashrc会随着linux系统不同而不同,如.profile .bash_profileto ensure we will be able to use them the next time we log in.(环境变量配置)
echo ‘export MANPATH=perl模块小结 - 图8MANPATH’ >> ~/.bashrc
will hopefully cause man to find the man pages for your local modules.
source ~/.bashrc
立马生效

  • cpan下载模块

经过第一步配置,可以像root账户一样自由下载模块了,以安装Module::Runtime模块为例。
cpan Module::Runtime
方法参考资料:https://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root-user

cpan常用参数介绍和配置

h,? 获得帮助;
o conf 查看当前 CPAN 的配置信息,如下(部分内容)
image.png
o conf 第1列关键字 修改信息 即可以修改对应第2列的配置信息,例如
#常用配置1,修改cpan下载源:添加阿里云源和清华源,不加push会直接覆盖默认内容 o conf urllist push https://mirrors.aliyun.com/CPAN/ https://mirrors.tuna.tsinghua.edu.cn/CPAN/ #常用配置2,修改CPAN 模块安装位置 #Makefile.PL 需要make的模块 o conf makepl_arg INSTALL_BASE=/home/perl15 #Build.PL 需要build的模块 o conf mbuild_arg INSTALL_BASE=/home/perl15 #常用配置3,配置自动提交,修改后以后再修改不用使用o conf commit o conf auto_commit 1 ##以上配置结束后,执行以下命令才能生效,类似linux中source o conf commit
q 退出cpan终端

cpan下载源

cpan默认调用的是http://cpan.org 的源,安装速度慢,可以修改为国内源。

  • 常用国内下载源

cpan上公示常用的国内源见: http://mirrors.163.com/cpan/SITES.html
China http://mirrors.163.com/cpan/ AnHui ftp://mirrors.ustc.edu.cn/CPAN/ http://mirrors.ustc.edu.cn/CPAN/ rsync://mirrors.ustc.edu.cn/CPAN/ Gansu http://mirror.lzu.edu.cn/CPAN/ Hong Kong SAR ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/ http://cpan.metacpan.org/ http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/ http://mirror-hk.koddos.net/CPAN/ rsync://mirror-hk.koddos.net/CPAN/ Liaoning http://mirrors.neusoft.edu.cn/cpan/
其它一些源:
阿里云源https://mirrors.aliyun.com/CPAN/
清华源https://mirrors.tuna.tsinghua.edu.cn/CPAN/

  • cpan下载源配置

方法一:
cpan端同时添加多个源。
#push指定阿里云源和清华源,不加push会直接覆盖默认内容 o conf urllist push https://mirrors.aliyun.com/CPAN/ https://mirrors.tuna.tsinghua.edu.cn/CPAN/ #提交,写入到磁盘配置文件 o conf commit
方法二:
直接修改cpan参数配置文件CPAN/MyConfig.pm,该文件位置可以通过如下获得cpan[6]> o conf$CPAN::Config options from /home/.local/share/.cpan/CPAN/MyConfig.pm:#直接找到urllist添加想添加的源路径
image.png