安装Perlberw

1
\curl -L https://install.perlbrew.pl | bash

安装完成后即可不需sudo安装模块,尝试不同版本的perl

使用cpanminus管理模块

使用perlberw安装cpanm

1
perlbrew install-cpanm

使用cpanm安装模块,不需要管理员权限

1
$ cpanm Moose

使用 cpanm 安装模块,会将模块安装到目前使用版本 Perl 函数库~/perl5/perlbrew/perls

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ tree ~/perl5/perlbrew/perls/perl-5.14.1/lib | head 
/Users/c9s/perl5/perlbrew/perls/perl-5.14.1/lib
├── 5.14.1
│   ├── AnyDBM_File.pm
│   ├── App
│   │   ├── Cpan.pm
│   │   ├── Prove
│   │   │   ├── State
│   │   │   │   ├── Result
│   │   │   │   │   └── Test.pm
│   │   │   │   └── Result.pm

使用local::lib

安装了perlbrewcpanm之后,直接使用cpanm安装软件会提示

1
2
3
4
5
6
7
8
9
!
! Can't write to /usr/local/share/perl5 and /usr/local/bin: Installing modules to /home/username/perl5
! To turn off this warning, you have to do one of the following:
!   - run me as a root or with --sudo option (to install to /usr/local/share/perl5 and /usr/local/bin)
!   - Configure local::lib in your existing shell to set PERL_MM_OPT etc.
!   - Install local::lib by running the following commands
!
!         cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
!

若忽略此条,则使得已通过cpanm安装的模块不能被正确调用。以App::pmuninstall为例,安装后,pm-unistall不出现在环境变量中。local::lib安装后即可正确调用。

1
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)

p.s. 在PBS集群中,perl的本地配置不能够直接传递到计算节点,使得PASA运行在需调用perl模块时仍然报错。

perl模块的卸载

使用模块App::pmuninstall ,可卸载其他模块

1
cpanm App::pmuninstall

手动确认卸载完成

perl -e 'print join "\n",@INC' 会print出所有模块和库的安装目录,到这些目录下找到对应的pm删除掉就可以了。

参考来源

https://perlbrew.pl/Perlbrew-%E4%B8%AD%E6%96%87%E7%B0%A1%E4%BB%8B.html

https://blog.csdn.net/u011450367/article/details/41522729

https://www.howtoing.com/how-to-install-perlbrew-and-manage-multiple-versions-of-perl-5-on-centos-7