CESM2——环境搭建:perl5

文章目录

  • 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