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