文章目录
- 1. local::lib
- 2. 安装cpam
- 3. 使用cpanm安装模块
-
- 3.1 cpanm
- 3.1 install XML::LibXML 失败
-
- error:
- 3.2 cpanm YAML::Tidy 失败
-
- 3.2.1 error
- 源码安装XML-LibXML 失败
- cpanm LWP
- 查看perl模块的安装目录
- 查看已经安装哪些perl模块
- install libxml2
1. local::lib
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # 1 下载源码包,解压 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 # 2 引导安装 perl Makefile.PL --bootstrap make test -j 48 && make install -j 48 # 3 设置环境变量 echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bash_profile source ~/.bash_profile # 3. 也可以一劳永逸,直接在.bash_profile写入以下内容 PATH="/wind1/home/xiaxsh3/perl5/bin${PATH:+:${PATH}}"; export PATH; PERL5LIB="/wind1/home/xiaxsh3/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; PERL_LOCAL_LIB_ROOT="/wind1/home/xiaxsh3/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; PERL_MB_OPT="--install_base "/wind1/home/xiaxsh3/perl5""; export PERL_MB_OPT; PERL_MM_OPT='INSTALL_BASE=/wind1/home/xiaxsh3/perl5'; export PERL_MM_OPT; or 不会改 export PATH=/wind1/home/xiaxsh3/perl5/bin:${PATH} export PERL5LIB=/wind1/home/xiaxsh3/perl5/lib/perl5:${PERL5LIB} export PERL_LOCAL_LIB_ROOT=/wind1/home/xiaxsh3/perl5:${PERL_LOCAL_LIB_ROOT} export PERL_MB_OPT="--install_base "/wind1/home/xiaxsh3/perl5""; |
1 2 3 4 5 6 | # 激活环境变量后,PERL_MB_OPT,PERL_MM_OPT,PERL5LIB,PATH,PERL_LOCAL_LIB_ROOT应当如下所示: PERL_MB_OPT='--install_base /wind1/home/xiaxsh3/perl5'; export PERL_MB_OPT; PERL_MM_OPT='INSTALL_BASE=/wind1/home/xiaxsh3/perl5'; export PERL_MM_OPT; PERL5LIB="/wind1/home/xiaxsh3/perl5/lib/perl5"; export PERL5LIB; PATH="/wind1/home/xiaxsh3/perl5/bin:$PATH"; export PATH; PERL_LOCAL_LIB_ROOT="/wind1/home/xiaxsh3/perl5:$PERL_LOCAL_LIB_ROOT"; export PERL_LOCAL_LIB_ROOT; |
执行代码,也会出现如下部分路径。
1 2 3 4 5 6 | perl -Mlocal::lib (base) [xiaxsh3@login local-lib-2.000024]$ perl -Mlocal::lib PERL_MB_OPT="--install_base "/wind1/home/xiaxsh3/perl5""; export PERL_MB_OPT; PERL_MM_OPT="INSTALL_BASE=/wind1/home/xiaxsh3/perl5"; export PERL_MM_OPT; |
2. 安装cpam
1 2 3 4 5 6 7 8 | wget https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7043.tar.gz tar -zxf App-cpanminus-1.7043.tar.gz cd App-cpanminus-1.7043 perl Makefile.PL make test -j 48 && make install -j 48 # 使用国内镜像,提高下载速度 echo 'alias cpanm="cpanm --mirror http://mirrors.163.com/cpan --mirror-only"' >>~/.bash_profile |
3. 使用cpanm安装模块
3.1 cpanm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # cpanm -h -v,--verbose Turns on chatty output -q,--quiet Turns off the most output --interactive 开启交互配置(required for Task:: modules) -f,--force 强制安装 -n,--notest Do not run unit tests --test-only 只测试不安装 -S,--sudo sudo to run install commands --installdeps 只安装依赖模块 --showdeps 只显示依赖信息 --reinstall 重新安装 --mirror 指定镜像url (e.g. http://cpan.cpantesters.org/) --mirror-only 只从镜像下载 --prompt Prompt when configure/build/test fails -l,--local-lib Specify the install base to install modules -L,--local-lib-contained Specify the install base to install all non-core modules --self-contained Install all non-core modules, even if they're already installed. --auto-cleanup Number of days that cpanm's work directories expire in. Defaults to 7 Examples: cpanm Test::More # install Test::More cpanm MIYAGAWA/Plack-0.99_05.tar.gz # full distribution path cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz # install from URL cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz # install from a local file cpanm --interactive Task::Kensho # Configure interactively cpanm . # install from local directory cpanm --installdeps . # install all the deps for the current directory cpanm -L extlib Plack # install Plack and all non-core deps into extlib cpanm --mirror http://cpan.cpantesters.org/ DBI # use the fast-syncing mirror # 使用镜像 cpanm --mirror http://mirrors.163.com/cpan --mirror-only MongoDB # 删除模块 pm-uninstall MongoDB # 重新安装 cpanm --reinstall XML::LibXML |
1 | perl -e "use XML::LibXML" |
3.1 install XML::LibXML 失败
1 | cpanm XML::LibXML |
error:
1 2 | Building and testing XML-LibXML-2.0206 ... FAIL ! Installing XML::LibXML failed. See /wind1/home/xiaxsh3/.cpanm/work/1601565316.806/build.log for details. Retry with --force to force install it. |
3.2 cpanm YAML::Tidy 失败
3.2.1 error
1 2 3 | ! Installing the dependencies failed: Module 'YAML::LibYAML::API' is not installed, Module 'YAML::LibYAML::API::XS' is not installed ! Bailing out the installation for YAML-Tidy-0.002. 18 distributions installed |
源码安装XML-LibXML 失败
1 2 3 4 | perl Makefile.PL make make test make install (if all tests are successful) |
1 2 3 4 5 6 7 8 9 10 11 | Warning (mostly harmless): No library found for -lxml2 make: *** [Av_CharPtrPtr.o] Error 127 make: *** Waiting for unfinished jobs.... /bin/sh: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: No such file or directory make: *** [Devel.o] Error 127 /bin/sh: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: No such file or directory make: *** [LibXML.o] Error 127 /bin/sh: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: No such file or directory make: *** [dom.o] Error 127 |
cpanm LWP
1 2 3 4 5 6 | ==> Found dependencies: HTTP::Headers ! Installing the dependencies failed: Module 'HTTP::Headers' is not installed ! Bailing out the installation for HTTP-Negotiate-6.01. ! Installing the dependencies failed: Module 'HTTP::Request::Common' is not installed, Module 'HTML::Entities' is not installed, Module 'HTTP::Daemon' is not installed, Module 'HTTP::Cookies' is not installed, Module 'HTTP::Negotiate' is not installed, Module 'HTML::HeadParser' is not installed, Module 'HTTP::Response' is not installed, Module 'HTTP::Status' is not installed, Module 'HTTP::Request' is not installed ! Bailing out the installation for libwww-perl-6.49. 17 distributions installed |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | mkdir -p $HOME/perl_modules/bin mkdir -p $HOME/perl_modules/man mkdir -p $HOME/perl_modules/man/man1 mkdir -p $HOME/perl_modules/lib (base) [xiaxsh3@login perl_modules]$ vim perl_local_config PREFIX=$HOME/perl_modules \ INSTALLSCRIPT=$HOME/perl_modules/bin \ INSTALLBIN=$HOME/perl_modules/bin \ INSTALLMAN1DIR=$HOME/perl_modules/man1 \ INSTALLSITELIB=$HOME/perl_modules/lib chmod 755 perl_local_config |
1 2 3 4 5 6 | ./Configure -des -Dprefix=$HOME/app/perl5/5.18.2 ./Configure -des -Dprefix=/usr/local/perl ./Configure -des -Dusethreads -Dprefix=/usr/local/perl make -j 48 make test -j 48 make install -j 48 |
错误1:
查看perl模块的安装目录
1 2 3 4 5 | 这里指的是查看那些被添加到了环境变量的perl模块安装目录, 理论上你可以在如何文件夹里面安装一个perl模块, 但是如果不添加到环境变量,意义不大, 因为大多数perl程序只会在环境变量里面搜索安装的perl模块, 其它地方的模块它们无法调用。 |
主要就是@INC这个默认变量 ,可以用下面的代码查看:
1 | perl -e '{print "$_\n" foreach @INC}' |
查看已经安装哪些perl模块
不管你有没有root权限,进入 cpan 然后install ExtUtils::Installed模块
这样就可以执行 instmodsh 这个命令了,可以查看当前环境下所有的模块!
为什么可以直接使用呢,因为模块安装的时候就顺便把instmodsh给你添加到了环境变量,你可以用 which instmodsh 查看它被安装到哪里了。
1 2 3 | cpanm ExtUtils::Installed which instmodsh instmodsh |
1 2 | (base) [xiaxsh3@login sources]$ which instmodsh ~/anaconda3/bin/instmodsh |
1 | find / -name LibXML.pm |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /wind1/home/xiaxsh3/sources/perl_modules/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/sources/perl_modules/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpan/build/XML-LibXML-2.0206-0/LibXML.pm /wind1/home/xiaxsh3/.cpan/build/XML-LibXML-2.0206-0Xeqmv/LibXML.pm /wind1/home/xiaxsh3/.cpan/build/XML-LibXML-2.0206-0Xeqmv/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpan/build/XML-LibXML-2.0206-ehbIqE/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601452444.7732/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601452444.7732/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601565316.806/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601565316.806/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601610119.15529/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601610119.15529/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601614226.24623/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601614226.24623/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601617402.31086/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601617402.31086/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601624469.2399/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601624469.2399/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601624995.3550/XML-LibXML-2.0206/LibXML.pm /wind1/home/xiaxsh3/.cpanm/work/1601624995.3550/XML-LibXML-2.0206/blib/lib/XML/LibXML.pm |
install libxml2
1 2 3 4 5 6 7 8 9 10 11 12 13 | ./configure --prefix=$HOME/app/libxml2/2.7.1 make -j 56 make check -j 56 make install -j 56 # libxml2 2.7.1 environmental setting vim ~/.bash_profile export LIBXML2=$HOME/app/libxml2/2.7.1 export PATH=$LIBXML2/bin:$PATH export LD_LIBRARY_PATH=$LIBXML2/lib:$LD_LIBRARY_PATH export INCLUDE=$LIBXML2/include:$INCLUDE source ~/.bash_profile |