[Perl Talks] 使用 CPANMinus 来安装 Perl 模块和其它技巧

May 5th, 2010

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2010/05/05/perl-cpanminus-cpan.html

Perl 中安装模块很多人头痛的问题,其实解决这个问题的方法实在太多,当然对于新人.太多的选择反到让人很晕.也可能根本就不知道有那些选择.

我以前写过一个CPANPLUS 的使用,CPANPLUS 是用来替换老的 cpan 的.更加好用,更加人性,包括删除模块什么都行.链接地址:http://www.php-oa.com/2010/02/04/cpanplus-per.html 

 CPAN Shell 和 CPANPLUS 的问题

但总体来讲,这个使用还是有些麻烦,如果用户本身没有 CPANPLUS 这个,单安装这个 CPANPLUS  就是一个很麻烦的事.因为它本身就依靠很多其它的模块才能正常跑.让用户会更加头痛.

Perl 本身的 CPAN Shell  启动麻烦,还要配置大量的内容,对新手来说,只要一个能立即上手的 Perl 环境快速的开发就行了,没有必要给时间浪费在这个上面. 
 

 CPANMinus 的优点

因为以上问题,无所不能的 Perl 爱好者总是有各种方法来使问题简单.下面我要讲的这个就是能使大家安装模块更加简单的 非常棒的方法.

这个 CPANMinus 有什么神奇.其中,下载后就能直接使用,不需要任何其它的模块(当内 Perl 本身的 Module::Build , ExtUtils::MakeMaker 和 C Compiler 还是要,这个是系统就有的).有没有 Root 权限都不重要.不是 Root 会自动安装到当前用户的目录.
 

 CPANMinus 的安装

单文件安装,只这样安装其实就好了.

$ wget  http://xrl.us/cpanm  --no-check-certificate -O /sbin/cpanm
$ chmod +x  /sbin/cpanm 

 完整版本安装 使用了上面,没有必要运行下面的方法,

$ wget -O- http://xrl.us/cpanm  --no-check-certificate | perl - --sudo --self-upgrade \
 --mirror http://mirrors.163.com/cpan --mirror-only

安装完了….太 easy 了,因为他就一个文件.这个例子是下载 cpanm 以后,直接用他来安装第一个软件叫 App::cpanminus.其实就是它自己.
 

 

 CPANMinus 的使用

$ cpanm ModuleName

 例如

$ cpanm YAML
Fetching http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/YAML-0.71.tar.gz ... OK
Configuring YAML-0.71 ... OK
Building and testing YAML-0.71 for YAML ... OK
Successfully reinstalled YAML-0.71

 使用也容易吧,他还可以直接加本身的模块名,远程的模块的 Url 之类.容易吧

CPANMinus 的技巧

因为国内常常被 gfw 掉,所以我们感觉 cpanm 非常慢,其实主要原因是因为我们连接不到国外的服务器,cpanm 新的版本会从镜象服务器取 02packages.txt.gz 这个文件回来,我们可以加一个 `–mirror-only` 让他只从镜象取,然后在给镜象指向国内就好

可以修改 .bashrc

alias cpanm='cpanm --sudo --mirror http://mirrors.163.com/cpan --mirror-only'

 本地镜象使用这条

alias cpanm='cpanm --mirror ~/CPAN/ --mirror-only'

注意 –mirror-only 只有在比较新的 cpanm 上才可以使用,老的 cpanm 不能正常使用…大约 1.0 的版本不行…

 

 

其它一些技巧

删除模块

很多人都问怎么删除 CPAN 上的模块,下面我来教大家一个新的模块,App::pmuninstall 这个先安装. 

$ cpanm App::pmuninstall 

使用很简单 

$ pm-uninstall YAML   # YAML 只是一个模块的名字,任何你要删除的模块的名字都能加在这

 

安装和更新最新的模块(查所有安装的模块和版本)

 我们常常很多模块老了,我们想用最新的 cpan 本身没有好的控制机制,所以我们在这可以使用一个模块来完成同样的功能,叫  App::cpanoutdated 这个可以用来查找本机上安装的模块,有那些可以更新,并会列出来. 一样使用 cpanm 来安装,我就不讲安装方法了.

$ cpan-outdated
M/ML/MLEHMANN/AnyEvent-5.31.tar.gz
M/ML/MLEHMANN/AnyEvent-HTTP-2.03.tar.gz
N/NA/NAIM/AnyEvent-HTTPBenchmark-0.09.tar.gz
P/PH/PHRED/Apache-Reload-0.11.tar.gz
P/PH/PHRED/Apache-SizeLimit-0.95.tar.gz
P/PH/PHRED/Apache-Test-1.36.tar.gz
B/BI/BINGOS/Archive-Extract-0.48.tar.gz
B/BI/BINGOS/Archive-Tar-1.76.tar.gz
S/SM/SMUELLER/Attribute-Handlers-0.88.tar.gz
S/SM/SMUELLER/AutoLoader-5.71.tar.gz
F/FL/FLORA/autouse-1.06.tar.gz
R/RU/RURBAN/B-C-1.29.tar.gz
R/RU/RURBAN/B-Debug-1.16.tar.gz
F/FL/FLORA/B-Lint-1.12.tar.gz
R/RG/RGARCIA/base-2.15.tar.gz
F/FL/FLORA/bignum-0.25.tar.gz

我们可以直接传给 cpanm 来安装

$ cpan-outdated | cpanm

 查看 Perl 模块的相关信息(安装位置,版本等)
只要安装 App::pmodinfo这个模块就行,然后就能使用下面的这个功能了

  • -v version
  • -f full
  • -h hash
  • -l,–local-modules
  • -u,–check-updates
$ pmodinfo --full Redis::Dump
    Redis::Dump is installed with version 0.013.
    cpan page  : http://search.cpan.org/dist/Redis-Dump
    filename   : /Users/thiago/perl5/perlbrew/perls/perl-5.14.0/lib/site_perl/5.14.0/Redis/Dump.pm
      ctime    : 2011-07-05 19:56:54
    POD content: yes
    Last cpan version: 0.013

 

 

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. yfeng
    Apr 5th, 2011 at 14:24
    Reply | Quote | #4

    这模块不错..会自动处理依赖关系吧..

  2. admin
    Apr 6th, 2011 at 08:55
    Reply | Quote | #5

  3. Nam
    Jul 24th, 2011 at 11:49
    Reply | Quote | #6

    不错..

  4. an9
    Oct 18th, 2011 at 03:29
    Reply | Quote | #7

    路过学习一下.

  5. fans
    Dec 2nd, 2011 at 06:51
    Reply | Quote | #8

    好给力。。。还有比它更牛的么?

  6. Perl 学习笔记 | Edwin
    Dec 5th, 2011 at 09:52
    #9
  7. zyg0x0
    Dec 12th, 2011 at 14:15

    $ pm-uninstall YAML 这个命令我在cpanm App::pmuninstall 以后怎么显示没这个命令呢?

  8. zyg0x0
    Dec 12th, 2011 at 14:22

    @zyg0x0
    不好意思i 刚才那个没装成功 没问题了 不好意思

  9. 扶 凯
    Dec 12th, 2011 at 14:31

    呵呵,自己能研究成最好