跳转至

没有学习过perl语言,但是某些程序需要使用perl,就总结perl的一些包的安装方法 在cpan https://metacpan.org/ 搜索对应的包的名称 选择有黄色方框链接。 在左边找到Download下载源码 image.png 下载完成后。

tar -zxvf DBI-1.643.tar.gz
cd DBI-1.643
perl Makefile.PL 
make
make test
make install

非root折磨死人,也安装不上makemaker,下载的包编译需要一堆依赖。决定自己编译一个perl 在自己目录安装perl,注意configure时候,-Dusethreads -Uinstalluserbinperl一定要加上,用于开启多线程。否则,可能需要重新编译。

cd ~/soft/perl
wget -4 http://www.cpan.org/src/5.0/perl-5.26.1.tar.gz
tar -zxvf perl-5.26.1.tar.gz
cd perl-5.26.1
./Configure -des -Dprefix=$HOME/soft/perl/perl-5.26.1 -Dusethreads -Uinstalluserbinperl
make -j8
make -j8 test
make -j8 install
echo 'export PATH=$HOME/soft/perl/perl-5.26.1:$PATH' >>~/.bashrc
source ~/.bashrc

请一定不要自己安装perl的模块并配置到环境变量,一定要用cpan或cpanm安装,否则是后患无穷。你再用capnm安装其他模块时候,会报错的。

如果是非root权限,需要指定目录。

pecify the installation into ~/perl5
    cd perl-module/
    perl Makefile.PL PREFIX=~/perl5
    make
    make test
    make install
echo 'export PERL5LIB="$HOME/perl5/:$PERL5LIB" '>>~/.bashrc

更多非root安装perl包的方法,见参考

如果是Ubuntu,且是root,可以直接使用apt安装 apt-get install libswitch-perl

非root安装rpm包 rpm包查找地址https://pkgs.org/download/perl(ExtUtils::MakeMaker)选择对应的系统,对应的版本软件的二进制文件

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm
#解压缩到本地目录,生成`usr`文件
rpm2cpio perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm|cpio -idvm
mv usr perl-ExtUtils-MakeMaker
echo 'export PATH=/share/softwares/LWP/perl/perl-ExtUtils-MakeMaker/bin:$PATH' >>~/.bashrc

更多信息参考地址https://www.jianshu.com/p/9e90b3524fe2,按照这个可以正确安装。 先安装local-lib

wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
tar xf local-lib-2.000024.tar.gz
cd local-lib-2.000024
perl Makefile.PL --bootstrap=~/opt
make test && make install
echo 'eval "$(perl -I$HOME/opt/lib/perl5 -Mlocal::lib=$HOME/opt)"' >> ~/.bashrc

重启终端

wget https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7043.tar.gz
tar xf App-cpanminus-1.7043.tar.gz
cd App-cpanminus-1.7043
perl Makefile.PL
make test && make install

添加国内镜像

echo 'alias cpanm="cpanm --mirror http://mirrors.163.com/cpan --mirror-only"' >>~/.bashrc
source ~/.bashrc

只有在安装 cpanm后,需要自己在~/ .cpanm目录下创建一个文件才可以用。

mkdir ~/ .cpanm/CPAN
cd  ~/ .cpanm/CPAN
touch MyConfig.pm

把下面内容写入MyConfig.pm文件。

\$CPAN::Config = {
  'auto_commit' => q[0],
  'build_cache' => q[10],
  'build_dir' => q[\$ENV{HOME}/.cpan/build],
  'cache_metadata' => q[1],
  'commandnumber_in_prompt' => q[1],
  'cpan_home' => q[\$ENV{HOME}/.cpan],
  'dontload_hash' => {  },
  'ftp' => q[/usr/bin/ftp],
  'ftp_passive' => q[1],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'histfile' => q[\$ENV{HOME}/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[\$ENV{HOME}/.cpan/sources],
  'lynx' => q[/usr/bin/lynx],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'make_install_make_command' => q[/usr/bin/make],
  'makepl_arg' => q[PREFIX=\$ENV{HOME}/perlmods],
  'mbuild_arg' => q[],
  'mbuild_install_arg' => q[],
  'mbuild_install_build_command' => q[./Build],
  'mbuildpl_arg' => q[],
  'ncftpget' => q[/usr/bin/ncftpget],
  'no_proxy' => q[],
  'pager' => q[less],
  'prerequisites_policy' => q[follow],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'tar' => q[/bin/tar],
  'term_is_latin' => q[0],
  'term_ornaments' => q[1],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[ftp://cpan.cse.msu.edu/], q[ftp://cpan-du.viaverio.com/pub/CPAN/], q[ftp://cpan.mirrors.redwire.net/pub/CPAN/], q[ftp://cpan.hostrack.net/pub/CPAN]],
  'use_sqlite' => q[0],
  'wget' => q[/usr/bin/wget],
};
1;
__END__

每次修改完环境变量后,最好重启终端。我最开始一直提示是缺少makemaker包,通过在自己目录安装新版本的perl解决了这个问题。

使用cpanm安装perl包

#安装bioperl(模块比较多,安装时间比较长)
cpanm Bio::Perl
#安装DBI
cpanm DBI
#安装LWP
cpanm LWP
#安装Switch.pm
cpanm Switch

cpanm还可以指定安装的镜像地址或者从本地安装

wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/Catalyst-Devel-1.42.tar.gz
#下载完成后,直接从本地安装
cpanm ./Catalyst-Devel-1.42.tar.gz

查看已经安装有那些perl的模块或包。

复制下面这段命令到一个新的文件,命名为check.pl.

#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst= ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach(@modules)
{
       my $ver = $inst->version($_) || "???";
       printf("%-12s --  %s\n", $_, $ver);
}
 exit ;

运行这个新的检查脚本,perl check.pl即可输出所有的包和版本号。

有时候cpanm安装包的时候会提示安装成功了,一定要检测一下安装的版本号是否正确。有时候实际并没有安装成功。

分别查看DBI包和GD包的版本号。

perl -MDBI -E 'say DBI->VERSION'
perl -MGD -E 'say GD->VERSION'
回到页面顶部