每次登陆服务器的时候,总会显示缺少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环境就再次配置完成。