搜索
查看: 2247|回复: 0

[Perl] perl 软件安装及使用的坑,gottcha

[复制链接]

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-5-2 11:18:42 | 显示全部楼层 |阅读模式
好久没遇到这种事情了,一个软件使用居然耗费了我两个小时,坑~~~
这个软件倒是很容易安装,github主页说的很清楚,但是,这种perl代码的作者自己写的不严谨。
一般perl软件都严重依赖模块,所以必须在软件安装的同时自己把模块配置好,所以作者在INSTALL.SH里面
[AppleScript] 纯文本查看 复制代码
  perl -MYAML::XS -e 1 > /dev/null 2>&1           || cpanm -v --notest -l ext YAML::XS;
  perl -MYAML -e 1 > /dev/null 2>&1               || cpanm -v --notest -l ext YAML;

试图判断如果不存在YAML::XS就安装它,但是,用户的linux里面一般会自带YAML模块,只是YAML模块里面没有XS模块而已。
问题就来了,我linux自带的YAML里面有
Any.pm  Base.pm  Dumper.pm  Error.pm  LibYAML.pm  Loader.pm  Marshall.pm  Node.pm  Tag.pm  Types.pm
只是没有XS.pm而已,现在这个软件就自己安装了一个YAML::XS和其它几个依赖包,并且在运行软件的时候把这个路径当做lib的优先路径。

这样就会导致自己的软件里面perl脚本会在YAML::XS里面找YAML.pm,如果找不到就报错了,它不会去我其它的perl的lib里面找YAML.pm
所以报错是找不到YAML.pm
而我系统本身的YAML包安装在/usr/share/perl5/YAML/文件夹里面。
解决办法是:
[AppleScript] 纯文本查看 复制代码
cp -r  /usr/share/perl5/YAML/* ./

这样,软件的自带的perl的lib里面的YAML就变得完整了。
程序运行就成功啦。



上一篇:想知道你的perl模块安装在计算机的什么地方吗?
下一篇:GATK之BaseRecalibrator
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-10-22 23:00 , Processed in 0.033886 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.