CentOS7下安装用户自己的perl模块

CentOS7系统默认设置下,每当用户登录时,会自动在其家目录下生成名为perl5的文件夹。该文件夹是用于安装用户自己的perl模块,以利于用户使用一些生物信息学软件对perl模块的需求。但是有一部分人觉得该文件夹比较打乱家目录的布局,可以采用以下两种方法来解决。

1. 关闭Perl模块local::lib功能

CentOS7系统下,每次登录用户,会运行配置文件/etc/profile.d/perl-homedir.sh,查看该内容,可以发现生成$HOME/perl5文件夹是执行了如下命令:

# perl -Mlocal::lib
    该命令是执行了Perl的local::lib模块,默认设置下,能自动生成$HOME/perl5文件夹,并设置好相关的perl5环境变量,优先使用用户本地的perl模块。

执行以下命令修改/etc/profile.d/perl-homedir.sh文件中的PERL_HOMEDIR值为0,则不会执行以上命令,从而不会自动生成$HOME/perl5文件夹,关闭Perl模块local::lib功能。

# perl -p -i -e 's/PERL_HOMEDIR=1/PERL_HOMEDIR=0/' /etc/profile.d/perl-homedir.sh

此外,也可以考虑删除掉perl-home软件包,相当于删除local::lib模块:

查找系统中的perl-home软件包的名字,并删除之
# rpm -qa | grep perl-home
# rpm -e perl-homedir-1.008010-4.el7.noarch

2. 改变Perl模块local::lib的默认路径

第一种方法关闭了Perl模块local::lib功能,导致没有root权限的人无法安装perl模块,会带来一些软件无法使用。推荐在第一种方法的基础上,再自行安装local::lib模块到用户家目录中指定的文件夹中。

下载local::lib模块并手动安装到家目录下的.perl5隐藏文件夹下:
$ wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
$ tar zxf local-lib-2.000024.tar.gz
$ cd local-lib-2.000024/
$ perl Makefile.PL --bootstrap=$HOME/.perl5
    通--bootstrap参数将模块安装到指定的文件夹
$ make test && make install
$ cd .. && rm local-lib-2.000024 -rf

设置每次登录用户后,启用local::lib功能并识别$HOME/.perl5目录:
$ echo 'eval "$(perl -I$HOME/.perl5/lib/perl5 -Mlocal::lib=$HOME/.perl5)"' >> ~/.bashrc
    执行perl -Mlocal::lib=$HOME/.perl5命令能建立$HOME/.perl5文件夹并自动设置perl5的环境变量。
$ source ~/.bashrc
$ echo $PERL5LIB
    检查perl5的模块识别路径
$ cpan -i XML::Simple
    安装一个最常用的Perl5模块。

本方法将perl5的模块安装路径由perl5改变到了.perl5隐藏文件夹。其实没有太大意义,只是对完美主义的强迫症犯者有帮助而已。

3. 修改cpan源

cpan
cpan[1]> o conf urllist http://mirrors.163.com/cpan
cpan[2]> o conf commit

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据