错误再纠正 | perl 环境重新配置

每次登陆服务器的时候,总会显示缺少XX模块!这可真是太烦人了!今天晚上,我决定把它根除掉。


错误信息:

Can’t locate local/lib.pm in @INC (you may need to install the local::lib module)
(@INC contains:
/opt/ActivePerl-5.26/lib/perl5/lib/perl5 /home/xxzhang/perl5/lib/perl5/5.26.3/x86_64-linux-thread-multi
/home/xxzhang/perl5/lib/perl5/5.26.3
/home/xxzhang/perl5/lib/perl5/x86_64-linux-thread-multi
/home/xxzhang/perl5/lib/perl5 /opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3/x86_64-linux-thread-multi
/opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3
/opt/ActivePerl-5.26/lib/perl5/5.26.3/x86_64-linux-thread-multi
/opt/ActivePerl-5.26/lib/perl5/5.26.3 /home/xxzhang/perl5/lib/perl5/5.26.2/x86_64-linux-thread-multi /home/xxzhang/perl5/lib/perl5/5.26.2
/home/xxzhang/perl5/lib/perl5/5.26.1/x86_64-linux-thread-multi
/home/xxzhang/perl5/lib/perl5/5.26.1 /home/xxzhang/perl5/lib/perl5/5.26.0/x86_64-linux-thread-multi /home/xxzhang/perl5/lib/perl5/5.26.0 /opt/ActivePerl-5.26/lib/perl5/site_perl).
#上面的@INC信息,可能并没有显示全,反正就是perl lib的环境。
#关于Linux的环境配置我可真要好好学习一下
BEGIN failed–compilation aborted.

以及每次运行的时候,仍然会报错找不到模块:

Can’t locate Parallel/ForkManager.pm in @INC (you may need to install the Parallel::ForkManager module) (@INC contains: /home/xxzhang/perl5/lib/perl5/5.26.2/x86_64-linux-thread-multi /home/xxzhang/perl5/lib/perl5/5.26.2 /home/xxzhang/perl5/lib/perl5/x86_64-linux-thread-multi /home/xxzhang/perl5/lib/perl5 /home/xxzhang/miniconda3/lib/site_perl/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/site_perl/5.26.2 /home/xxzhang/miniconda3/lib/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/5.26.2 .) at /home/xxzhang/workplace/QBRC//somatic.pl line 42.
BEGIN failed–compilation aborted at /home/xxzhang/workplace/QBRC//somatic.pl line 42.

我之前的配置只能够暂时性的生效,等到下次再次登录的时候,仍然会报告相似的问题。所以,今天晚上,我立志根除这一现象。该配置环境的配置环境,该安装模块的安装模块,现在开始。


(base) [xxzhang@mu02 ~]$ export PERL5LIB="/opt/ActivePerl-5.26/:$PERLLIB"       
(base) [xxzhang@mu02 ~]$ source .bashrc

Can't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /opt/ActivePerl-5.26/lib/perl5/lib/perl5 /opt/ActivePerl-5.26/ /opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3/x86_64-linux-thread-multi /opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3 /opt/ActivePerl-5.26/lib/perl5/5.26.3/x86_64-linux-thread-multi /opt/ActivePerl-5.26/lib/perl5/5.26.3 /opt/ActivePerl-5.26/lib/perl5/site_perl).
BEGIN failed--compilation aborted.

现在重新登录服务器,看一下是否依旧显示模块(Parallel::ForkManager)缺失。

(base) [xxzhang@mu02 QBRC]$ perl  /home/xxzhang/workplace/QBRC//somatic.pl  NA  NA  RNA:/home/xxzhang/workplace/QBRC/data/CML/K562/SRR5289924_1.fastq.gz  NA  32  hg38  /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta  /home/xxzhang/miniconda3/bin/java  /home/xxzhang/workplace/QBRC/output_job/65/ human 1 ./disambiguate_pipeline >pipeline_RNA.txt

Can't locate Parallel/ForkManager.pm in @INC (you may need to install the Parallel::ForkManager module) (@INC contains: /opt/ActivePerl-5.26/ /home/xxzhang/miniconda3/lib/site_perl/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/site_perl/5.26.2 /home/xxzhang/miniconda3/lib/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/5.26.2 .) at /home/xxzhang/workplace/QBRC//somatic.pl line 42.
BEGIN failed--compilation aborted at /home/xxzhang/workplace/QBRC//somatic.pl line 42.

仅仅是将其精确到/opt/ActivePerl-5.26/还不够,它还是找不到。
我突然想起来这个local::lib模块,是之前师兄帮我下载的,好像配置了一通。我没怎么静下心来关注这件事。现在好了,问题又重新浮出水面了,可见偷懒是不行的。要严格的一步一步踏踏实实的做好才是。

参考链接:https://srcc.stanford.edu/farmshare2/software-perllocallib#:~:text=local%3A%3Alib%20lets%20you%20have%20your%20own%20Perl%20modules%2C,which%20are%20then%20installed%20into%20your%20home%20directory.

(base) [xxzhang@mu02 QBRC]$ perl -Mlocal::lib
PATH="/home/xxzhang/perl5/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/home/xxzhang/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/home/xxzhang/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/home/xxzhang/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/xxzhang/perl5"; export PERL_MM_OPT;

(base) [xxzhang@mu02 ~]$ cpan -i local::lib
Loading internal null logger. Install Log::Log4perl for logging messages
Reading '/home/xxzhang/.cpan/Metadata'
  Database was generated on Thu, 17 Jun 2021 10:55:54 GMT
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/01mailrc.txt.gz
Reading '/home/xxzhang/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with HTTP::Tiny:
http://www.cpan.org/modules/02packages.details.txt.gz
Reading '/home/xxzhang/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Mon, 02 Aug 2021 10:55:56 GMT
  HTTP::Date not available
.............
  New CPAN.pm version (v2.28) available.
  [Currently running version is v2.18]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.
...............................................................DONE
Fetching with HTTP::Tiny:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/home/xxzhang/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /home/xxzhang/.cpan/Metadata
Running install for module 'local::lib'
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/id/H/HA/HAARG/CHECKSUMS
Checksum for /home/xxzhang/.cpan/sources/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz ok
Configuring H/HA/HAARG/local-lib-2.000024.tar.gz with Makefile.PL

Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for local::lib
Writing MYMETA.yml and MYMETA.json
  HAARG/local-lib-2.000024.tar.gz
  /home/xxzhang/miniconda3/bin/perl Makefile.PL -- OK
Running make for H/HA/HAARG/local-lib-2.000024.tar.gz
cp lib/POD2/DE/local/lib.pod blib/lib/POD2/DE/local/lib.pod
cp lib/local/lib.pm blib/lib/local/lib.pm
cp lib/lib/core/only.pm blib/lib/lib/core/only.pm
cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod
Manifying 4 pod documents
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/home/xxzhang/miniconda3/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/bad_variables.t ...... ok
t/carp-mismatch.t ...... ok
t/classmethod.t ........ ok
t/de-dup.t ............. ok
t/lib-core-only.t ...... ok
t/pipeline.t ........... ok
t/shell.t .............. ok
t/stackable.t .......... ok
t/subroutine-in-inc.t .. ok
t/taint-mode.t ......... ok
All tests successful.
Files=10, Tests=172,  4 wallclock secs ( 0.05 usr  0.03 sys +  1.37 cusr  1.12 csys =  2.57 CPU)
Result: PASS
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 4 pod documents
Installing /home/xxzhang/miniconda3/lib/site_perl/5.26.2/POD2/DE/local/lib.pod
Installing /home/xxzhang/miniconda3/lib/site_perl/5.26.2/POD2/PT_BR/local/lib.pod
Installing /home/xxzhang/miniconda3/lib/site_perl/5.26.2/local/lib.pm
Installing /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/core/only.pm
Installing /home/xxzhang/miniconda3/man/man3/local::lib.3
Installing /home/xxzhang/miniconda3/man/man3/POD2::PT_BR::local::lib.3
Installing /home/xxzhang/miniconda3/man/man3/POD2::DE::local::lib.3
Installing /home/xxzhang/miniconda3/man/man3/lib::core::only.3
Appending installation info to /home/xxzhang/miniconda3/lib/5.26.2/x86_64-linux-thread-multi/perllocal.pod
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make install  -- OK

安装的位置在:

/home/xxzhang/miniconda3/lib/site_perl/5.26.2

我们把这个添加到我们的bashrc文件中吧。

# Local Perl
perl_base=/home/xxzhang/perl5
perl_base=/opt/ActivePerl-5.26/lib/perl5
perl_base=/home/xxzhang/miniconda3/lib/site_perl/5.26.2

eval "$(/opt/perl5/bin/perl -I${perl_base}/lib/perl5 -Mlocal::lib=${perl_base})"

Can’t locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5 /opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3/x86_64-linux-thread-multi /opt/ActivePerl-5.26/lib/perl5/site_perl/5.26.3 /opt/ActivePerl-5.26/lib/perl5/5.26.3/x86_64-linux-thread-multi /opt/ActivePerl-5.26/lib/perl5/5.26.3 /opt/ActivePerl-5.26/lib/perl5/site_perl).
BEGIN failed–compilation aborted.

为什么莫名其妙,/home/xxzhang/miniconda3/lib/site_perl/5.26.2/,之后加了lib/perl5/做出修改。

# Local Perl
perl_base=/home/xxzhang/perl5
perl_base=/opt/ActivePerl-5.26/lib/perl5
perl_base=/home/xxzhang/miniconda3/lib/site_perl/5.26.2

eval "$(/opt/perl5/bin/perl -I${perl_base} -Mlocal::lib=${perl_base})"

做出这种修改之后,再次登入服务器,就没有这种类似的错误了。

login as: xxzhang
xxzhang@192.168.79.84's password:
Last login: Mon Aug  2 20:45:33 2021 from 192.168.106.93
(base) [xxzhang@mu02 ~]$ ls
miniconda3  Miniconda3-4.3.11-Linux-x86_64.sh  perl5  workplace

我们切换到workplace/QBRC/目录下。看一下是否依旧报错。

Can't locate Parallel/ForkManager.pm in @INC (you may need to install the Parallel::ForkManager module) (@INC contains: /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5/5.26.2 /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5 /home/xxzhang/miniconda3/lib/site_perl/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/site_perl/5.26.2 /home/xxzhang/miniconda3/lib/5.26.2/x86_64-linux-thread-multi /home/xxzhang/miniconda3/lib/5.26.2 .) at /home/xxzhang/workplace/QBRC//somatic.pl line 42.
BEGIN failed--compilation aborted at /home/xxzhang/workplace/QBRC//somatic.pl line 42.

主要原因还是在这些路径下,找不到模块Parallel/ForkManager.pm的路径。
现在一个想法就是重新安装模块Parallel/ForkManager.pm/home/xxzhang/miniconda3/lib/site_perl/5.26.2/lib/perl5/5.26.2路径下。
安装失败。
主要原因:

The following REQUIRED prerequisites were not satisfied:
Test::Warn is not installed (any version required)
Moo is not installed (any version required)
Moo::Role is not installed (any version required)

这是不对的,一个包的缺失,显示了无数包的缺失。这是不对的。

我现在有另外一个想法,就是在.bashrc文件中直接写入,

export PERL5LIB=/opt/ActivePerl-5.26/lib/perl5
这样的话,每次登入的时候就会读取这条指令。或许可以实现我们想要的需求。

这样的话,就对了。不再出错。
到这里,perl环境就再次配置完成。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值