https://blog.csdn.net/tongxin_tongmeng/article/details/127901853
CPAN(Comprehensive Perl Archive Network:全面的Perl存档网络)是查找任何Perl有关的东西的中心仓库。它包含从整个Perl社区收集来的智慧:成百上千的 Perl模块和脚本,相当于好几本书的文档,以及整个Perl发布。如果有东西是用Perl写的,而且这个东西很有用而且是自由的,那么它很有可能就在CPAN上。CPAN在全世界都有镜象,你可以在位于http://www.perl.com/CPAN 的CPAN 路牌上找到离你最近的镜象。那块路牌会记住你选择的是哪个镜象并且你以后再访问 http://www.perl.com/CPAN/ (注意最后的斜杠)的时候就会自动重新定向到那个镜象。另外,你也可以从http://www.cpan.org开始。这个站的界面不同,但是数据是一样的。
authors
这个目录包含许多子目录,每个贡献者一个。比如,如果你想找 Lincoln Stein 那些写得非常好的 CGI 模块(现在是标准 Perl 版本的一部分了),并且你碰巧知道是他写了这些模块,那么你就可以到authors/Lincoln_stein 目录里看看。如果你不知道是他写了这些模块,那么你可以到下面描述的 modules 目录里找。
doc
这个目录保存所有风格的Perl文档,包括Perl的官方手册页的好几种不同的排列和格式,比如文本,HTML,PostScript,和Perl自身的 pod 格式。
modules
这个目录包含用Perl或者Perl和C混合写成的模块。
ports * 这个目录包含源代码,有时候还有一些预编译好的可执行的Perl移植,主要针对那些在标准版本里并不直接支持的操作系统,或者某些很难用的编译器。scripts * 这个目录包含少量从全世界各地发来的各种各样的Perl程序。它们可以用做独立的程序,或者也可以用做例子。目前,这里面还没有很多程序列出,不过,随着时间的推移,这个区域会变得越来越丰富。Perl Power Tools project (Perl 万能工具箱,PPT)也放在这里。PPT的目标是用Perl重新制作所有Unix 、工具。大多数标准的已经完成了,另外还有有些不那么标准的也做完了。
src
在这个目录里,你可以找到标准Perl发布版本的源程序。实际上,是两个标准 Perl版本的源程序,一个标记着 stable(稳定版),另外一个是 devel (开发版)。(该目录的索引页有详细解释。)它们都只是相应版本的链接。早我们写这些的时候,stable.tar.gz 是到 perl-5.6.0.tar.gz(通常的方案是:如果版本号的第二个数字是偶数,那么它就是正式版本,如果是奇数,那么是开发版。后面的.tar.gz 后缀有时候是 .tgz,表示它是一个标准的互联网格式:GNU 压缩的tar归档,常称做“tarball”)的符号链接。
一、安装
安装目录
mkdir /opt/perl && cd /opt/perl
安装包下载
wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz --no-check-certificate
注意:https://www.cpan.org/src获取最新偶数版本下载链接并替换(偶数版本为稳定版)
安装包解压
tar -zxvf perl-5.36.0.tar.gz && rm -rf perl-5.36.0.tar.gz
安装配置
cd /opt/perl/perl-5.36.0
./Configure -des -Dprefix=/opt/perl/perl-5.36.0 -Dusethreads -Uinstalluserbinperl
编译安装
make && make test && make install
环境变量
export PATH=/opt/perl/perl-5.36.0/bin:$PATH
export LD_LIBRARY_PATH=/opt/perl/perl-5.36.0/lib/:$LD_LIBRARY_PATH
卸载旧版本
yum -y remove perl
查看新版本
perl -v
二、下载包
a、手工安装的步骤
在cpan https://metacpan.org/ 搜索对应的包的名称,选择有黄色方框。在左边找到Download下载源码
从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz。假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装)。
cd /home/Bird # 假设放此目录。
tar xvzf DBI-1.13.tar.gz # 解压缩
cd DBI-1.13 # 进入新创建目录
perl Makefile.PL # 生成 Makefile 文件
make # 建立模块
make test # 测试模块
make install # 编译模块
b、使用 CPAN 模块自动安装:
安装前需要先联上线,并且您需要取得root权限。
perl -MCPAN -e shell
初次运行CPAN时需要做一些设置,如果您的机器是直接与internet相联(拨号上网、专线,etc.), 那么一路回车就行了,只需要在最后选一个离您最近的CPAN镜像站点。例如我选的是位于国内的中国自由软件库ftp://freesoft.cgi.gov.cn/pub/languages/perl/CPAN 。否则,如果您的机器位于防火墙之后,还需要设置ftp代理或http代理。
获得帮助
cpan>h
列出CPAN上所有模块的列表
cpan>m
根据关键字在CPAN上查找某个模块:
cpan[1]> i /scws/
CPAN: Storable loaded ok (v2.20)
Going to read '/home/orisun/.cpan/Metadata'
Database was generated on Sat, 17 Nov 2012 08:07:03 GMT
Distribution XUERON/Text-Scws-0.01.tar.gz
Module Text::Scws (XUERON/Text-Scws-0.01.tar.gz)
2 items found
安装模块
cpan>install DBI
自动完成DBI模块从下载到安装的全过程。
退出
cpan>q
查看perl函数的使用方法
perldoc -f func
直接linux终端自动安装
Can't locate URI/Escape.pm in @INC
比如运行时发现报错如上,缺失模块,按照下面方式安装即可。
cpan URI::Escape
三、包管理
1.查看所有已安装的包
perldoc perllocal
# 或
instmodsh
# 或
find `perl -e 'print "@INC"'` -name '*.pm'
2.查看某个已安装包的位置
以 ExtUtils::Install 为例
perldoc -l DBD::mysql
输出
[root@localhost ~]# perldoc -l ExtUtils::Install
/root/perl5/lib/perl5/ExtUtils/Install.pm
3.卸载已安装的包
cpan 没有直接的删除命令 使用 查询命令 找到需要删除的包,找到对应位置后 直接使用 rm 命令删除整个文件夹即可
四、conda 安装 perl 模块
1.bioperl模块
Can‘t locate Bio/SeqIO.pm in @INC问题极简解决
conda install -c bioconda perl-bioperl
安装成功。此时仍不能用bioperl,需要加入环境变量。怎么找到安装路径是个技术活。
$ find anaconda3/* -name "Seq.pm"
anaconda3/envs/repeat/lib/perl5/site_perl/5.22.0/Bio/Seq.pm
anaconda3/envs/compare/lib/perl5/site_perl/5.22.0/Bio/Seq.pm
anaconda3/lib/perl5/site_perl/5.22.0/Bio/Seq.pm
anaconda3/pkgs/perl-bioperl-1.6.924-4/lib/perl5/site_perl/5.22.0/Bio/Seq.pm
可以看到,其实我装其他软件的时候已然有了Bioseq。只是都没加入@INC 而已。很显然,最后一个bioperl是我刚安装的。我可以选择它,或者加以上全部模块路径都加入环境,反正perl从头到尾找就是了。
export PERL5LIB=~/biosoft/anaconda3/pkgs/perl-bioperl-1.6.924-4/lib/perl5/site_perl/5.22.0/:$PERL5LIB
Perl的环境变量是PERL5LIB,PERLLIB应该也可以,我没试,你两个都可加入。
五、安装过程中遇到的报错
是最好指定目录安装,默认安装目录在没有root权限的情况下后续根本无法安装模块。
1.make报错,具体报错如下
IO.xs: In function ‘XS_IO__Poll__poll’:
IO.xs:249: error: invalid application of ‘sizeof’ to incomplete type ‘struct pollfd’
IO.xs:253: error: invalid use of undefined type ‘struct pollfd’
IO.xs:253: error: dereferencing pointer to incomplete type
IO.xs:255: error: invalid use of undefined type ‘struct pollfd’
IO.xs:255: error: dereferencing pointer to incomplete type
IO.xs:257: error: invalid use of undefined type ‘struct pollfd’
IO.xs:257: error: dereferencing pointer to incomplete type
IO.xs:261: error: invalid use of undefined type ‘struct pollfd’
IO.xs:261: error: dereferencing pointer to incomplete type
IO.xs:262: error: invalid use of undefined type ‘struct pollfd’
IO.xs:262: error: dereferencing pointer to incomplete type
应该是路径包含的问题,解决办法比较简单
unset C_INCLUDE_PATH
就可以成功make。
参考:
https://www.jianshu.com/p/9e90b3524fe2
https://blog.csdn.net/tongxin_tongmeng/article/details/127901853
https://www.jianshu.com/p/589d3148b65f
https://blog.csdn.net/whatday/article/details/122251716