從cpan上安裝perl模組
CPAN是perl的一個第三方原始碼模組庫,裡面有上百萬的perl模組,用來支撐perl強大的功能,從生物工程到天文計算,從巨集觀世界到原子力學,無所不有。為了很方便的安裝perl模組,有人做了一個CPAN模組,用cpan命令來管理和安裝CPAN網站上的所有perl模組。
-------------------
CPAN
cpan命令
cpan命令其實也是一個perl指令碼,對於不同版本的perl,可能cpan命令的功能強弱有所不同;執行cpan,我們進入了一個類似bash的介面,暫且叫做cpanshell,cpanshell上可以像bash一樣輸入命令,這個命令是CPAN所特有的,我們一般常用到的cpan命令主要有:
help
help命令是顯示幫助資訊,這裡麵包含了所有的cpan命令,雖然看上去只有一屏,但功能確是非常強大。
m //
這個是一個模式,用來查詢perl模組,有點像perl正則裡面的m//,用於匹配(match),但這裡m與//之間多了一個空格,且這裡的m指'modules',意思是根據模組名稱查詢,//內可以使用正則; 同理a(authors)、b(bundles)、d(distributions)和i(in all)都有這種模式。
install
install命令是安裝perl模組,一般是接模組名稱,而不是壓縮包名字。比如DBD::mysql,而不是DBD-mysql,即
install DBD::mysql
CPAN配置
CPAN安裝是網路安裝,如果沒有網路,使用cpan命令是無法安裝的,所以CPAN安裝的速度是與網路有直接關係;當然我們可以選擇一個快速的映象站點來安裝CPAN模組,那如何配置呢?
如果是第一次使用CPAN,那麼執行cpan命令的時候,cpan命令會給出配置的友好提示,不過很多人都對這個友好提示的繁冗程度顯得很不耐煩,不過新版本的CPAN模組已經改善了這一缺點;如果不是第一次使用CPAN,而以前別人配置的CPAN映象站點出了問題不能下載,或映象站點太慢等等修改一下配置資訊,可以重新配置CPAN:
CPAN>o conf init
若不是root使用者,使用cpan命令或perl -MCPAN -e shell也可以進行配置後安裝:
首先,配置好CPAN配置,這個配置可以使用非root使用者配置好,配置好的內容一般在$HOME/.cpan/CPAN/MyConfig.pm檔案內;
配置檔案MyConfig.pm中配置資訊中確定有 'makepl_arg'=>q[PREFIX=~/perl] 這一行,~/perl為你當前使用者有許可權讀、寫和執行的目錄;
最後,設定 PERL5LIB 環境變數,把 ~/perl 下的相關目錄新增進 PERL5LIB。以 bash shell 為例,在 ~/.bash_profile 裡新增如下即可:
export PERL5LIB=~/perl/lib:\
~/perl/lib/perl5/5.10.1/i386-linux-thread-multi:\
~/perl/lib/perl5/5.10.1:\
~/perl/lib/perl5/site_perl/5.10.1/i386-linux-thread-multi:\
~/perl/lib/perl5/site_perl/5.10.1:\
${PERL5LIB}
模組檢測
執行
$perl -e 'use Module'
如果沒有任何輸出,則表示模組 Module 成功安裝
列印模組版本
$perl -MModule -e 'print $Module::VERSION;'
注意事項:
使用 CPAN 安裝模組有時候會 make test 一步失敗。可到 $HOME/.cpan/build 的相應目錄下直接 make install;
第一次安裝 CPAN 時,可以先安裝:
install Bundle::CPAN
或
install Bundle::CPANxxl?
這樣以後的安裝包安裝就會少需要的依賴,建議安裝。
-------------------
CPANPLUS
預設的cpan命令安裝時,如果依賴到其它包時,cpan不能自己解決,而需要手動去解它們之間的依賴關係;在初次使用cpan時,有回答很多問題。如果使用CPANPLUS的話,它能自動給依賴的模組安裝好,在 Perl5.10
中現在預設有 CPANPLUS Shell。
裝好CPANPLUS模組後,在終端裡輸入:cpanp 即可進入CPANPLUS環境。下載後就能直接使用,不需要任何其它的模組(當內 Perl 本身的 Module::Build,ExtUtils::MakeMaker
和 C Compiler 還是要,這個是系統就有的),有沒有 Root 許可權都不重要,非 root 會自動安裝到當前使用者的目錄下。
包安裝時取消安裝測試(可選)
如果覺得每次測試太花時間,可以將測試取消:
# 取消安裝過程中的測試:s conf skiptest 1
設定鏡象:s reconfigure
選擇鏡象地址
選擇7 Select mirrors
選擇 No
選擇 1 鏡象
選擇 3 Asia
選擇 9 China
選擇鏡象地址,也一樣按上面的數字,最後面一個是退出這個,記的退出時儲存.
選擇 9 Save and exit
# 取消提問回答是否按Y
s conf prereqs 1
s save #記的存一下
使用參考總結
1. CPANPLUS 中安裝模組,按i:CPAN Terminal> i Bundle::CPAN
2. CPANPLUS 中刪除模組,按u:CPAN Terminal> u YAML
3. CPANPLUS 中查詢模組,按m:CPAN Terminal>m Smart::Comments
4. CPANPLUS 中查詢作者的模組,按a:CPAN Terminal>a kai
5. CPANPLUS 中更新所有有新版本的模組,按下o:
CPAN Terminal> o
aliased 0.30 0.31 O/OV/OVID/aliased-0.31.tar.gz
Any::Moose 0.13 0.21 S/SA/SARTAK/Any-Moose-0.21.tar.gz
AnyEvent 7.02 7.04 M/ML/MLEHMANN/AnyEvent-7.04.tar.gz
AnyEvent::HTTP 2.14 2.15 M/ML/MLEHMANN/AnyEvent-HTTP-2.15.tar.gz
Apache2::Cookie 2.12 2.13 I/IS/ISAAC/libapreq2-2.13.tar.gz
......
6. 自我更新: CPAN Terminal>s selfupdate all
按x來更新包的索引快取。
-------------------
CPANM
'cpanm'是一個新近出現的能與'cpanp'不相上下的包安裝工具,這個工具能克服cpan的一系列缺點。
cpan App::cpanminus
cpanm的安裝
1)、單檔案安裝
# wget https://raw.github.com/miyagawa/cpanminus/master/cpanm -O cpanm
2)、完整版本安裝
# wget https://raw.github.com/miyagawa/cpanminus/master/cpanm -O /usr/local/bin/cpanm
# perl cpanm --self-upgrade --mirror http://mirrors.163.com/cpan
是在下載 cpanm 以後,直接用他來安裝更新它自己,對應的模組名為:App::cpanminus。
cpanm的使用
使用方法很簡單,命令列後直接跟包模組名即可,如:cpanm YAML::XS
這樣它會從cpan映象站上下載對應的tar包,後解壓安裝。至於它從哪裡取得包,依據於當時的源設定,可以從本地磁碟上載入;它後面也可以跟包的url,如:'http://search.cpan.org/CPAN/authors/id/I/IN/INGY/YAML-LibYAML-0.41.tar.gz',它會下載後自動安裝,如何對應的包有依賴,它會自動解決。
可以對它進行重新配置時指定相關源,相對於修改其配置檔案,具體可參考:使用minicpan建立本地CPAN http://www.freeoa.net/development/perl/diy-cpan-by-minicpan_1738.html
也可以在當前shell環境裡,指定別名:
alias cpanm='cpanm --mirror http://mirrors.163.com/cpan'
alias cpanm='cpanm --mirror /data/cpan/ --mirror-only'
Then to install any module from CPAN
cpanm Module::Name
The latest and greatest answer to this question is to use cpanm instead (also referred to as App::cpanminus
or cpanminus)!
DESCRIPTION
cpanminus is a script to get, unpack, build and install modules from CPAN and does nothing else.
It's dependency free (can bootstrap itself), requires zero configuration, and stands alone. When running,
it requires only 10MB of RAM.
To bootstrap install it:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
or if you are using perlbrew simply
perlbrew install-cpanm
From then on install modules by executing (as root if necessary)
cpanm Foo::Bar
-------------------
三者對比總結
CPAN是年代就為久遠的,其成熟性和穩定性是不容置疑的,但同時它也有自身的缺點。
CPANPLUS是新出不久的,其特點是現代、智慧、好用,與CPAN相同的是,它們都出現在'Core modules'中,估計以後打算用它做為CPAN的替代者。
cpanm也是初生牛犢,它具有與cpanplus相似的優點,但它更小巧、靈活,同時又不失其個性。
因此後兩者是今後的主流,如何選擇就要看個人喜好了。
-------------------
pm模組管理
1、刪除模組
上面介紹了多種安裝perl模組的方法,如果我想刪除我機器上的模組,應該怎麼操作呢,下面介紹一個新模組:'App::pmuninstall'
安裝好後,會在PATH中生成一個命令列工具:pm-uninstall,使用它便可刪除相應的模組。
使用很簡單 $ pm-uninstall YAML::XS # 後跟模組的名字,任何你要刪除的模組的名字都能加在其後
2、檢查所有已安裝的模組和版本
用於列出和檢查本地已經安裝的模組,檢視具體版本資訊,使用'App::cpanoutdated'
這個可以來實現:有那些可以更新,並會列出來,可以使用 cpanm或cpanp 來進行升級。
$ cpan-outdated --verbose --mirror file:///data/cpan/
我們可以將其結果作為引數傳給 cpanm 來安裝:
# cpan-outdated | cpanm
# cpan-outdated | xargs cpan -i
更多關於檢視系統中perl模組安裝情況時,可參考文章: 檢視Perl模組安裝路徑的"檢視系統中已經安裝的Perl模組"段落。
3、檢視具體模組的相關資訊(安裝位置、版本等)只需要安裝'App::pmodinfo'這個模組就可以實現,其它相關引數如下:
-v –version
-f –full
-h –hash
-l,–local-modules
-u,–check-updates
# pmodinfo --full DBD::mysql
DBD::mysql version is 4.016.
cpan page : http://search.cpan.org/dist/DBD-mysql
filename : /usr/lib/perl5/DBD/mysql.pm
ctime : 2012-08-14 07:54:01
POD content: yes
Last cpan version: 4.022