在主目录中安装perl模块时出现问题
发布时间:2020-12-16 06:12:26 所属栏目:大数据 来源:网络整理
导读:我们在HPC集群上安装了Perl(5.26)作为模块环境中的模块.因为我们不希望在整个集群上安装单个用户请求的所有Perl模块,所以我们要求他们在其中一个目录(home,workspace,…)中安装所需的perl模块. 我们建议使用cpanm和local :: lib来安装所需的模块. Cpanm安装
我们在HPC集群上安装了Perl(5.26)作为模块环境中的模块.因为我们不希望在整个集群上安装单个用户请求的所有Perl模块,所以我们要求他们在其中一个目录(home,workspace,…)中安装所需的perl模块.
我们建议使用cpanm和local :: lib来安装所需的模块. Cpanm安装在我们的集群上,用户自己安装local :: lib.然后他们应该能够自己安装perl模块. 实际上,这适用于某些模块.首先,我们设置local :: lib并设置环境 # 1. Install local::lib in your home wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz tar xvf local-lib-2.000024.tar.gz cd local-lib-2.000024 # Install local::lib in your home perl Makefile.PL --bootstrap make test && make install # 2. Configure local::lib,because cpanm uses this configuration. Otherwise cpanm would install modules to system perl,which is not writable for normal users echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bashrc source ~/.bashrc; 现在我们尝试安装一个模块: cpanm HTML::PullParser 它试图安装依赖HTML :: Tagset,它说安装了HTML :: Tagset,但之后找不到依赖.用户PERL5LIB目录中有一个Tagsat目录,但它是空的: Configuring HTML-Tagset-3.20 ... OK Building and testing HTML-Tagset-3.20 ... OK Successfully installed HTML-Tagset-3.20 ! Installing the dependencies failed: Module 'HTML::Tagset' is not installed ! Bailing out the installation for HTML-Parser-3.72. 1 distribution installed 有人遇到过相同的行为并知道如何解决这个问题吗?对于像Math :: CDF这样的模块,它可以工作. 编辑以回答评论: PERL5LIB因此改变了@INC: > set | grep ^PERL PERL5LIB=~/perl5/lib/perl5:/opt/bwhpc/common/devel/perl/5.26/lib/site_perl/5.26.1:/opt/bwhpc/common/devel/perl/5.26/lib PERL_BIN_DIR=/opt/bwhpc/common/devel/perl/5.26/bin PERL_HOME=/opt/bwhpc/common/devel/perl/5.26 PERL_LIB_DIR=/opt/bwhpc/common/devel/perl/5.26/lib PERL_LOCAL_LIB_ROOT=~/perl5 PERL_MAN_DIR=/opt/bwhpc/common/devel/perl/5.26/man PERL_MB_OPT='--install_base "~/perl5"' PERL_MM_OPT=INSTALL_BASE=~/perl5 PERL_VERSION=5.26 > perl -I$HOME/perl5/lib/perl5 -Mlocal::lib PERL_MB_OPT="--install_base "~/perl5""; export PERL_MB_OPT; PERL_MM_OPT="INSTALL_BASE=~/perl5"; export PERL_MM_OPT; 使用-v输出cpanm: Unpacking HTML-Tagset-3.20.tar.gz HTML-Tagset-3.20/ HTML-Tagset-3.20/Tagset.pm HTML-Tagset-3.20/Makefile.PL HTML-Tagset-3.20/META.yml HTML-Tagset-3.20/MANIFEST.SKIP HTML-Tagset-3.20/MANIFEST HTML-Tagset-3.20/README HTML-Tagset-3.20/t/ HTML-Tagset-3.20/t/01_old_junk.t HTML-Tagset-3.20/t/pod.t HTML-Tagset-3.20/t/00_about_verbose.t HTML-Tagset-3.20/Changes Entering HTML-Tagset-3.20 Checking configure dependencies from META.yml Running Makefile.PL Configuring HTML-Tagset-3.20 ... Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for HTML::Tagset Writing MYMETA.yml and MYMETA.json OK Checking dependencies from MYMETA.json ... Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.24) Building and testing HTML-Tagset-3.20 ... cp Tagset.pm blib/lib/HTML/Tagset.pm Manifying 1 pod document PERL_DL_NONLAZY=1 "/cluster/bwhpc/common/devel/perl/5.26/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0,'blib/lib','blib/arch')" t/*.t t/00_about_verbose.t .. ok t/01_old_junk.t ....... ok t/pod.t ............... skipped: Test::Pod 1.14 required for testing POD All tests successful. Files=3,Tests=3,0 wallclock secs ( 0.02 usr 0.01 sys + 0.04 cusr 0.02 csys = 0.09 CPU) Result: PASS Manifying 1 pod document Appending installation info to ~/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod OK Successfully installed HTML-Tagset-3.20 Installing ~/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/HTML-Tagset-3.20/install.json ! Installing the dependencies failed: Module 'HTML::Tagset' is not installed ! Bailing out the installation for HTML-Parser-3.72. 1 distribution installed 解决方法
我偶然找到了问题的答案.设置其他环境变量PERL_CPANM_HOME解决了该问题.
首先我们安装local :: lib # Download and unpack the local::lib tarball from CPAN wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz tar xvf local-lib-2.000024.tar.gz cd local-lib-2.000024 # Install local::lib in your home perl Makefile.PL --bootstrap make test && make install 现在我们使用local :: lib来配置cpanm和Perl,并设置两个额外的环境变量: eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) export PERL_CPANM_HOME=/tmp/cpanm_$USER export MANPATH=$MANPATH:~/perl5/man 现在我们可以在群集的HOME目录中安装Perl模块. cpanm HTML::PullParser (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |