如何安裝perl模塊

由于生物信息早期最多用的語言是perl,因此不可避免就要用別人的perl腳本或者基于perl的項目來處理數(shù)據(jù)。

使用perl腳本和使用其他編程語言的腳本沒啥不同,畢竟你只要傳入?yún)?shù),它就能給你結(jié)果。因此對于我們這些不用perl寫腳本,只需要調(diào)用的人而言,唯一要學(xué)會的事情就是**如何安裝perl的模塊”。

關(guān)于perl模塊安裝,最古老的方法就是使用perl -MCPAN -e shell或者是cpan(兩者等價),這也是我最先接觸的方法,這里介紹如何使用local::libcpanm實現(xiàn)非root權(quán)限安裝perl模塊。

使用系統(tǒng)自帶的perl

安裝任何軟件最怕遇到的問題就是權(quán)限問題,因此我們需要先安裝local::lib,使得我們能夠?qū)erl模塊安裝到任何地方,簡單的說就是安裝到我們的家目錄下

第一步,下載源代碼進行編譯安裝

wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
tar xf local-lib-2.000024.tar.gz
cd local-lib-2.000024
perl Makefile.PL --bootstrap=~/opt
make test && make install

第二步:設(shè)置環(huán)境變量,使得perl在安裝模塊的時候會優(yōu)先使用我們指定的路徑

echo 'eval "$(perl -I$HOME/opt/lib/perl5 -Mlocal::lib=$HOME/opt)"' >> ~/.bashrc

先用perl -I$HOME/opt/lib/perl5 -Mlocal::lib=$HOME/opt表示運行前先添加$HOME/opt/lib/perl5到自己的搜索路徑@INC中,然后傳入?yún)?shù)$HOME/opt執(zhí)行模塊local::lob,這個模塊的執(zhí)行結(jié)果會輸出如下內(nèi)容

Attempting to create directory /home6/wangjw/opt
PATH="/home/zgxu/opt/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/home/zgxu/opt/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/home/zgxu/opt${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/home/zgxu/opt\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/zgxu/opt"; export PERL_MM_OPT;

這些就作為eval的參數(shù)進行執(zhí)行,也就是說你重啟終端后后,PERL5LIB PERL_LOCAL_LIB_ROOT,PERL_MB_OPT,PERL_MM_OPT這幾個變量就會重新設(shè)置,以此保證你后續(xù)安裝perl模塊時,會優(yōu)先安裝到自己的選擇的目錄

第三步:安裝cpam. 由于之前已經(jīng)配置了local::lib,因此perl編譯的工具都會默認安裝到~/opt目錄下

wget https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7043.tar.gz
tar xf App-cpanminus-1.7043.tar.gz
cd App-cpanminus-1.7043
perl Makefile.PL
make test && make install

第四步:使用國內(nèi)鏡像提高下載速度,可以通過別名的方式實現(xiàn)

echo 'alias cpanm="cpanm --mirror http://mirrors.163.com/cpan --mirror-only"' >>~/.bashrc

之后便可以使用cpanm Module::Name安裝任意的軟件了。

自己編譯一個perl

自己編譯Perl的好處就在于之后的perl模塊都會安裝到自己的Perl目錄下,而不會對系統(tǒng)造成影響。

cd ~/src
wget -4 http://www.cpan.org/src/5.0/perl-5.26.1.tar.gz
tar xf perl-5.26.1.tar.gz
cd perl-5.26.1
./Configure -des -Dprefix=$HOME/opt/sysoft/perl-5.26.1
make test
make install

然后用perl -e '{print "$_\n" foreach @INC}'會發(fā)現(xiàn)perl只會在自己的目錄~/opt/sysoft/perl-5.26.1下查找模塊。那么使用cpanm Module::Name安裝的任何包都只會安裝到~/opt/sysoft/perl-5.26.1下,你也不需要安裝local::lib

conda的perl和系統(tǒng)的perl沖突

有一次我遇到這個問題

perl: symbol lookup error: /home/wangjw/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Cwd/Cwd.so: undefined symbol

這個問題是因為用系統(tǒng)perl安裝的軟件被conda的perl優(yōu)先查找到導(dǎo)致,用perl -Vperl -e '{print "$_\n" foreach @INC}'可以發(fā)現(xiàn)conda的perl查找路徑低于我為系統(tǒng)perl安裝的路徑,解決方案如下

export PERL5LIB=""
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容