从 1994 年 10 月 17 日发布的 Perl 5.000 起,Perl 增加了模块的概念,用来提供面向对象编程的能力。这是 Perl 语言发展史上的一个里程碑。此后,广大自由软件爱好者开发了大量功能强大、构思精巧的 Perl 模块,极大地扩展了 Perl 语言的功能。

CPAN,Comprehensive Perl Archive Network(https://www.cpan.org/) 是 Perl 模块最大的集散地,包含了现今公布的几乎所有的 perl 模块。CPAN 从 1995 年 10 月 26 日开始创建,截止 2019 年 4 月该网站已经囊括了超过 13,750 位作者编写的 180,202 个 Perl 模块,其镜像分布在全球在 257 台服务器上。

Perl 作为生物信息数据预处理、文本处理和格式转换中的一把瑞士军刀,其强大和重要性不言而喻。今天,我们在这里主要介绍一下各种平台下 perl 模块的安装方法。以安装 Bio::SeqIO 模块为例。

一、Linux 下安装 Perl 模块

Linux/Unix下安装Perl模块有两种方法:手工安装和自动安装。 第一种方法是从 CPAN 上下载您需要的模块,手工编译、安装。第二种方法是使用 CPAN 模块自动完成下载、编译、安装的全过程。

1.1 手工安装

  1. # 从 CPAN(https://metacpan.org/)下载了 BioPerl 模块 1.7.5 版的压缩文件 BioPerl-1.7.5.tar.gz
  2. # 假设放在/usr/local/src/下。
  3. $ cd /usr/local/src
  4. # 解压缩这个文件,这时会新建一个 BioPerl-1.7.5 的目录。
  5. $ tar xvzf BioPerl-1.7.5.tar.gz
  6. # 换到解压后的目录
  7. $ cd BioPerl-1.7.5
  8. # 生成 makefile,如果要指定模块的安装路径,需要添加 PREFIX=/path/to/install 路径
  9. $ perl Makefile.PL (PREFIX=/home/shenweiyan/perl_modules)
  10. # 生成模块
  11. $ make
  12. # 测试模块(这步可有可无):
  13. $ make test
  14. # 如果测试结果报告"all test ok",您就可以放心地安装编译好的模块了。
  15. # 安装模块前,先要确保您对 perl5 安装目录有可写权限(通常以 su 命令获得),执行:
  16. $ make install
  17. # 现在,试试 Bio::SeqIO 模块吧。如果下面的命令没有给出任何输出,那就没问题。
  18. $ perl -MBio::SeqIO -e1
  19. # 如果指定 PREFIX 安装路径,模块安装完成后,需要把模块安装的新路径添加到 PERL5LIB 环境变量
  20. $ export PERL5LIB=$PERL5LIB:/home/shenweiyan/perl_modules/lib/site_perl //或者把该行内容添加到 ~/.bashrc

bioperl-install.png

上述步骤适合于 Linux/Unix 下绝大多数的 Perl 模块。可能还有少数模块的安装方法略有差别,所以最好先看看安装目录里的 README 或 INSTALL。

有的时候如果是 Build.PL 的需要以下安装步骤:(需要 Module::Build 模块支持)

  1. $ perl Build.PL
  2. $ ./Build
  3. $ ./Build test
  4. $ ./Build install

1.2 自动安装

Linux/Unix 下自动安装 Perl 模块主要有两种方法,一是利用 perl -MCPAN -e 'install 模块' 安装;二是直接使用 cpan 的命令执行安装。这两种方法都是通过与 CPAN 进行交互,然后执行对应模块的自动安装,本质上都是一样的。

1.2.1 使用 CPAN 模块自动安装方法一

  • 执行 perl -MCPAN -e shell 命令,或者直接运行 cpan 命令,都可以进入 cpan 交互模式。

cpan-linux.png

  • 安装前需要先联上网,有无 root 权限均可。对于非 root 用户,Perl 提供了 ‘local::lib‘、’sudo‘ or ‘manual‘ 三种使用 CPAN 模块自动安装的方式,初次运行 CPAN 时需要用户自行进行选择设置,默认为 ‘local::lib‘。
  • 初次运行 CPAN 时需要做一些设置,如果我们的机器是直接与因特网相联,那么一路回车就行了。

cpan-setting.jpg

  • 常用 cpan 命令: ```bash

    获得帮助

    cpan> help

列出 CPAN 上所有模块的列表

cpan>m

安装模块,自动完成 Bio::SeqIO 模块从下载到安装的全过程。

cpan> install Bio::SeqIO

查看当前 CPAN 使用的镜像站点

cpan[3]> o conf urllist

查看当前 CPAN 的配置信息

cpan[2]> o conf

退出

cpan> quit

  1. <a name="e26bf2c8"></a>
  2. ### 1.2.2 使用 CPAN 模块自动安装方法二
  3. ```bash
  4. cpan -i 模块名
  5. 例如:cpan -i CGI

1.2.3 修改 CPAN mirror 的默认源

安装 perl 下的很多模块文件时,比较快捷的方法是使用 cpan 工具。默认 cpan shell 使用的是 cpan.org 的源,在国内使用的话速度会非常的慢。如果更换为国内的如阿里或网易等公司的源的话,速度会明显提高。修改方法如下:

  • 执行 cpan 命令,或者通过 perl -MCPAN -e shell 命令进入 CPAN 交互模式查看当前源配置。

    1. cpan[1]> o conf
    2. $CPAN::Config options from /root/.cpan/CPAN/MyConfig.pm:
    3. commit [Commit changes to disk]
    4. defaults [Reload defaults from disk]
    5. help [Short help about 'o conf' usage]
    6. init [Interactive setting of all options]
    7. applypatch []
    8. auto_commit [0]
    9. build_cache [100]
    10. build_dir [/root/.cpan/build]
    11. build_dir_reuse [0]
    12. ......
    13. cpan[2]> o conf urllist
    14. urllist
    15. 0 [http://www.cpan.org/]
    16. Type 'o conf' to view all configuration items
  • 增加源或移出源并提交 ```bash cpan[2]> o conf urllist urllist

    1. 0 [http://www.cpan.org/]

    Type ‘o conf’ to view all configuration items

cpan[3]> o conf urllist push https:////mirrors.aliyun.com/CPAN/ Please use ‘o conf commit’ to make the config permanent!

cpan[4]> o conf commit commit: wrote ‘/root/.cpan/CPAN/MyConfig.pm’

cpan[5]> o conf urllist urllist 0 [http://www.cpan.org/] 1 [https://mirrors.aliyun.com/CPAN/] Type ‘o conf’ to view all configuration items

  1. 移出一个源或者多个源可以使用 `pop` 函数,如下:
  2. ```bash
  3. cpan[6]> o conf urllist pop https://mirrors.aliyun.com/CPAN/
  4. cpan[3]> o conf urllist pop http://www.cpan.org/ https://mirrors.aliyun.com/CPAN/

也可以一次增加多个源:

  1. cpan[4]> o conf urllist ftp://mirrors.sohu.com/CPAN/ http://mirrors.163.com/cpan/

$ cpan Loading internal logger. Log::Log4perl recommended for better logging Terminal does not support AddHistory.

To fix that, maybe try> install Term::ReadLine::Perl

cpan shell — CPAN exploration and modules installation (v2.26) Enter ‘h’ for help.

cpan[1]> o conf urllist urllist 0 [http://www.cpan.org/] 1 [http://mirrors.aliyun.com/CPAN/] Type ‘o conf’ to view all configuration items

  1. ![2.png](https://cdn.nlark.com/yuque/0/2019/png/126032/1554197701341-40d10dbe-50b2-4d6a-b827-394e56594166.png#align=left&display=inline&height=338&margin=%5Bobject%20Object%5D&name=2.png&originHeight=338&originWidth=601&size=13447&status=done&style=none&width=601)<br />
  2. - 如果对当前的当前所有的 cpan shell 的配置不满意,也可以通过命令重新初始化该文件,如下:
  3. ```bash
  4. cpan> o conf init

1.2.4 使用 cpanm 命令安装

除了 cpan 以外,Perl 的模块安装还可以通过 cpanm 命令进行安装,而要获取 cpanm 命令我们需要先安装 Perl 的 App::cpanminus 模块:

  1. [root@ecs-steven data]# cpan
  2. Loading internal logger. Log::Log4perl recommended for better logging
  3. Terminal does not support AddHistory.
  4. To fix that, maybe try> install Term::ReadLine::Perl
  5. cpan shell -- CPAN exploration and modules installation (v2.26)
  6. Enter 'h' for help.
  7. cpan[14]> install App::cpanminus
  8. Running install for module 'App::cpanminus'
  9. Fetching with HTTP::Tiny:
  10. http://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz
  11. CPAN: checksum security checks disabled because Digest::SHA not installed.
  12. Please consider installing the Digest::SHA module.
  13. Scanning cache /root/.cpan/build for sizes
  14. ......

App::cpanminus 模块安装完成后, cpanm 命令就会自动安装到对应 Perl 所在的目录(如果用的是 /bin/perlcpanm 将默认安装到 /usr/local/bin/cpanm )。

使用 cpanm 安装 Perl 模块,命令后直接接模块名称即可,如:

  1. $ sudo cpanm CGI::Session
  2. $ sudo cpanm Template

注: 如果不是 root 权限,cpanm 也一样能用。它会将模块下载安装到用户的根目录(~)下。

为了加快 cpanm 下载速度, 可以指定使用镜像. 并只从镜像下载. 如下:

  1. $ sudo cpanm --mirror http://mirrors.163.com/cpan --mirror-only CGI::Session

二、windows 下 Perl 模块安装

在开始介绍 windows 下 Perl 模块安装前,我们先来了解一些关于 make、gmake、nmake、dmake 等编译工具。

Make 是一种自动化构建工具,用于从源码自动生成可执行程序和库(通常借助于 makefile 来推导出目标程序);Make 有多个版本,如 Unix/Linux下 的 GNU Make(之所以有 gmake,是因为在别的平台上 make 一般被占用,GNU make 只好叫 gmake 了)、Windows 下的 Microsoft nmake 等。dmake 则是一个适用于 Linux、Solaris、Win32 以及其他平台的跨平台的命令行编译工具,除此之外,跨平台编译工具中还有一个大名鼎鼎的 cmake。

关于 Make 的详细介绍,具体可参考:Wikipedia: Make (Software)

dmake 工具:https://metacpan.org/release/dmake,具体安装方法请自行谷歌(dmake 貌似是 cpan 环境配置好就有了在 “C:\Perl\site\bin” 下)。

nmake 是 Microsoft Visual Studio 中的附带命令,需要安装 VS;安装 VS 后,nmake.exe 出现在 C:\Program Files (x86)\Microsoft Visual Studio 9\VC\bin 目录下(bin 文件夹的位置根据每个人系统不同,找到自己的安装位置,bin 文件夹中包含 nmake 即可)。如果 VS 安装过程中,没有注册 VS 的环境变量,因此直接在 cmd 的 DOC 中输入 nmake 就会出现:”‘nmake’ 不是内部或者外部命令,也不是可运行的程序或批处理文件” 报错。

使用 nmake 的方法有两种:

  1. 打开 VS 自带的命令行 “Visual Studio 2008 Command Prompt“,然后在该命令行中使用 nmake;
  2. 将路径 “C:\Program Files (x86)\Microsoft Visual Studio 9\VC\bin“ 设置到环境变量中去,然后在 DOS 命令行中使用 nmake。

2.1 解压编译手动安装

windows 下手动 Perl 模块方法跟 Linux类似。都需要解压后执行:

  1. perl makefile.pl
  2. nmake/dmake
  3. nmake/dmake test
  4. nmake/dmake install

2.2 cpan 自动安装

安装前需要对 cpan 配置,cpan需要安装其他的模块 dmakeMinGw gcc compiler。完成后,进入 cpan 交互界面安装(参考上面的 linux cpan 自动安装)。

2.3 PPM 自动安装

如果使用 ActivePerl,可以使用 PPM(Perl Package Manager) 来安装,使用 PPM GUI 或 PPM Commandline。PPM commandline 实例如下:

  1. add correct repositories.
    1. c:\perl\bin\ppm repo add http://theoryx5.uwinnipeg.ca/ppms/package.lst
    2. c:\perl\bin\ppm repo add http://www.roth.net/perl/packages/

通过设置不同的 repositories 可以加速部分 Perl 模块的下载,我们也可以通过 ppm 命令查看可用的 repositories list:

  1. # Use the command ppm repo list to list all installed PPM repositories in ActivePerl 5.10 through 5.14.
  2. PS C:\> ppm repo list
  3. ┌────┬───────┬────────────────────────────────┐
  4. id pkgs name
  5. ├────┼───────┼────────────────────────────────┤
  6. 1 13334 ActiveState Package Repository
  7. 2 294 Theoryx
  8. └────┴───────┴────────────────────────────────┘
  9. (2 enabled repositories)
  10. PS C:\>
  11. # The command ppm repo desc #, where "#" is the number of the repository (in the order it was added), will display information about that repository:
  12. PS C:\> ppm repo desc 2
  13. Id: 2
  14. Name: Theoryx
  15. URL: http://cpan.uwinnipeg.ca/PPMPackages/14xx/
  16. Enabled: yes
  17. Last-Status: 200 OK
  18. Last-Access: 9 seconds ago
  19. Refresh-In: 1 day
  1. install the packages ``` c:\perl\bin\ppm install Carp-Assert

c:\perl\bin\ppm install Log-Log4perl

c:\perl\bin\ppm install YAML-Syck

  1. 更多关于 ActivePerl 的文档与资料,可以参考:[http://docs.activestate.com/](http://docs.activestate.com/)。
  2. <a name="e1688925"></a>
  3. # 三、其他异常处理
  4. <a name="ef29a"></a>
  5. ## 3.1 not contain a Line-Count heade
  6. 使用 cpan 安装 PERL 模块的时候,遇到下面的问题导致无法安装 Perl 模块,具体错误信息如下:
  7. ```perl
  8. cpan> install Getopt::Long
  9. .........
  10. ...........
  11. Going to read /root/.cpan/sources/modules/02packages.details.txt.gz
  12. Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
  13. Please check the validity of the index file by comparing it to more
  14. than one CPAN mirror. I'll continue but problems seem likely to
  15. happen.
  16. Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.

原因是由于 cpan 模块中的数据损坏造成。解决方法如下:

  1. 删除用户主目录下面的 cpan 目录:

    1. rm -rf ~/.cpan
  2. 执行 perl -MCPAN -e shell 命令,输入:

    1. cpan[1]> reload index
  3. 安装此模块:

    1. cpan[1]> install Bundle::CPAN
  4. 最后执行

    1. cpan[1]> reload CPAN

这样即可正常通过命令行 install MODULES 模块的正常安装了。

四、参考资料